获取urllib2 HTTP请求中发送的头部信息

2 投票
2 回答
2433 浏览
提问于 2025-04-16 18:06

我知道怎么获取收到的头信息

resp = urllib2.urlopen('http://www.google.com')
print resp.info()

但是我怎么才能访问发送给 'http://www.google.com' 的头信息呢?

我通常使用wireshark来分析,看看实际发送了什么,但我想在我的脚本中获取这些信息。

2 个回答

0

好的,下面是内容的通俗易懂版本:

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,我们希望程序能做出反应。这种情况就需要用到“事件处理”。

事件处理就是程序监听某些事件,比如鼠标点击、键盘输入等,然后根据这些事件来执行相应的代码。这样,程序就能和用户进行互动了。

在不同的编程语言中,事件处理的方式可能会有所不同,但基本的思路是一样的。我们通常会定义一个“事件监听器”,这个监听器就像一个守卫,时刻关注着用户的操作,一旦发现有事件发生,就会触发相应的代码。

总之,事件处理是让程序能够响应用户操作的重要机制,理解这一点对编程新手来说非常重要。

import httplib
import urllib2

class CustomHTTPConnection(httplib.HTTPConnection):
    def request(self, method, url, body=None, headers={}):
        self.req_headers = headers
        self._send_request(method, url, body, headers)
    def getresponse(self, buffering=False):
        resp = httplib.HTTPConnection.getresponse(self, buffering)
        for key, value in self.req_headers.items():
            resp.msg.headers.append('req_%s: %s\r\n' % (key, value))
        return resp

class CustomHTTPHandler(urllib2.AbstractHTTPHandler):
    def http_open(self, req):
        resp = self.do_open(CustomHTTPConnection, req)
        return resp
    http_request = urllib2.AbstractHTTPHandler.do_request_

if __name__ == '__main__':
    opener = urllib2.OpenerDirector()
    opener.add_handler(CustomHTTPHandler())
    res = opener.open('http://www.google.it/')
    info = res.info()
    print info
2

在编程中,有时候我们需要把一些数据从一个地方转移到另一个地方。这就像把水从一个杯子倒到另一个杯子一样。这个过程可能会涉及到一些步骤,比如选择要转移的数据、确定目标位置等等。

有些时候,转移的数据可能会很复杂,或者需要经过一些处理才能到达目标位置。就像在倒水之前,可能需要先把水过滤一下,确保它是干净的。

此外,转移数据的时候,我们还需要考虑到速度和效率。就像在倒水时,如果我们用一个小勺子,可能会很慢;而用一个大杯子就会快很多。因此,选择合适的方法和工具是很重要的。

总之,数据转移是编程中一个常见的任务,理解这个过程可以帮助我们更好地处理和管理数据。

import httplib
import urllib2

class CustomHTTPConnection(httplib.HTTPConnection):
    def request(self, method, url, body=None, headers={}):
        print headers
        self._send_request(method, url, body, headers)

class CustomHTTPHandler(urllib2.AbstractHTTPHandler):
    def http_open(self, req):
        return self.do_open(CustomHTTPConnection, req)
    http_request = urllib2.AbstractHTTPHandler.do_request_

if __name__ == '__main__':
    opener = urllib2.OpenerDirector()
    opener.add_handler(CustomHTTPHandler())
    res = opener.open('http://www.google.it/')

撰写回答