【问题标题】:How can I examine the network communications of the Python HTTP Client?如何检查 Python HTTP 客户端的网络通信?
【发布时间】:2011-12-19 21:29:04
【问题描述】:

我正在尝试隔离 Python 的 httplib2 HTTP 客户端或 API 中存在的错误。 (首先猜测是 API。)在使用 httplib2 将数据发布到 RESTful API 时,我得到了 401 响应状态(无授权) 将数据保存到 API。

我想检查对客户端的 HTTP 请求和响应,即放入网络和从网络接收的字符串。 httplib2 代码似乎过于复杂,无法轻松地从其中捕获值,并且可能会错过该错误。

查看与客户端的网络通信似乎更快。有什么工具可以用来监控客户端与本地网络套接字的通信吗?

【问题讨论】:

  • 更改httplib2.debuglevel 不会产生任何有用的东西吗?
  • 如果服务器同时返回 401 状态 保存 POST 给它的数据,你的客户端怎么会出错?
  • 客户端可能会以某种方式破坏状态代码。我认为这可能,但我想知道如何排除它。
  • 此外,相同的数据和标头在通过 curl 发送时会获得状态 201。因此,即使 API 存在错误,python 客户端请求中的某些内容也会触发它,而不会出现在其他干净的请求中。这几乎不意味着 python 有错,但如果它是我可以在维护者摆弄他们的 api 时破解的东西,那就太好了。

标签: python http network-programming httplib2


【解决方案1】:

我使用http://www.charlesproxy.com 进行所有网络调试。

【讨论】:

  • 花了一点时间来弄清楚用法,但这正是我想要的。像我这样的菜鸟:使用 curl / python 捕获流量需要在 Charles 中为您的目标主机启用 SSL 代理(可能为不同的客户端使用不同的方式),并通过 Charles 提供的 localhost 代理路由您的 curl / python 请求。现在似乎默认为端口 8888,而不是文档中提到的 8080。
  • 如何在不更改正在使用的库的源代码的情况下通过 Charles 代理路由 python 请求?
  • 我的错...您必须在 Charles SSL 配置中专门添加要代理的域,以捕获 https 请求,然后它对 python 透明地工作
【解决方案2】:

http://www.wireshark.org/ 也可以让您监控本地套接字。 即使在 Windows 上使用添加路由的技巧,我也能够监视本地环回。

http://wiki.wireshark.org/CaptureSetup/Loopback查看其他选择

或者您可以编写原始套接字服务器,在一个端口上侦听客户端并将数据发送到另一个端口上的服务器,反之亦然,并打印出所有数据。应该不会超过十几行代码

【讨论】:

  • 很棒的工具,但找不到通过 SSL 看到客户端/服务器对话的路径
猜你喜欢
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-07
  • 2022-12-03
  • 1970-01-01
  • 2012-02-14
相关资源
最近更新 更多