1

(这是这个问题的后续问题)

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

  • 网址
  • 查询参数
  • 标题
  • 身体
  • 以及在请求中发送的任何其他内容(我不确定是否还有其他内容,但如果有其他内容,我也想看看)

我在使用 OAuth 连接到 LinkedIn 时遇到了问题(Google 和 Facebook 也有类似的实现),我想看看到底发送了哪些请求。我怀疑auth_token没有提供,但我需要确认这一点。为此,我需要urllib3显示完整的请求,因为它们通过 HTTPS 并且我无法分析网络流量以查看它们(端到端加密)。

4

2 回答 2

2

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

于 2013-05-02T16:06:15.657 回答
0

您可以改为侵入requestshooks 系统,然后使用它来跟踪响应及其请求:

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属性以供检查。

于 2013-05-02T14:49:49.917 回答