我有一個關於重定向後HTTP基本驗證的快速問題。Python請求 - 重定向後驗證
我想登錄到一個網站,出於運營的原因,我立即使用HTTP 302響應將我重定向到中央登錄網站。在我的測試中,似乎請求模塊在重定向後不會將我的憑證發送到中央登錄站點。正如下面的代碼片段所示,我不得不從響應對象中提取重定向URL並再次嘗試登錄。
我的問題是這樣的:
有沒有辦法強制請求重新發送登錄憑證後重新離線主機?
爲了便於攜帶,我不希望使用.netrc文件。此外,該網站的提供商已使url_login爲靜態,但沒有提出有關url_redirect的聲明。
謝謝你的時間!
代碼段
import requests
url_login = '<url_login>'
myauth = ('<username>', '<password')
login1 = requests.request('get', url_login, auth=myauth)
# this login fails; response object contains the login form information
url_redirect = login1.url
login2 = requests.request('get', url_redirect, auth=myauth)
# this login succeeds; response object contains a welcome message
UPDATE
這裏是上面的一般的代碼的一個更具體的版本。
- 第一個
request()
返回一個HTTP 200響應並在其文本字段中包含表單信息。 - 第二個
request()
在其文本字段中返回一個帶有'HTTP Basic: Access denied.'
的HTTP 401響應。
(當然,當使用有效憑據提供的登錄成功。)
同樣,我想知道我是否能達到我想要的登錄只用一個調用requests.request()
。
import requests
url_login = 'http://cddis-basin.gsfc.nasa.gov/CDDIS_FileUpload/login'
myauth = ('<username>', '<password>')
with requests.session() as s:
login1 = s.request('get', url_login, auth=myauth)
url_earthdata = login1.url
login2 = s.request('get', url_earthdata, auth=myauth)
你能分享網址嗎? –
當然 - 網址是 http://cddis-basin.gsfc.nasa.gov/CDDIS_FileUpload/login,我想要做的更多細節可以在 http://cddis.gsfc找到.nasa.gov/Data_and_Derived_Products/CDDIS_File_Upload_Documentation.html。 我想保持我的問題儘可能一般,但如果這有幫助,繼續! –
我想你想要一個會話,你想模仿curl邏輯嗎? –