我是python的新手,我需要一些帮助。在工作中,我们有一台本地服务器,我想从该服务器下载文件。在下载之前,您需要进行身份验证。 为了下载,我创建了两个脚本。使用urllib3的脚本可以正常工作,但是使用请求的其他脚本则不能。 有人可以检查一下脚本,然后告诉我我做错了什么吗?谢谢。
这个正在工作
import requests
from base64 import b64encode
url = 'http://q32wad/documents/bills.pdf'
# try 1
# r = requests.get(url, auth=('username123', 'password123'))
# r = requests.get(url)
# try 2
# headers = {'username': 'username123', 'password': 'password123'}
# r = requests.get(url, headers=headers)
# try 3
# userAndPass = b64encode(b"username123:password123").decode("ascii")
# headers = { 'authorization' : 'Basic %s' % userAndPass }
# r = requests.get(url, headers=headers)
# try 4
c = requests.Session()
c.auth =('username123', 'password123')
r = c.get(url)
print("STATUS " + str(r.status_code))
print("HEADERS " + str(r.headers))
results:
STATUS 502
HEADERS {'Date': 'Sun, 05 Aug 2018 15:11:28 GMT', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Content-Type': 'text/html; charset="UTF-8"', 'Content-Length': '2477', 'Accept-Ranges': 'none', 'Proxy-Connection': 'close'}
这是行不通的
{{1}}
答案 0 :(得分:1)
我找到了,解决方法,对于我的情况,meta refresh
发布帮助我
最终工作代码如下
c = requests.Session()
c.auth =('username123', 'password123')
c.trust_env = False
r = s.get(url)
如果有人知道,“ trust_env = False”是什么意思?
答案 1 :(得分:0)
您尝试过以下方法吗:Python: request basic auth doesn't work
似乎您缺少一步,实际上是在与服务器进行身份验证。
c = requests.Session()
c.auth =('username123', 'password123')
auth = c.post('http://' + url)
r = c.get(url)