web-dev-qa-db-ja.com

pythonを使用して、最初のリクエストでサーバーが応答するセッションIDを必要とするページにログインする方法は?

いくつかのWebページにログインするためのスクリプトを書いています。この目的のためにrequestとrequest.sessionモジュールを使用しています。ログインパラメータを使用した最初のリクエストで、サーバーはセッションIDに応答します。同じページにさらにログインするためにそのセッションIDを設定する方法。

url = "some url of login page"
payload = {'username': 'p05989', 'password': '123456'}
with requests.session() as s:
    s.post(url1, data=payload)
    sessionid = s.cookies.get('SESSIONID')
    print(sessionid)
    r = requests.get(url,data=payload)
    print(r.text)

上記のコードでは、サーバーは最初のリクエストでセッションIDに応答します.2番目のリクエストでそのセッションIDを使用するにはどうすればよいですか?

8
heisenberg

すでにrequests.session()を使用しています。それはあなたのためにクッキーを処理します、あなたがセッションを使い続けるならばあなたのすべての要求のために:

url = "some url of login page"
payload = {'username': 'p05989', 'password': '123456'}
with requests.session() as s:
    # fetch the login page
    s.get(url)

    # post to the login form
    r = s.post(url1, data=payload)
    print(r.text)

ログインフォームに投稿する前に、まずGETを使用してセッションIDを設定する必要があります。

SESSIONIDcookieは透過的に処理されます。

12
Martijn Pieters
import requests
import webbrowser

url = "https://www.invezta.com/investorsignup.aspx"


payload = {'login-email':  'email',
    'login-pwd': 'password'}

with requests.session() as s:
    # fetch the login page
    s.get(url)

    url1='https://www.invezta.com/Pdf_creator.aspx?User_ID='

    # post to the login form
    r = s.post(url1, data=payload)
    print(r.text)
1
Vijay