1.模拟登录? ?
通过随意提交登录数据可以在浏览器开发者模式中找到一个post请求。
而且携带的表单数据为
'__VIEWSTATE':'dDw3OTkxMjIwNTU7Oz70swKykHaJX/KdL3MX4ah0OyBJgA==',
'TextBox1': id,
'TextBox2': password,
'TextBox3': textword,
'RadioButtonList1':'%D1%A7%C9%FA',
'Button1':''
' __VIEWSTATE':'dDw3OTkxMjIwNTU7Oz70swKykHaJX/KdL3MX4ah0OyBJgA=='
这个数据并不是我们填写的数据,在网页源码查找可以找到,利用get请求获取__VIEWSTATE,并打印。
s=requests.session()
headers={
'Cookie': 'ASP.NET_SessionId=fbbwm3451t0x2fmrlkgvan45',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
}
url='http://113.201.151.38:9999'
#网站的url
response=s.get(url=url,headers=headers)
VIEWSTATE=re.findall('<input type="hidden" name="__VIEWSTATE" value=(.*?) />',response.text)
print(VIEWSTATE)
然后通过获得的__VIEWSTATE结合 帐号 密码 验证码 组成表单数据
data={
'__VIEWSTATE':VIEWSTATE,
'TextBox1': idword,
'TextBox2': password,
'TextBox3': textword,
'RadioButtonList1':'%D1%A7%C9%FA',
'Button1':''
}
然后通过post请求获取网页数据,并打印状态码。
#通过get官网的url获取页面信息,然后通过正则表达式获取VIEWSTATE的值
imgeurl='http://113.201.151.38:9999/CheckCode.aspx'#请求验证码url并写入
imgeread=s.get(url=imgeurl,headers=headers).content
with open('imgeread.jpg', mode='wb') as f:
f.write(imgeread)
print("over")
idword=input("请输入帐号:")
password=input("请输入密码:")
textword=input("请输入验证码:")
#登录
loginurl='http://113.201.151.38:9999/Default2.aspx'
#表单数据
data={
'__VIEWSTATE':VIEWSTATE,
'TextBox1': idword,
'TextBox2': password,
'TextBox3': textword,
'RadioButtonList1':'%D1%A7%C9%FA',
'Button1':''
}
headers1={
'Referer':'http://113.201.151.38:9999/',
'Cookie':'ASP.NET_SessionId=fbbwm3451t0x2fmrlkgvan45',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.50'
}
login=s.post(url=loginurl,headers=headers1,data=data)
print(login.status_code)
2.获取课表信息?
?找到课表页面,查看页面的url
查看get的附加的内容
查看请求头数据??
模拟浏览器形式进行请求?
ke='http://113.201.151.38:9999/tjkbcx.aspx'
ke3={
'xh': idword,
'xm': '%C0%EE%D2%AB%BB%D4',
'gnmkdm': 'N121601'
}
#get请求附加数据
he3={
'Cookie': 'ASP.NET_SessionId=fbbwm3451t0x2fmrlkgvan45',
'Connection': 'keep-alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Upgrade-Insecure-Requests': '1',
'Referer': 'http://113.201.151.38:9999/xs_main.aspx?xh='+idword,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.50'
}
#请求头
kereback=s.get(url=ke,params=ke3,headers=he3)
haaa=re.findall('(.*?)<br>',kereback.text)
#将请求的数据用正则表达式进行筛选
print(kereback.status_code)
#打印请求状态码
print(haaa)
#打印课表数据
? ? ?请求头文件必须有refere和cookie,如果没有就无法定向请求? ? ? ? ? ? ? ? ? ? ??
3.打印课表数据?
?最后打印课表数据
D:\python\project\myproject\venv\Scripts\python.exe D:/python/project/myproject/156.py ['"dDw3OTkxMjIwNTU7Oz70swKykHaJX/KdL3MX4ah0OyBJgA=="'] over 请输入帐号:************** 请输入密码:************* 请输入验证码:************ 连接状态码:200 连接状态码:200
#部分课表数据 ['\t\t<td rowspan="6" width="1%">上午</td><td width="1%">第一节</td><td align="Center" rowspan="2" width="7%">软件项目管理', '14-16(1,2)', '****', '*****', '', '', '软件项目管理',
4.整体代码??
全部代码? ? 代码中有对登陆后的页面的请求(未打印输出)
import requests #数据请求模块
import re
import os
s=requests.session()
headers={
'Cookie': 'ASP.NET_SessionId=fbbwm3451t0x2fmrlkgvan45',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'
}
url='http://113.201.151.38:9999'
#网站的url
response=s.get(url=url,headers=headers)
VIEWSTATE=re.findall('<input type="hidden" name="__VIEWSTATE" value=(.*?) />',response.text)
print(VIEWSTATE)
#通过get官网的url获取页面信息,然后通过正则表达式获取VIEWSTATE的值
imgeurl='http://113.201.151.38:9999/CheckCode.aspx'#请求验证码url并写入
imgeread=s.get(url=imgeurl,headers=headers).content
with open('imgeread.jpg', mode='wb') as f:
f.write(imgeread)
print("over")
idword=input("请输入帐号:")
password=input("请输入密码:")
textword=input("请输入验证码:")
#登录
loginurl='http://113.201.151.38:9999/Default2.aspx'
#表单数据
data={
'__VIEWSTATE':VIEWSTATE,
'TextBox1': idword,
'TextBox2': password,
'TextBox3': textword,
'RadioButtonList1':'%D1%A7%C9%FA',
'Button1':''
}
headers1={
'Referer':'http://113.201.151.38:9999/',
'Cookie':'ASP.NET_SessionId=fbbwm3451t0x2fmrlkgvan45',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.50'
}
#
login=s.post(url=loginurl,headers=headers1,data=data)
insurl='http://113.201.151.38:9999/xs_main.aspx'
param ={
'kw':'2020090116'
}
he2={
'Referer': 'http://113.201.151.38:9999/Default2.aspx'
}#在请求头中添加referer防止出现302情况
inside=s.get(url=insurl,params=param,headers=he2)
#这个get请求是进入官网后对默认界面进行页面读取
print("登陆状态码:"inside.status_code)
#打印请求状态码
ke='http://113.201.151.38:9999/tjkbcx.aspx'
ke3={
'xh': idword,
'xm': '%C0%EE%D2%AB%BB%D4',
'gnmkdm': 'N121601'
}
#get请求附加数据
he3={
'Cookie': 'ASP.NET_SessionId=fbbwm3451t0x2fmrlkgvan45',
'Connection': 'keep-alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Upgrade-Insecure-Requests': '1',
'Referer': 'http://113.201.151.38:9999/xs_main.aspx?xh='+idword,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.50'
}
#请求头
kereback=s.get(url=ke,params=ke3,headers=he3)
haaa=re.findall('(.*?)<br>',kereback.text)
#将请求的数据用正则表达式进行筛选
print("课表请求状态码:"kereback.status_code)
#打印请求状态码
print(haaa)
#打印课表数据
|