如何让urllib2记录所有传输的字节

2024-09-29 23:33:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个使用多个第三方web api的web应用程序,我想跟踪低级请求和响应,以便进行ad hock分析。所以我在寻找一个方法,它可以让Python的urllib2记录通过HTTP传输的所有字节。也许是一个亚类处理者?在


Tags: 方法apiweb应用程序http字节记录urllib2
2条回答

这看起来很棘手。在urllib2、urllib或httplib(它构建在其上)中没有用于截取输入或输出数据的钩子。在

除了切换策略使用外部工具(其中有很多,而且大多数人都使用这种工具),我唯一想到的就是编写插座.插座在您自己的新模块中(比如“capture_socket”),然后使用“import capture_socket;import httplib;httplib.socket=捕获插座”。你必须复制所有必要的参考资料(任何形式的资料)插座.foo“这是在httplib中使用的)到您自己的模块中,但是之后您可以重写子类中的recv()和sendall()之类的内容来处理数据。在

如果您使用SSL,可能会出现复杂情况,我不确定这是否足够,或者您是否还需要自己制作套接字。不过,这似乎是可行的,仔细研究一下资料来源httplib.py以及插座.py在标准图书馆里会告诉你更多。在

我已经找到了如何设置库的内置调试机制:

import logging, urllib2, sys

hh = urllib2.HTTPHandler()
hsh = urllib2.HTTPSHandler()
hh.set_http_debuglevel(1)
hsh.set_http_debuglevel(1)
opener = urllib2.build_opener(hh, hsh)
logger = logging.getLogger()
logger.addHandler(logging.StreamHandler(sys.stdout))
logger.setLevel(logging.NOTSET)

但我仍在寻找一种方法来丢弃所有传送的信息。在

相关问题 更多 >

    热门问题