如何获取由request.get()发送的请求标头?

时间:2019-08-13 02:17:56

标签: python python-requests

我想知道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标头?

此外,为什么两种方法发送的请求不相同?为了避免可能的混淆,使它们保持一致不是更好吗?

1 个答案:

答案 0 :(得分:2)

  

我想知道requests.get()从客户端发送了什么HTTP GET请求标头

如果我做对了,您想查看实际上由requests.get()发送的标头。

您可以使用.request.headers属性来访问它们:

import requests

r = requests.get("http://example.com")
print(r.request.headers)