请大家帮我看下模拟登录源码问题,发送POST请求后不能正常登录,源码post,学习模拟登录,发送了po
请大家帮我看下模拟登录源码问题,发送POST请求后不能正常登录,源码post,学习模拟登录,发送了po
学习模拟登录,发送了post请求之后页面还是登录页面啊,不知道原因
import reimport requestsurl='http://cer.imufe.edu.cn/authserver/login?service=http%3A%2F%2Fmy.imufe.edu.cn%2Findex.portal'html=requests.get(url).textlt_value=re.compile(r'name="lt" value="(.*?)"').search(html).group(1)execution_value=re.compile(r'name="execution" value="(.*?)"').search(html).group(1)dt={}dt['username']='帐号'dt['password']='密码'dt['signIn']=''dt['lt']=lt_valuedt['execution']=execution_valuedt['_eventId']='submit'hd={}hd['User-Agent']='Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'hd['Referer']=urlurl2='http://my.imufe.edu.cn/detach.portal?.pmn=view&action=bulletinBrowser&.ia=false&.pen=pe1253&bulletinId=cf2509cf-9a54-11e6-86e2-7347af9c723b'se=requests.session()se.post(url,data=dt,headers=hd)print(se.get(url2).text)
以下是抓取的数据,是不是我的哪里找错了?
首先你要弄懂服务端对你的登录之后的信任原理
服务端在你登录的时候会保存一个session值作为凭证,并且会向你返回的响应头中带有Set-Cookie字段,作为凭证,所以你需要带着cookie发送get请求作为你登录过的凭证
就好比你网上买了张电子票,人家确实知道你买了,但是在入场的时候怎么样证明你是你呢,就是要拿着购买之后人家给你的实体票凭票入场
回到现在的场景,服务端知道你登录了,并且保存了session(相当于保存了买票的订单数据),此时当你发送get请求的时候,你需要证明你是刚才登录的那个你(相当于需要实体票),此时你就需要发送在登陆时服务端向你返回的Set-Cookie字段的数据(掏出你的实体票证明你买过票),然后服务端才能确认你的身份给你相应的数据(相当于凭票入场)
说回到代码的具体实现,你需要去查询requests库如何在发送请求的时候把登录后的cookie带上,这样你就能够登录成功了
你可以直接使用Session的上下文,然后全都的请求都通过一个session实例来完成,session对象会自动帮你处理Cookie,当然header里的内容在第一次请求的时候要自己定义。代码结构大致如下:
import requestsurl = ""headers = {}with requests.Session() as s: s.headers.update(headers) s.get(url) s.post(login_url)
再去看requests文档吧 ,a b c d变量名辣眼睛
没有 cookie
f = requests.session() // 此时相当于打开了浏览器会话,接下来的操作都应该在这个会话里面执行,就不会有 cookie 问题了
requests.get 换成 f.get
编橙之家文章,
相关内容
- Python flask工厂函数不是很理解请指导,pythonflask,flask
- 字典内in现has_key()使用哪个最适合,inhas_key,这两个都是
- Django下无法调用sav()到数据库求指导,djangosav,Django.co
- Python变量名与C语言指针类似是真的吗?好处是什么,p
- 在模板中直接引用配置文件参数的Flask应用怎么做?,配
- Python合并字典操作时同key的value应该如何相加,pythonv
- 这段Python源码中函数作用是什么,python源码函数作用
- 用python怎么做能让两个列表每一项对应用+号合并,py
- Flask获取Post参数返回400 Bad Request求解,flaskrequest,我想用
- Python UTC时区时间转换,pythonutc时区转换,保存时间字段
评论关闭