目录
有粉丝问到这个方法,不知如何回答,因为市面上的网站几乎都做了风控,如果单靠这种方法实现登录,是很难的,比如说表单中的加密参数,不懂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是必不可少的,它是识别用户身份的重要纽带。
点关注不迷路,本文若对你有帮助,烦请三连支持一下 ❤️❤️❤️ 各位的支持和认可就是我最大的动力❤️❤️❤️