目录
有粉丝问到这个方法,不知如何回答,因为市面上的网站几乎都做了风控,如果单靠这种方法实现登录,是很难的,比如说表单中的加密参数,不懂Js连门槛都入不了。我特意在本地搭了一个web,仅供参考!
简介
- 简介
- 思路
- 实现
- 最后
request.session()这个方法可以保存上次请求时的Cookie,有利于我们在登录场景中,post得到Cookie后,可直接请求网页,无需登录。 Cookie:由服务器产生,浏览器收到请求后保存在本地,当再次访问时,会自动带上Cookie,这样服务器就能通过Cookie来判断用户!
思路- 首先Post提交表单数据,将登录信息给到服务器,通过之后拿到登录后的Cookie
- 利用session保存登录后的Cookie,再请求登录后的Url,拿到我们需要的数据
获取登录后的Cookie
import requests url = "http://127.0.0.1:8000/login/" # 登录页 header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36" } # 请求头 session = requests.Session() # 创建session postData = {'usm': 'fun', 'pwd': 'fun', } # 表单数据 res = session.post(url,data=postData,headers=header) print(res) # 返回状态码
登录成功
请求登录后的网页
import requests url = "http://127.0.0.1:8000/login/" # 登录页 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36" } session = requests.Session() # 创建session postData = {'usm': 'fun', 'pwd': 'fun', } # 表单数据 res = session.post(url,data=postData,headers=headers) print(res) # 返回状态码 # 请求登录后的页面 response = session.get('http://127.0.0.1:8000/login/next_step/select/', headers=header) print(response.text)
这里请求了一个查询页,返回正确的网页源码,可能大家会有所疑问,要是不带上Cookie直接请求会返回什么?为了打消这个疑问,展示:
# 请求登录后的页面 import request headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36", } response = requests.get('http://127.0.0.1:8000/login/next_step/select/', headers=headers) print(response.text) #返回网页文本
很显然,直接请求返回了登录页的源码,告诉我们必须通过登录才能请求,所以Cookie是必不可少的,它是识别用户身份的重要纽带。
点关注不迷路,本文若对你有帮助,烦请三连支持一下 ❤️❤️❤️ 各位的支持和认可就是我最大的动力❤️❤️❤️