CET今朝放榜,然查分网站99sushe故意把验证码那个框框改成ActiveX输入框,且不论饱受非议的ActiveX有何安全危害,相信这次查分把时间浪费在等待这个控件安装上的时间可不少,背上不少骂名。
有好事者研究了查分页面的javascript脚本,发现了一个查分的快捷方法,不过该方法很快夭折,99sushe的网管加入了检测,但魔高一尺,这同样难不倒同学们,有人发现只是检测了HTTP Header里面的Referer,使用Linux下的工具curl轻松绕过其验证,不过由于门槛提高了,不是所有人都用的上。
今天在一Linux Q群里和大家讨论这个99sushe,突然冲动要做一个查分程序,顺便锻炼下还很生手的Python,经过几个小时的折腾,CETQuery出炉了……

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | #!/usr/bin/python #coding=UTF-8 import sys, urllib2 def CetQuery(band, exam_id): """CETQuery version 0.1 2009.2.24 An Exercise Program by PT, GZ University Author Blog: http://blog.ptsang.net , Welcome to Drop by. """ cet = "http://cet.99sushe.com/cetscore_99sushe0902.html?t=" + band + "&id=" + exam_id print "Ready..." req = urllib2.Request("http://cet.99sushe.com/") fd = urllib2.urlopen(req) fd.close() print "Connecting..." req = urllib2.Request(cet) req.add_header('Referer','http://cet.99sushe.com/') try: data = urllib2.urlopen(req, '').read(100) except urllib2.URLError, e: print "Error retrieving data:", e return -1 result = data.decode("gb2312") if not len(result): print "Error Occured. Maybe record not existed." return -1 res_tu = tuple(result.split(',')) score_tu = (u"听力", u"阅读", u"综合", u"写作", u"总分", u"学校", u"姓名") print "n***** CET %s 成绩清单 *****" % (band) print "-准考证号: %s" % (exam_id) for i in range(7): print "-%s: %s" % (score_tu[i], res_tu[i]) print "**************************n" print u"准考证号前一位同学: %sn后两位同学分别是: %s、%s" % (res_tu[-3], res_tu[-2], res_tu[-1]) return 0 if __name__ == "__main__": if (len(sys.argv) != 3) or (sys.argv[1] != '4' and sys.argv[1] != '6') or (len(sys.argv[2]) != 15): print "Error: 程序参数错误,考试类型(4、6),准考证号长度(15位)" print "nExample:nnCETQuery.py 4 123456789012345nn" print CetQuery.__doc__ sys.exit(1) statue = CetQuery(sys.argv[1], sys.argv[2]) sys.exit(statue) |
请问这是全部的源代码吗?
呃。这个是09年2月那次的,8月这次要小修改一下才能用噢!
非常好 有没有例子呀