我有一个关于重定向后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逻辑吗? –