1

私はこのwebsiteを開き、Pythonでrequestsライブラリを使用してダッシュボードの情報にアクセスしようとしています。これはウェブスクラップのようなものですが、問題はログインできません。私はログイン資格証明を投稿するためにさまざまな方法を試しましたが、これまでのところ何も動作していません。Pythonでリクエストライブラリを使用してログインできません

サイト - https://www.handy.com/login

ログインHTML - <input autofocus="autofocus" class="string email required" id="user_session_email" name="user_session[email]" required="required" size="50" type="email">

パスワードHTML - <input class="password required" id="user_session_password" name="user_session[password]" required="required" size="50" type="password">

コード:

まず私は

ユーザ名とパスワードの両方のname属性を使用しようとしました
import requests 
url = "https://www.handy.com/login" 
payload = {"user_session[email]": "email or username", "user_session[password]": "password"} 
r = requests.post(url, data=payload) 
print r.status_code 
print r.reason 

id属性も両方ともusername and passwordで試してみましたが、問題は同じです。ステータスコードは500であり、理由はInternal Server Errorです。私は永続的なセッションを作成する方法を知っていますが、あなたが私がウェブサイトにログインする手助けをすることができれば感謝します。

答えて

1

最初に、認証が必要であり、さらなる要求のためにセッションを維持する必要がある場合、requests.sessionオブジェクトがこれを行うための意図された方法です。

これには、セッションオブジェクトを作成し、それを使用してPOSTリクエストを送信することが含まれます。

セッション= requests.session() R = session.post(URL、データ=ペイロードは)

あなたが必要があるとしているもう一つの問題は、あなたのブラウザと同じペイロードを送信していないということであるだろう(または、さらに重要なのは、サーバーが予期しているように)、それが内部サーバーのエラーが示すものです。

Firefoxを使用している場合は、Ctrl-Shift-Qでネットワークモニタウィンドウを開き、ブラウザがログインの詳細を送信するためのPOST要求を選択し、「params」タブに移動して何かを表示できますこのように:

enter image description here

ですから、最初に何をする必要があるか、ログインページにGET要求を行うためにセッションオブジェクトを使用しています。このリクエストから受け取ったばかりのHTMLから、authenticity_tokenを解析する必要があります。次に、このトークンを電子メールとパスワードとともに使用して、サイトに認証されるPOSTリクエストを作成することができます。

関連する問題