python-3.x - 使用 CSRF 的 Python 请求会话
问题描述
所以我有两段代码。这个有效:
import requests
url = 'http://XXXXXX.com.au?xxxxx'
r = requests.get(url,auth = ('user', 'password'), headers = {'X-CSRF-TOKEN': 'Fetch'})
token = r.headers['x-csrf-token']
c = requests.utils.dict_from_cookiejar(r.cookies)
reqData = {'param' : 'value'}
headers = {'X-CSRF-TOKEN': token}
r = requests.post(url, auth = ('user', 'password'), data = reqData, headers = headers, cookies = c)
这个没有:
import requests
s = requests.Session()
url = 'http://XXXXXX.com.au?xxxxx'
s.auth = ('user', 'password')
s.headers.update({'X-CSRF-TOKEN': 'Fetch'})
r = s.get(url)
token = r.headers['x-csrf-token']
c = s.cookies
reqData = {'param' : 'value'}
headers = {'x-csrf-token': token}
r = s.post(url, data=reqData, headers=headers, cookies=c)
我尝试了第二个代码,无论是否显式复制和传递 cookie,以及将其从 cookiejar 转换为 dict。仍然获得 CSRF 令牌验证失败。
我现在很高兴使用第一个选项,但是我在 Session 上到底做错了什么?这可能只是所讨论的网络服务器的特性吗?
解决方案
推荐阅读
- mysql - 无法通过 ssh 连接到 isql 到服务器
- android - 了解允许/拒绝的权限
- xml - 将标签添加到 xml 而不更改其他标签 javax.xml
- c++ - 函数模板参数是带默认参数的类模板时,模板参数推导如何执行
- c# - 将几何转换为地理的实体框架
- api - www.crypto.com 身份验证,python HMAC-SHA256
- excel - 根据 B 列中的字符串条件对 A 列的值求和
- java - 无法获取上传图像到 Firebase android 的下载 URL
- sql - 如何在 SQL 中遍历表的子集
- python - 如何在 DAG (pandas\networkx) 上获取所有连接边的链