DEAD MAN CODING

FOOOLING.COM

python登陆正方系统

Sept. 19, 2012, 6:10 p.m.

今天恰好帮同学研究如何模拟登陆上正方系统,制作查询信息的小工具

学校正方系统入口处无验证码,问题瞬间简单许多。

同学直接post账号密码失败 ,这里正方系统有个VIEWSTATE,需要即时提取出来,于是首先想到正则。

这个viewstate虽然经常变化,但前三位保持不变  于是想出了很水的一个正则  'dDw[^"]*' 呵呵 ,然后想了想,觉得还是练习下写正则吧,于是码出了'<input[^>]*name=\"__VIEWSTATE\"[^>]*value=\"([^"]*)\"[^>]*>'这样一个正则。

后来发现还可以使用sgmllib  直接提取html标签中的属性。很方便,详细使用就不给出了。

这里贴出登陆部分代码。

值得吐槽一点就是提交表单竟然还有‘ 登 陆 ’(有3个空格)这种货。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import re,urllib,urllib2,cookielib
 
url = "http://ea.uestc.edu.cn/default_ldap.aspx" 
login = urllib2.urlopen(url)
html = login.read()
login.close()
 
#viewstate= re.findall('dDw[^"]*',html,re.S)
viewstate= re.findall('<input[^>]*name=\"__VIEWSTATE\"[^>]*value=\"([^"]*)\"[^>]*>',html,re.S)
#cookie
cj = cookielib.CookieJar()
#school number and password
post_data = urllib.urlencode({'tbYHM': 'YOUR SCHOOL NUMBER',
                              'tbPSW': 'YOUR PASSWORD',
                              'Button1': ' 登 录 ',
                              '__VIEWSTATE':viewstate[0]}
                            )
#login url
path = 'http://ea.uestc.edu.cn/default_ldap.aspx' 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent', 'Opera/9.23')] 
urllib2.install_opener(opener)
req = urllib2.Request(path, post_data)
conn = urllib2.urlopen(req)
conn.close()
 
req2=urllib2.urlopen('http://ea.uestc.edu.cn/xs_main_zzjk.aspx?xh=YOUR SCHOOL NUMBER')
#get encode
encode=req2.headers['content-type'].split('charset=')[-1]
content=unicode(req2.read(),encode)
req2.close()
print content

友情链接