CET终极查分程序 Python学习作品

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://apt-blog.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)
文章分类 Programming, Unix/Linux 标签: , ,
3 comments on “CET终极查分程序 Python学习作品
  1. 啊瓦斯说道:

    请问这是全部的源代码吗?

  2. BOYPT说道:

    呃。这个是09年2月那次的,8月这次要小修改一下才能用噢!

  3. houkai说道:

    非常好 有没有例子呀

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*