2017-09-16 28 views
1

Pythonリクエストモジュールを使用してPJウェブサイトに自分自身を認証する際に問題があります。次のように私のコードは次のとおりです。Python:リクエストモジュールを使用して認証することができません

import requests 

with requests.Session() as s: 
    s.auth = ("my_email", "my_password") 
    r = s.get("https://www.example.com/") 

しかし、私は私がログインしていないことを示す応答を受け取り、これを行うために、それは単に不可能ですか?何かが欠けていますか(CSRFトークンなど)ですか?

EDIT:私はあなたが私のブラウザがここに送信要求ののscreengrabを見ることができ、私は手動でログインしたときに何が起こるかを見るために周りにいくつかの突きをした:PJ Login Request

+2

あなたはおそらくログインエンドポイントにPOSTする必要があります - もしpapajohnsが基本的なHTTP認証を使用したならば驚くでしょう...(つまり、あなたはページソースを見なければなりません - フォームとターゲットURLを特定し、 –

+0

@JonClements私の編集した画像は、フォームデータ(つまり、ターゲットURL、ユーザー、パス)を表示しますが、使用する認証の種類を把握するのに迷っています。何かアドバイス? –

+0

あなたは一般的には何も使っていません...あなたはあなたのusername/passwordを適切な場所に適切なPOST要求を行い、あなたはあなたのセッションをリクエストしています。そうすれば、おそらくクッキーが戻ってきます。セッションを使用してさらにリクエストを作成すると、既にログインしていることを意味します。 –

答えて

1

はJonのガイダンスに従って、それを考え出した:

with requests.Session() as s: 
    payload = {'user':'my_email','pass':'my_password', 'target':'/order/menu'} 
    r = s.post("https://www.example.com/order/signin", data=payload) 

を私はすでに(上記の私の編集でのscreengrabを使用して)要求から正しいペイロードを考え出したが、私はそれを送っていました間違った場所(つまり、ユーザーログインページではなくホームページ)。

0

があれば平文で送信されていないポストの方法で試してみてくださいhttpを使用します。

https BOTH GETおよびPOSTが平文ではなく安全に送信されます。

import requests 

with requests.Session() as s: 
    s.auth = ("my_email", "my_password") 
    r = s.post("https://www.papajohns.com/") 


>>> r 
>>> <Response [200]> 
+0

これを試しましたが、残念ながらGETリクエストを使用した場合と同じ結果になります。 –

+1

httpsを介したgetメソッドは、プレーンテキストでも送信されません。 – pvg

関連する問題