python脚本实现自动登陆校园网
搞了几天终于把这个搞出来了,代码不到50行,要是别的网站很好模拟,但这个稍微有点麻烦,抓包工具用了好多,httpfox没抓全,wireshark抓的又太多不好分析,最后还是用神器fiddler才把它搞出来。本着负责任的心态,我就一步一步的把它写下来,希望对后来学习python的人有帮助。 我是用fiddler中的设置断点的方式来分析报文的,首先设置响应后断点,然后连上校园网,随便点击一个网站例如点击优酷它就自动跳转到校园网了然后抓包发现第一个跳转的网页请求和回复是这样的python脚本就要依照他的头部和url来请求, import requests url=http://10.10.3.3:8080/portal?userip=172.20.59.118&userurl=http://10.10.3.4:8080 my_headers = { User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0, Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8, Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3, Accept-Encoding: gzip, deflate, Connection: keep-alive, } a=requests.get(url, headers=my_headers) 它的响应报文回复的地址正是它第二次要请求的url,于是第二次请求的url就是a.url,请求头部不变
b=requests.get(url=a.url, headers=my_headers)
这次请求会得到什么呢? 我们发现这次请求不仅得到了下一次请求的地址,还得到了cookies值,我们接着看 这次请求就加上了cookie值,并且这个网页是登陆页面,需要添加用户名和密码的,我们加上用户名和密码之后,看他会把数据post到哪呢? post后边是网址,cookie就是我们之前取得的cookie值,我们再把需要提交的数据加上模拟登陆就成功了,涉及到隐私,就不把用户名和密码贴出来了 完整的代码看这
import requests url=http://10.10.3.3:8080/portal?userip=172.20.59.118&userurl=http://10.10.3.4:8080 my_headers = { User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0, Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8, Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3, Accept-Encoding: gzip, deflate, Connection: keep-alive, } a=requests.get(url, headers=my_headers) b=requests.get(url=a.url, headers=my_headers) r = requests.get(url=b.url,headers=my_headers) headers={ Accept: text/plain, */*; q=0.01, Accept-Encoding: gzip, deflate, Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3, User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0, X-Requested-With: XMLHttpRequest, Referer: http://10.10.3.3:8080/portal/templatePage/20150126153340986/login_custom.jsp?userip=172.20.59.118&userurl=http://10.10.3.4:8080 } my_data = { userName:xxxxxxxxxx, userPwd:xxxxxxxxxxx, serviceType:teacher, isSavePwd:on, userurl:http://10.10.3.4:8080, userip:172.20.59.118, basip:, language:Chinese, usermac:null, wlannasid:, wlanssid:, entrance:null, loginVerifyCode:, userDynamicPwddd:, customPageld:0, pwdMode:0, portalProxyIP:10.10.3.3, portalProxyPort:50200, dcPwdNeedEncrypt:1, assignIpType:0, appRootUrl:http://10.10.3.3:8080/portal/, manualUrl:, manualUrlEncryptKey: } url3=http://10.10.3.3:8080/portal/pws?t=li z=requests.post(url3,data=my_data,headers=headers,cookies=r.cookies)
有任何问题可以在评论上提