1. ホーム
  2. python

[解決済み] リクエストでchess.comにPythonでログインする

2022-03-01 23:32:29

質問

私は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)

残念ながら、ログインページに戻されるだけです。 私はフロントエンド/ウェブに非常に慣れていないので、何か手助けがあれば非常に嬉しく思います。

解決方法を教えてください。

あなたのペイロードは完全に正しくなく(その中に欠けているものがいくつかある)、間違ったURLにPOSTリクエストを送信しているようです、このコードを試してみてください。

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)

これが役立つといいのですが