为了账号安全,请及时绑定邮箱和手机立即绑定

使用__RequestAccessToken的python网络抓取登录不起作用

使用__RequestAccessToken的python网络抓取登录不起作用

慕哥6287543 2022-06-22 15:37:24
我正在尝试抓取登录表单中包含 CSRF __RequestAccessToken 的站点。我能够从表单中获取令牌值,将其放在标题中并使用 cookie 发布,但我得到了 500 状态代码。result.text 包含一条消息:“抱歉,处理您的请求时发生错误。” 和“我们的网站使用仅在现代浏览器中发现的功能。为了获得最佳体验,我们建议将您的浏览器升级到其中之一”正如我所说,我能够从表单中获取令牌值并将其放在标题中。还检索了 cookie 并在帖子中发送了它们。当我使用 Chrome 浏览器手动提供凭据时,我的登录有效。不知道下一步该尝试什么。任何人都可以请提出什么问题吗?提前致谢。这是我手动登录时 Chrome 浏览器中显示的标题:GET /Security/Register HTTP/1.1    'Host': 'www.idocmarket.com',    'Connection': 'keep-alive'    'Cache-Control': 'max-age=0',    'Upgrade-Insecure-Requests': '1',    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)     AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36',    'Sec-Fetch-Mode': 'navigate',    'Sec-Fetch-User': '?1',    'Accept':  'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,     */*;q=0.8,application/signed-exchange;v=b3',    'Sec-Fetch-Site': 'same-origin',    'Referer': ' https://www.idocmarket.com/',    'Accept-Encoding': 'gzip, deflate, br',    'Accept-Language': 'en-US,en;q=0.9',    'Cookie': ' __utmz=141398122.1569340638.1.1.utmcsr=(direct)|utmccn= (direct)|utmcmd=(none); ASP.NET_SessionId=aow5a3q4o0kfdhwu554ma2qt;     __utmc=141398122;  __RequestVerificationToken=XsNRpnUzlge1NCeddExuVaN_uYheGBROrEHHNLgY5oTxc5HZqVZrXKmnn2IgUquL_tM-uWaebglLrfEpdGIutLYAFdK5EzQGOFeyiz3PszQ1; __utma=141398122.1343771318.1569340638.1570400178.1570490801.9; party_search_type=Contains; __utmb=141398122.19.10.1570490801'这是我的代码:import requestsfrom datetime import datetimefrom bs4 import BeautifulSoupLOGIN_URL = 'https://www.idocmarket.com/Security/Register'EMAIL = 'myemail@gmail.com'PASSWORD = 'somepwd'LOGIN_API_URL = 'https://www.idocmarket.com/Security/Register'我希望登录后跳转到下一页
查看完整描述

1 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

这个站点似乎在请求中的 cookie 和参数中都设置了 xsrf 令牌(正如您首先注意到的那样)。经过一些测试后,似乎 cookie 本身就足够了,例如在传递正确的 cookie 时从 POST 请求中删除 xsrf 参数似乎有效。


使用卷曲快速测试:


username=myemail@gmail.com

password=somepwd

curl -s -c cookies.txt 'https://www.idocmarket.com/Security/LogOn'

curl -v -b cookies.txt -L 'https://www.idocmarket.com/Security/LogOn' \

     -d "Login.Username=$username&Login.Password=$password"

并使用Python :


import requests

from bs4 import BeautifulSoup


LOGIN_URL = 'https://www.idocmarket.com/Security/LogOn'

EMAIL = 'myemail@gmail.com'

PASSWORD = 'somepwd'


s = requests.Session()

s.get(LOGIN_URL)


r = s.post(LOGIN_URL, data = {

    "Login.Username": EMAIL,

    "Login.Password": PASSWORD

})

soup = BeautifulSoup(r.text, "html.parser")


查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号