我有像这样的python代码
s=requests.Session()
headers = {'User-Agent': 'Mozilla/5.0'}
URL = 'http://test.dev/api/login'
s.get(URL)
csrftoken = s.cookies['csrf']
print csrftoken
login_data = dict(username='test', password='testtest', _token=csrftoken)
ra=s.post(URL, data=login_data, headers = headers)
print ra.request.headers
但我不想从cookie中找到csrftoken = s.cookies ['csrf'], 那么如何用
来完善它呢<input type="hidden" name="csrf">
是否需要在使用csrftoken请求时将头部Referer = URL或者只是某个站点?
谢谢。
答案 0 :(得分:4)
我会尝试使用BeautifulSoup
from bs4 import BeautifulSoup
s=requests.Session()
headers = {'User-Agent': 'Mozilla/5.0'}
URL = 'http://test.dev/api/login'
s.get(URL)
soup = BeautifulSoup(s.get(URL).text)
csrf = soup.find(name="csrf")
这将提取保存csrf_token
的隐藏输入因为我无法看到令牌的值存储在何处以及如何存储,这是我可以带你去的。
答案 1 :(得分:0)
非常感谢Moe Jan.
首先我尝试你的代码,但它没有得到价值。
csrf = soup.find(name="csrf")
所以我搜索bs4并使用
csrf = soup.find("input", value=True)["value"]
它得到了价值。
我的表格就像
<form accept-charset="UTF-8" action="http://test.dev/api/login" method="POST">
<input name="_token" type="hidden" value="8z0dMEpVq8jH0VY5zgh8xFhcrQaurz">
</input>
</form>