import requests
requests.get("http://www.sample.com")
如何修改发送请求的参数,如下所示:
“获取www.sample.com HTTP / 1.0”
“获取www.sample.com HTTP / 1.1”
答案 0 :(得分:1)
请求不支持发送HTTP / 1.0消息。很难理解为什么需要这样做:HTTP / 1.1最初是在1999年6月发布的RFC 2616中指定的。因此,HTTP / 1.0已经过时超过16年了:现代工具在很大程度上不支持HTTP /再过1.0。
答案 1 :(得分:0)
尝试传递一个 User-Agent 字符串,如下所示:
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'}
URL = 'http://serveraddress'
page = requests.get(URL, headers=headers)
print(page.text)
背景:使用旧版 Shoutcast 流媒体音频服务器时,我收到以下错误:
requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine('ICY 200 OK\r\n'))
我也注意到 wget
尝试流式传输数据,即使给定了 -O
输出指令也是如此。
与 Chrome 中的开发者工具相比,我可以看到浏览器设置的多个请求标头,包括 User-Agent
。我从 Chrome 复制了 User-Agent
值,并将其用作 requests.get
函数中的参数。
答案 2 :(得分:0)
好的,因为标记为正确的答案是典型的“你为什么要做 x?X 不好”之一,这里是关于如何为仍然需要知道的人执行此操作的实际答案。
您必须对代码进行猴子补丁,因此只需导入 from http.client import HTTPConnection
并将 HTTPConnection._http_vsn_str
设置为等于 `HTTP/X.Y.
示例:
from http.client import HTTPConnection
HTTPConnection._http_vsn_str = "HTTP/1.0"
这必须在您对请求执行任何操作之前完成。