添加自定义“用户代理”时,Python请求更改“主机”标头

时间:2019-03-09 03:21:15

标签: python http-headers python-requests

我正在如下请求:

# 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标记)也没有问题。

0 个答案:

没有答案