我想知道requests.get()
从客户端发送了什么HTTP GET请求标头。
requests.get('http://localhost:9000')
由netcat
监视的上述python命令发送的请求标头如下。但是,我找不到直接监视在客户端发送的HTTP GET请求标头的方法。
GET / HTTP/1.1
Host: localhost:9000
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.18.4
import requests
import sys
req = requests.Request('GET', 'localhost:9000')
print req.headers
prepared = req.prepare()
s = requests.Session()
page = s.send(prepared)
由netcat监视的上述python命令发送的请求标头如下。
GET / HTTP/1.1
Host: localhost:9000
Accept-Encoding: identity
此外,req.headers
可用于监视标题。它与发送的标头不完全相同,因为它不包含Accept-Encoding
标头。另外,通过这种方式发送的HTTP GET请求标头也与第一种方式不同。
$ ./main.py
{}
是否有一种方法可以直接监视以第一种方式发送的HTTP GET标头?
此外,为什么两种方法发送的请求不相同?为了避免可能的混淆,使它们保持一致不是更好吗?
答案 0 :(得分:2)
我想知道
requests.get()
从客户端发送了什么HTTP GET请求标头
如果我做对了,您想查看实际上由requests.get()
发送的标头。
您可以使用.request.headers
属性来访问它们:
import requests
r = requests.get("http://example.com")
print(r.request.headers)