猿问

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

我正在尝试抓取登录表单中包含 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 requests

from datetime import datetime

from bs4 import BeautifulSoup


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

EMAIL = 'myemail@gmail.com'

PASSWORD = 'somepwd'


LOGIN_API_URL = 'https://www.idocmarket.com/Security/Register'


我希望登录后跳转到下一页


慕哥6287543
浏览 121回答 1
1回答

眼眸繁星

这个站点似乎在请求中的 cookie 和参数中都设置了 xsrf 令牌(正如您首先注意到的那样)。经过一些测试后,似乎 cookie 本身就足够了,例如在传递正确的 cookie 时从 POST 请求中删除 xsrf 参数似乎有效。使用卷曲快速测试:username=myemail@gmail.compassword=somepwdcurl -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 requestsfrom bs4 import BeautifulSoupLOGIN_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")
随时随地看视频慕课网APP

相关分类

Python
我要回答