首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让urllib2记录所有传输的字节

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

Stack Overflow用户
提问于 2009-07-23 09:56:43
回答 2查看 3.9K关注 0票数 19

我正在编写一个使用几个第三方web API的web应用程序,我想要跟踪ad-hock分析的低级别请求和响应。所以我正在寻找一个方法,可以让Python的urllib2记录所有通过超文本传输协议传输的字节。也许是一个子类的处理程序?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-25 08:22:37

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

代码语言:javascript
复制
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)

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

票数 12
EN

Stack Overflow用户

发布于 2009-12-04 11:11:00

这看起来相当棘手。在urllib2、urllib或httplib (本文构建的基础)中没有用于截取输入或输出数据的钩子。

我唯一想到的事情,除了切换策略来使用外部工具(有很多,大多数人都在使用这样的工具),就是在你自己的新模块(比如" capture_socket“)中编写socket.socket的子类,然后使用”导入capture_socket;导入httplib;httplib.socket =capture_socket“将其插入到httplib中。您必须将所有必要的引用(在httplib中使用的任何形式为"socket.foo“的引用)复制到您自己的模块中,然后您可以重写子类中的recv()和sendall()等内容来对数据执行您喜欢的操作。

如果您使用SSL,可能会出现复杂的情况,我不确定这是否足够,或者您是否还必须自己制作socket._fileobject。不过,这看起来是可行的,仔细阅读标准库中的httplib.py和socket.py源代码会告诉您更多信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1170744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档