首页 > 解决方案 > Python 使用请求登录 chess.com

问题描述

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

我正在尝试按照教程here

我从登录页面中识别出以下标签。_username作为用户名、_password密码和_token隐藏令牌。

我的代码:

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 很陌生,很高兴得到任何帮助。

标签: pythonpython-requests

解决方案


您的有效负载并不完全正确(其中缺少一些内容),并且您似乎将 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)

希望这可以帮助!


推荐阅读