Python通过请求登录chess.com

Python通过请求登录chess.com,python,python-requests,Python,Python Requests,我正试图从chess.com上读出我的一些数据。我正在努力使用python登录 我正在努力学习教程 我已经从登录页面识别了以下标签\u用户名作为用户名,\u密码作为密码,\u令牌作为隐藏令牌 我的代码: session_requests = requests.session() login_url = 'https://www.chess.com/login' result = session_requests.get(login_url) tree = html.fromstring(res

我正试图从chess.com上读出我的一些数据。我正在努力使用python登录

我正在努力学习教程

我已经从登录页面识别了以下标签
\u用户名
作为用户名,
\u密码
作为密码,
\u令牌
作为隐藏令牌

我的代码:

session_requests = requests.session()

login_url = 'https://www.chess.com/login'
result = session_requests.get(login_url)
tree = html.fromstring(result.text)

token = list(set(tree.xpath("//input[@name='_token']/@value")))[0]

payload = {
    "_username": "ChristianSloper", 
    "_password": "mypasswordgoeshere", 
    "_token": token
}

result = session_requests.post( login_url, data = payload, headers = dict(referer=login_url), verify=True)

不幸的是,我刚刚被发送回登录页面。我对前端/web非常陌生,非常乐意提供任何帮助。

您的有效负载不完全正确(其中缺少一些内容),并且您似乎将POST请求发送到了错误的URL,请尝试以下代码:

session_requests = requests.session()

login_url = 'https://www.chess.com/login'
result = session_requests.get(login_url)
tree = html.fromstring(result.text)

token = list(set(tree.xpath("//input[@name='_token']/@value")))[0]

payload={"_username": "ChristianSloper", 
         "_password": "mypasswordgoeshere", 
         "login": '',
         "_target_path": "https://www.chess.com/home",
         "_token": token
        }

session_requests.headers.update(dict(referer=login_url))
result = session_requests.post("https://www.chess.com:443/login_check", data = payload, verify=True)

希望这有帮助

只需监视登录页面的成功获取,然后发布到登录页面,就像用户使用浏览器所做的那样,然后复制在发布页面上发送的内容。使用请求会话将确保cookie得到处理,您需要确保POST上发送的标题与浏览器发送的标题相同/无法区分。使用一个间谍应用程序,比如免费的优秀的Telerik Fiddler。如果客户端看起来不是浏览器,登录可能总是失败。谢谢提示@barny。我无法从Telerik那里读到任何东西,这一切似乎都是加密的。(或者我可能用错了Fiddler,因为我以前没有用过:-)您可以转到Fiddler选项并配置https-它将成为解密通信的代理(中间人)。当然,您必须在浏览器中接受Fiddler证书。但是你会看到所有的交流——标题、内容。Fiddler对于监视browserserver通信非常有用。