私はPythonのリクエストモジュールを使用してWebページにログインしようとしています。ページをリロードせずにPythonのPOSTリクエスト
ここにシナリオがあります: ユーザー名パスワードを入力して送信をクリックすると、応答Webページが取得され、ユーザーはセキュリティに関する質問に回答する必要があります。
ので、
POSTリクエスト1 - ユーザ名を提出し、パスワード
レスポンス1 - セキュリティの質問を含むページ
この部分は非常に単純です。
しかし、次のステップでは、セキュリティに関する質問への回答を提出するために、別の投稿要求を行う必要があります。そのためにページを再読み込みする必要があります。しかし、一度リロードすると、最初のログインページ(ユーザー名とパスワードのフィールドを持つ)が返されます。
回避策はありますか?
編集:私はすべての要求
を実行するためにrequests.Session()
オブジェクトを使用していますここでは、コード
s = requests.Session()
login = {'username': username, 'password': password}
url = 'https://login.xyz.com'
r = s.post(url, data=login)
# r.url is also https://login.xyz.com
answers = {'question1': answer1, 'question2': answer2}
r = s.post(url, data=answers)
どこにあなたのコードですか?あなたは同じセッションですか? – schwobaseggl
あなたのログイン結果は、おそらくクッキーとリダイレクトURLです。ブラウザーでログインアクション全体を実行し、そのページで正味のトラフィックをキャプチャしてみてください(FirefoxまたはChromeでは、開発ツールページ - F12-で行うことができます)。キャプチャされたトラフィックの各要求を確認し、それに応じて自動化を試みます。私が正しい場合、操作の順序は次のようにする必要があります:ログインデータを投稿し、応答を取得し、認証Cookieの応答を解析し、そのCookieを含む新しい投稿要求でリダイレクトを行います。 – BoboDarph
証明書チェックを無効にしないで、対象のWebサイトに接続しようとすると、Webサイトのssl証明書CNAMEが無効(自己署名または偽造)になるため、エラーが発生します。ウェブサイトに何か他のものを送る前に、レスポンスコードを200などに検証することができます。 – BoboDarph