如何在请求中定义 HTTP 协议版本?
How to define the HTTP protocol version in requests?
import requests
requests.get("http://www.sample.com")
如何修改参数发送如下请求:
"GET www.sample.com HTTP/1.0"
"GET www.sample.com HTTP/1.1"
Requests 不支持发送 HTTP/1.0 消息。很难理解为什么需要这样做:HTTP/1.1 最初在 1999 年 6 月发布的 RFC 2616 中指定。因此 HTTP/1.0 已经过时超过 16 年:现代工具基本上不再支持 HTTP/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中的开发者工具相比,我可以看到浏览器设置的几个请求headers,包括User-Agent
。我从 Chrome 复制了 User-Agent
值并将其用作 requests.get
函数中的参数。
好的,因为标记为正确的答案是典型的“你为什么要做 x?X 不好”的答案之一,这里是关于如何为那些仍然需要知道的人做这个的实际答案。
您必须对代码进行 monkeypatch,因此只需导入 from http.client import HTTPConnection
并将 HTTPConnection._http_vsn_str
设置为 `HTTP/X.Y。
示例:
from http.client import HTTPConnection
HTTPConnection._http_vsn_str = "HTTP/1.0"
不过,这必须在您对请求执行任何操作之前完成。
import requests
requests.get("http://www.sample.com")
如何修改参数发送如下请求:
"GET www.sample.com HTTP/1.0"
"GET www.sample.com HTTP/1.1"
Requests 不支持发送 HTTP/1.0 消息。很难理解为什么需要这样做:HTTP/1.1 最初在 1999 年 6 月发布的 RFC 2616 中指定。因此 HTTP/1.0 已经过时超过 16 年:现代工具基本上不再支持 HTTP/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中的开发者工具相比,我可以看到浏览器设置的几个请求headers,包括User-Agent
。我从 Chrome 复制了 User-Agent
值并将其用作 requests.get
函数中的参数。
好的,因为标记为正确的答案是典型的“你为什么要做 x?X 不好”的答案之一,这里是关于如何为那些仍然需要知道的人做这个的实际答案。
您必须对代码进行 monkeypatch,因此只需导入 from http.client import HTTPConnection
并将 HTTPConnection._http_vsn_str
设置为 `HTTP/X.Y。
示例:
from http.client import HTTPConnection
HTTPConnection._http_vsn_str = "HTTP/1.0"
不过,这必须在您对请求执行任何操作之前完成。