我正在如下请求:
# WORKING VERSION
proxies= {'http': my_proxy_info}
r = requests.get(url, proxies=proxies, stream=True)
我正在查看正在发送的GET请求标头的控制台日志,并且看到以下两个值:
# WORKING VERSION REQUEST HEADERS
GET /downloads/001.epub HTTP/1.1 # NOTE Relative Path Here
Host: www.host-domain.org
这很好用;我可以按预期下载文件。
但是,当我尝试在标头中添加自定义User-Agent值时,如下所示:
# FAILING VERSION
headers = {'User-Agent': 'My Custom User-Agent Value'}
proxies= {'http': my_proxy_info}
r = requests.get(url, proxies=proxies, headers=headers, stream=True)
我注意到控制台中的以下输出:
# FAILING VERSION REQUEST HEADERS
GET http://www.host-domain.org/downloads/001.epub HTTP/1.1 # NOTE Full Path Here
Host: www.host-domain.org
请注意GET
参数的区别-成功的版本似乎使用了相对请求路径。
在许多情况下,我已经成功使用了此方法,但直到最近才开始使用它通过以下方法下载.epub文件:
with open ('output.epub', 'wb')as file:
for chunk in data.iter_content(chunk_size=1024):
file.write(chunk)
没有错误,但是在写入时文件已损坏。删除自定义的User-Agent
标头,文件写就好了。
如何在不更改其他标头值的情况下将客户User-Agent
值添加到标头?
其他信息:
我正在向网站发出没有stream = True参数的http请求,即使使用自定义User-Agent
标头值,阅读简单的文本http响应(例如网页的html标记)也没有问题。