2011年8月21日星期日

四六级考试没准考证查成绩


听说六级出来了,但是准考证早都不知道去哪了。作为一个技术宅,不能眼睁睁的没办法吧?

于是开始分析查分网页:http://cet.99sushe.com/
发现里面的查分页面的表单是这样的:
<form id="searchform" name="searchform" method="post" action="/s" accept-charset="gbk" target="searchframe">
<p>
<span style="font-weight: bold; color: Black;">准考证号</span>:
<input id="id" name="id" type="text" maxlength="15" style="color: rgb(153, 153, 153); " onfocus="javascript: id_focus(this);" onblur="javascript: id_blue(this);" value="请输入2011年6月的准考证号" onkeyup="javascript: id_write(this);">
</p>
<p id="p_ifnoname">
<span style="font-weight: bold; color: Black;">姓  名</span>:
<input id="name" name="name" type="text" maxlength="2" style="color: rgb(153, 153, 153); " onfocus="javascript: name_focus(this);" onblur="javascript: name_blue(this);" onkeydown="if (event.keyCode == 13) submit_search();" value="请输入姓名的前两个字">
<a href="faq/index.html" target="_blank" style="text-decoration: underline; color: blue;font-size: 12px;">姓名输入帮助</a>
</p>
<p>
<input id="btn" type="button" name="" value="查询" onclick="submit_search();" style="margin:10px 0px 0px 74px;">
</p>
</form> 



用chrome抓取发送的表单 注意到这几项: 
Request URL:
 
http://cet.99sushe.com/s
Origin:
http://cet.99sushe.com
 
Referer:
http://cet.99sushe.com/
Form data:
id:
  1. 110010111201205 注意这就是我测试时候填的号
name:
%C1%F5%B1%F9 这就是我的名字的前两字encode后的结果



然后我就写了个python脚本去抓了……
知道自己的考场号在10-30之间
座位在1-10之间

于是|:


#coding=utf-8
import urllib
import urllib2
from time import sleep
a="XX".decode("gbk").encode("gbk")
req = urllib2.Request("http://cet.99sushe.com/s")
req.add_header("Origin","http://cet.99sushe.com")
req.add_header("Referer","http://cet.99sushe.com")
for i in range(10,31):#考场号
for j in range(1,11):#座位号
id=("11001011120%2d%2d"%(i,j)).replace(" ",'0')#前面的11001011120是学校代码
d=urllib.urlencode([("id",id),("name",a)])
req.add_data(d)
x = urllib2.urlopen(req,d).read()
print "%s:%s"%(id,x)
if len(x)>0:
exit()  

   于是跑出来了…… 还好过了……  
用python2.7跑就好~
python是无敌的

没有评论:

发表评论