如何通过网络查看请求发送的实际数据?

时间:2013-05-02 13:32:31

标签: python oauth python-requests urllib3 rauth

(这是this one)的后续问题

如何告诉urllib3记录完整请求,包括但不限于:

  • URL
  • 查询参数
  • 标题
  • 在请求中发送的任何其他内容(我不确定还有什么,但如果还有其他内容,我也希望看到它)

我无法通过OAuth连接到LinkedIn(类似的实施适用于Google和Facebook),我希望看到完全正在发送的请求。我怀疑没有提供auth_token,但我需要确认一下。为此,我需要urllib3来显示完整的请求,因为它们是通过HTTPS而我无法分析网络流量以查看它们(端到端加密)。

2 个答案:

答案 0 :(得分:2)

您可以使用PreparedRequest访问者访问请求后实际发送的request对象,例如print dir(r.request)

答案 1 :(得分:0)

您可以入侵requests hooks system,然后使用它来跟踪回复及其请求:

from requests import hooks


_orig_default_hooks = hooks.default_hooks


def my_default_hooks():
    hooks = _orig_default_hooks()
    hooks['response'].append(response_hook)
    return hooks


hooks.default_hooks = my_default_hooks


# requests.models is imported by the requests package, so we need to ensure it's reference
# to default_hooks is updated too.
import requests.models
requests.models.default_hooks = my_default_hooks


def response_hook(r, **kw):
    req = r.request
    print req.headers

为每个创建的请求调用reqeuests.hooks.default_hooks()函数,通过注入您自己的response事件挂钩,您可以看到收到的每个响应。回复具有.request属性,即PreparedRequest个实例,您可以在其中找到.headers.body属性供您检查。