小编典典

如何在urllib2请求中获取默认标头?

python

我有一个使用urllib2的Python
Web客户端。将HTTP标头添加到我的传出请求中很容易。我只是创建了要添加的标头的字典,并将其传递给Request初始化程序。

但是,其他“标准”
HTTP标头以及我显式添加的自定义标头也添加到了请求中。当我使用Wireshark嗅探请求时,除了添加自己的标题外,还会看到标题。我的问题是我如何访问这些标头?我想记录每个请求(包括
完整 的HTTP标头),但不知道如何记录。

有指针吗?

概括地说:如何从urllib2创建的HTTP请求中获取所有传出标头?


阅读 220

收藏
2020-12-20

共1个答案

小编典典

如果您想查看发送的文字HTTP请求,并因此而看到每个最后一个标头,都与线路上的表示完全相同,那么您可以告诉urllib2您使用自己的版本(HTTPHandler可以打印(或保存)或其他任何形式)传出的HTTP请求。

import httplib, urllib2

class MyHTTPConnection(httplib.HTTPConnection):
    def send(self, s):
        print s  # or save them, or whatever!
        httplib.HTTPConnection.send(self, s)

class MyHTTPHandler(urllib2.HTTPHandler):
    def http_open(self, req):
        return self.do_open(MyHTTPConnection, req)

opener = urllib2.build_opener(MyHTTPHandler)
response = opener.open('http://www.google.com/')

运行此代码的结果是:

GET / HTTP/1.1
Accept-Encoding: identity
Host: www.google.com
Connection: close
User-Agent: Python-urllib/2.6
2020-12-20