使用CSRF_令牌请求库和登录网站

2024-09-27 21:31:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试自动登录到一个网站和提取统计数据,但没有成功。登录有三个关键问题,其中两个我已经解决了(获取会话id和发送适当的cookies),而另一个我没有。一旦登录,该网站生成一个CSRF_令牌,然后在头中传递给所有其他POST和GET调用。在使用Fiddler时,我能够在按下login按钮后捕捉到以下事件:

POST https://admin.------.com/login.html HTTP/1.1
Host: admin.------.com
Connection: keep-alive
Content-Length: 115
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Origin: https://admin.------.com
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: https://admin.------.com/
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8
Cookie: ecc=GBTnR4965BGJJeXzH5CM9Abg; ece=GBTnR4965BGJJeXzH5CM9Abg; ecid=GBTnR4965BGJJeXzH5CM9Abg

ses=4c17c8999aa61c3472710273fe0ea864&loginname=------&password=------&lang=xu&login=Login+&csrf_token=empty-token

“ses”是在pageload页面的HTML中生成的会话id,我在运行页面内容through BeautifulSoup并与上面的帖子一起提交时能够提取它。紧接着,在我做其他事情之前,小提琴手也出现了以下内容:

^{pr2}$

在查看此GET的原始响应时,页面的<head>中有以下脚本:

^{3}$

建立var token的第三行是我需要的csrfu令牌。问题是,当通过Python的请求库运行所有这些时,CSRF_令牌不会生成,相反,当我返回页面内容时,第三行代码是:

var token                = '' || 'empty-token',

我有没有遗漏什么,或者有人能给我一些关于如何实现这一点的见解?在


Tags: httpscomtokenidgetadminapplication网站

热门问题