【问题标题】:How can I see the actual data Requests sends over the wire?如何查看请求通过网络发送的实际数据?
【发布时间】:2013-04-26 16:54:42
【问题描述】:

(这是this one的后续问题)

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

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

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

【问题讨论】:

  • 您应该花一些时间探索 Requests API;如果您阅读 rauth 和 Requests 文档,我注意到您可以自己回答很多问题。例如,从 Response 对象访问 PreparedRequest 对象在 Requests 的文档中进行了全面讨论。
  • 你是对的。如果我有时间阅读 Requests、urrlib3 和 rauth(以及任何其他依赖项)的文档,记住所有这些细节,并将它们应用于我的特定案例,决定如何解决我的具体问题,我会自己解决这个问题.哎呀,我永远不需要 Stackoverflow!我什至对请求内容不感兴趣:我只是想让 OAuth2 与linkedin一起工作,奇怪的是,它期望 oauth2_access_token 而不是 access_token,这是 rauth 中的默认值(不能被覆盖),并且不需要不记名令牌在标题中。
  • 只是为了澄清。在我看来,您是您图书馆的专家。我不是。我 - 和其他人 - 需要你的帮助(你可以给予或不给予) 我假设你在其他问题上需要其他人的帮助,并且你不是所有领域的专家。所以你经常会问愚蠢或明显的问题。至少我会。所以是的,你可以抱怨我在问愚蠢的问题(这不是我问过的最愚蠢的问题),但我已经知道了。某处,某处是我问题的答案。我只是不知道在哪里,这(对我来说)是正确的地方。

标签: python oauth python-requests urllib3 rauth


【解决方案1】:

您可以改为侵入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 属性供您检查。

【讨论】:

  • 这看起来很有趣。我去看看。
  • 仅供参考,我还在 urrlib3 问题跟踪器上找到了这个讨论:github.com/shazow/urllib3/issues/107。还不知道该怎么做。
  • @gonvaled:啊,httplib 是 Python 2,当然在 Python 3 中重命名为 http.client
【解决方案2】:

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

【讨论】:

  • 这需要自己访问响应,我相信 OP 没有。
  • 如果他使用 rauth,他绝对会使用。
  • 我只相信你的话,我自己不使用图书馆。
  • 你相信我的话,我是作者。
  • 对,那会给你一定的,容我们说,优势!
猜你喜欢
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
相关资源
最近更新 更多