获取Python请求的401身份验证错误时,wget功能正常

获取Python请求的401身份验证错误时,wget功能正常,python,wget,Python,Wget,我正在尝试从提供商处下载一个zip文件,使用wget工作正常: wget -c --http-user=MY_UN --http-password=MY_PW "https://datapool.asf.alaska.edu/GRD_MD/SA/S1A_EW_GRDM_1SDH_20151003T040339_20151003T040351_007983_00B2A6_7377.zip" 然而,使用Python请求库,使用相同的凭据,我会遇到401个错误,有人知道为什么会出现这种情况,或者从哪

我正在尝试从提供商处下载一个zip文件,使用wget工作正常:

wget -c --http-user=MY_UN --http-password=MY_PW "https://datapool.asf.alaska.edu/GRD_MD/SA/S1A_EW_GRDM_1SDH_20151003T040339_20151003T040351_007983_00B2A6_7377.zip"
然而,使用Python请求库,使用相同的凭据,我会遇到401个错误,有人知道为什么会出现这种情况,或者从哪里开始理解这个问题吗

url = "https://datapool.asf.alaska.edu/GRD_MD/SA/S1A_EW_GRDM_1SDH_20151003T040339_20151003T040351_007983_00B2A6_7377.zip"    
r = requests.get(url, auth=("MY_UN", "MY_PW"), stream = True)
我应该提到的是,我已经对细节进行了四次检查,它们在两个方面都是正确的。Python中是否有其他方法

与此同时,我不得不使用操作系统包生成一个wget:

os.system("wget -c --http-user=MY_UN--http-password=MY_PW 'https://datapool.asf.alaska.edu/GRD_MD/SA/S1A_EW_GRDM_1SDH_20151003T040339_20151003T040351_007983_00B2A6_7377.zip'")

我建议尝试以下方法:

session = requests.Session()
session.trust_env = False # to bypass a proxy
r = session.get(url, verify=False) # or if there is a certificate do verify='file.cer'

我遇到了一个类似的问题,我用HTTPDigestAuth而不是HTTPBasicAuth解决了它

from requests.auth import HTTPDigestAuth
requests.get(url, auth=HTTPDigestAuth('mylogin', 'mypassword'))

您的密码是否包含反斜杠?您可以尝试将
r
前缀传递给字符串。不,恐怕不行,只有字符和数字,与我的用户名相同,只是UN有一个前缀。在里面。好主意,你是不是想逃出绳子?看起来他们在做oauth。这可能有用吗?对于请求,您的示例显式地尝试使用HTTP基本身份验证进行身份验证。但是,
wget
在传递
http用户
/
--http密码
时支持多种类型的身份验证。您的应用程序可能正在使用不同的类型,如Digest或NTLM。这就解释了为什么wget中的示例在请求失败时仍然有效。请求的文档中有不同身份验证的示例:尝试将登录名和密码放入变量中,然后打印出来,看看它们是否仍然相同