内容

python登陆正方系统

发表于 2012-09-15 22:10:31

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

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

同学直接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


CrazyPig2013-10-07 20:25:40

你好 最近我也在做模拟登陆正方系统这一块内容,想请问关于查询那里 __VIEWSTATE值是变化的 Post提交时候如何获取到这个数据

Fooling2013-12-28 18:00:21

可以正则到的。 可以看看http://github.com/fooling/zhengfang

名字
密码 (首次来新建)
内容