Python 登录以 chess.com 请求



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

我正在尝试按照这里的教程进行操作

我已经从登录页面中确定了以下标签。 _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很陌生,很高兴得到任何帮助。

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

希望这有帮助!

您发布到浏览器发布到"https://www.chess.com/login_check"而不是"https://www.chess.com/login"的错误网址 还要确保使用用户代理模拟浏览器。它看起来像这样

    response = session.get(login_url, allow_redirects=True)  # gets the login url data
    soup = BeautifulSoup(response.content, "html.parser")  # parses the html
    token_input = soup.find('input', {'name': '_token'})  # finds the token
    if token_input:
        token = token_input.get('value')
        # print("Token:", token)
    else:
        print("Token not found.")
    login_data = {"_username": "username",
                  "_password": "password",
                  "login": '',
                  "_target_path": quote(game_url),
                  "_token": token
                  }
    data_string = "&".join([f"{key}={value}" for key, value in
                            login_data.items()])  # formats the data into a string that can be sent to the server
    print(data_string)
    headers = {
        "User-Agent": UserAgent().random,
        "Referer": login_url
    }
    # Perform the login request
    login_post = session.post(login_post_url, data=login_data, headers=headers, allow_redirects=True, verify=True)
    print(login_post.status_code)

试试这段代码。也希望这有帮助!状态代码应为 302,因为它会将您重定向到家或任何地方。

相关内容

最新更新