2017-09-16 189 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令牌)?

編輯:我做了一些閒逛的時候看到我手動登錄會發生什麼你可以看到請求的screengrab我的瀏覽器發送的位置:PJ Login Request

+2

你可能需要張貼到登錄終點 - 如果papajohns只是使用基本的HTTP驗證我會感到驚訝......(這意味着你需要查看網頁源代碼 - 識別的形式,目標URL和構建效仿登錄) –

+0

@JonClements的圖像在我的編輯適當的請求顯示錶格數據(即目標URL,用戶通),但是,我有點失去了在搞清楚什麼類型的身份驗證使用的。有什麼建議? –

+0

您通常不會使用任何...您使用您的用戶名/密碼將您的用戶名/密碼作爲適當的POST請求發送到requests.Session(),然後您可能會收到一個cookie,這樣re - 使用會話進行進一步的請求意味着您已經登錄... –

回答

1

想通了,下面喬恩的指導意見:

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。

With https BOTH GET and 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