我正在使用python请求。我需要调试一些OAuth活动,为此我希望它记录所有正在执行的请求。我可以通过ngrep获得此信息,但不幸的是,无法grep https连接(这是OAuth所需要的)
如何激活请求正在访问的所有URL(+参数)的日志记录
您需要在httplib级别启用调试(requests→urlib3→httplib)
以下是一些可以切换(…\u on()和…\u off())或临时打开的函数:
导入日志
导入上下文库
尝试:
从http.client导入HTTPConnection#py3
除恐怖外:
从httplib导入HTTPConnection#py2
def debug_请求_on():
''打开请求模块的日志记录''
HTTPConnection.debuglevel=1
logging.basicConfig()文件
logging.getLogger().setLevel(logging.DEBUG)
requests\u log=logging.getLogger(“requests.packages.urllib3”)
请求\u log.setLevel(logging.DEBUG)
请求\u log.propagate=True
def debug_请求_关闭():
''关闭请求模块的日志记录,可能有一些副作用''
HTTPConnection.debuglevel=0
root_logger=logging.getLogger()
root_logger.setLevel(logging.WARNING)
root_logger.handlers=[]
requests\u log=logging.getLogger(“requests.packages.urllib3”)
请求\u log.setLevel(logging.WARNING)
请求\u log.propagate=False
@contextlib.contextmanager
def debug_请求():
“与”“with”“一起使用!”
在()上调试请求
产量
调试请求关闭()
演示用途:
>&燃气轮机&燃气轮机;请求。获取('http://httpbin.org/')
<;答复[200]>;
&燃气轮机&燃气轮机&燃气轮机;在()上调试请求
&燃气轮机&燃气轮机&燃气轮机;请求。获取('http://httpbin.org/')
信息:requests.packages.urllib3.connectionpool:启动新的HTTP连接(1):httpbin.org
调试:requests.packages.urllib3.connectionpool:“GET/HTTP/1.1”200 12150
send:'GET/HTTP/1.1\r\n主机:httpbin.org\r\n连接:保持活动\r\n接受-
编码:gzip,deflate\r\n接受://*\r\n用户代理:python请求/2.11.1\r\n\r\n'
答复:“HTTP/1.1 200正常\r\n”
标题:服务器:nginx
...
<;答复[200]>;
&燃气轮机&燃气轮机&燃气轮机;调试请求关闭()
&燃气轮机&燃气轮机&燃气轮机;请求。获取('http://httpbin.org/')
<;答复[200]>;
&燃气轮机&燃气轮机&燃气轮机;使用debug_请求():
... 请求。获取('http://httpbin.org/')
信息:requests.packages.urllib3.connectionpool:启动新的HTTP连接(1):httpbin.org
...
<;答复[200]>;
您将看到请求,包括标题和数据,以及带有标题但没有数据的响应。唯一缺少的是未记录的response.body
来源