利用Python requests库模拟登陆学校教务系统
2016-03-01 16:10
666 查看
在研究了一会requests库的实现之后。发现requests的确非常强大。。
几行代码就登陆上了学校的教务系统,但也许是我们学校的教务系统做的太烂了吧23333.动不动就血崩。
下面是代码。
import requests
import re
import urllib.request
import os
while True:
name=input('请输入您的学号')
password=input('请输入您的密码')
Target='http://wlkt.nuist.edu.cn/(S(i5jngs45zajbn045hncdug55))/default.aspx'
data={'__VIEWSTATE':'/wEPDwUKMTM5MjUxOTk4Nw9kFgJmD2QWHgICDxAPFgIeB1Zpc2libGVoZGQWAWZkAgMPEA8WAh8AaGRkZGQCBA8QDxYCHwBoZGRkZAIFDxAPFgIeBFRleHQFCeaVmeWKoeWkhGRkZGQCBg8QDxYCHwBoZGRkZAIHDxAPFgIfAQUG5a2m6ZmiZGRkZAIIDxAPFgIfAQUG5a2m5YqeZGRkZAIJDxAPFgIfAGhkZGRkAgoPEA8WAh8BBQbmlZnluIhkZGRkAgsPEA8WAh8BBQblrabnlJ9kZGRkAgwPEA8WAh8AaGRkZGQCDQ8QDxYCHwBoZGRkZAIODxAPFgIfAGhkZGRkAg8PEA8WAh8AaGRkZGQCEA8QDxYCHwBoZGRkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WCQUMUmFkaW9CdXR0b240BQxSYWRpb0J1dHRvbjQFDFJhZGlvQnV0dG9uMgUMUmFkaW9CdXR0b24yBQxSYWRpb0J1dHRvbjUFDFJhZGlvQnV0dG9uNQUMUmFkaW9CdXR0b24xBQxSYWRpb0J1dHRvbjEFDFJhZGlvQnV0dG9uM8hkENze68v6MFI9hwYrSEN4tT9A'
,'TextBox1':str(name),'TextBox2':str(password),'js':'RadioButton3','Button1':'登陆'}
s=requests.session()
r=s.post(Target,data)
if '用户名或密码不正确,请重新登录!' in r.text:
print('登陆失败,用户名或密码不正确,请重新登录!')
continue
else:
print('登陆成功!')
break
实现的确很简单。通过session自动记录cookie值,从而可以访问登陆后的页面。
只需要s=requests.session()
然后再进行s.get()和s.set()方法就可以了
然而判断是否登陆成功的时候还是很捉急的。
r.status_code能反应当前的连接状态。我一开始通过这个来判断石头登陆成功。然而错误的学号和密码也能返回200。这就很蛋疼了。
最后我写成上面的形式。然而当服务器炸了的时候,还是能显示登陆成功。
以后有心思再去改改怎么判断吧。
几行代码就登陆上了学校的教务系统,但也许是我们学校的教务系统做的太烂了吧23333.动不动就血崩。
下面是代码。
import requests
import re
import urllib.request
import os
while True:
name=input('请输入您的学号')
password=input('请输入您的密码')
Target='http://wlkt.nuist.edu.cn/(S(i5jngs45zajbn045hncdug55))/default.aspx'
data={'__VIEWSTATE':'/wEPDwUKMTM5MjUxOTk4Nw9kFgJmD2QWHgICDxAPFgIeB1Zpc2libGVoZGQWAWZkAgMPEA8WAh8AaGRkZGQCBA8QDxYCHwBoZGRkZAIFDxAPFgIeBFRleHQFCeaVmeWKoeWkhGRkZGQCBg8QDxYCHwBoZGRkZAIHDxAPFgIfAQUG5a2m6ZmiZGRkZAIIDxAPFgIfAQUG5a2m5YqeZGRkZAIJDxAPFgIfAGhkZGRkAgoPEA8WAh8BBQbmlZnluIhkZGRkAgsPEA8WAh8BBQblrabnlJ9kZGRkAgwPEA8WAh8AaGRkZGQCDQ8QDxYCHwBoZGRkZAIODxAPFgIfAGhkZGRkAg8PEA8WAh8AaGRkZGQCEA8QDxYCHwBoZGRkZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WCQUMUmFkaW9CdXR0b240BQxSYWRpb0J1dHRvbjQFDFJhZGlvQnV0dG9uMgUMUmFkaW9CdXR0b24yBQxSYWRpb0J1dHRvbjUFDFJhZGlvQnV0dG9uNQUMUmFkaW9CdXR0b24xBQxSYWRpb0J1dHRvbjEFDFJhZGlvQnV0dG9uM8hkENze68v6MFI9hwYrSEN4tT9A'
,'TextBox1':str(name),'TextBox2':str(password),'js':'RadioButton3','Button1':'登陆'}
s=requests.session()
r=s.post(Target,data)
if '用户名或密码不正确,请重新登录!' in r.text:
print('登陆失败,用户名或密码不正确,请重新登录!')
continue
else:
print('登陆成功!')
break
实现的确很简单。通过session自动记录cookie值,从而可以访问登陆后的页面。
只需要s=requests.session()
然后再进行s.get()和s.set()方法就可以了
然而判断是否登陆成功的时候还是很捉急的。
r.status_code能反应当前的连接状态。我一开始通过这个来判断石头登陆成功。然而错误的学号和密码也能返回200。这就很蛋疼了。
最后我写成上面的形式。然而当服务器炸了的时候,还是能显示登陆成功。
以后有心思再去改改怎么判断吧。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- 爬虫笔记
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- Python利用Requests库写爬虫(一)