如果将 Ruby 与 Net/HTTP 结合使用,如何使用 Windows 上的 Fiddler 或 Mac / Linux 上的其他工具来监控其流量?

问题描述 投票:0回答:4

我通常使用Fiddler来监控HTTP请求和响应,但是如果是使用

Net/HTTP
的Ruby脚本,所有的请求和响应都不会显示在Fiddler中。

有没有办法查看所有请求和响应,如果 Fiddler 做不到,Mac 或 Linux 上的其他工具可以显示吗?

ruby http monitoring
4个回答
8
投票

您想在 Ruby 脚本中使用 Net::Http::Proxy 库。

你有的地方

Net::Http.start(uri.host, uri.port)

你想要

Net::HTTP::Proxy('127.0.0.1', '8888').start(uri.host, uri.port)

。 。 。假设 Fiddler 运行在端口 8888 上,就像它开箱即用一样。


3
投票

您尝试过WireShark吗?

也许你可以通过使用代理让 Fiddler 工作 - 例如发送 net/http 到 127.0.0.1:8888。


0
投票

有 2 种方法可以从 Ruby 代码中捕获和解密 HTTPS 流量。

1/旧解决方案(修改您的 Ruby 代码)

  1. 启动您的代理应用程序,例如 Proxyman、Fiddler 或 Charles
  2. 将其自签名证书导出到桌面文件夹
  3. 修改您的 Ruby 代码
proxy_addr = 'localhost'
proxy_port = 9090 # make sure it's a current port of your proxy app

Net::HTTP.new('example.com', nil, proxy_addr, proxy_port).start { |http|
  # always proxy via localhost:9090
}
  1. 使用自定义证书运行您的代码
env SSL_CERT_DIR=/path/to/certs/folder ruby my_code.rb
env SSL_CERT_FILE=/path/to/cert.crt ruby my_code.rb
  1. 完成

缺点:可以,但是你必须手动修改代码,这很耗时。

2/ ✅ 新解决方案(一键点击,无需修改任何代码)

  1. 下载 macOS 版 Proxyman (https://proxyman.io/ruby)
  2. 通过访问证书菜单 -> 安装 macOS -> 按照说明将证书设置到您的 Mac 上
  3. 设置菜单 -> 打开新终端

capture Ruby HTTPS traffic

  1. 在此终端中启动您的 Ruby 代码
  2. 完成。 Proxyman 可以捕获和解密所有 HTTPS 流量(适用于不同的 ruby 库:http、net/http、net/https、httparty、fastlane 和 faraday。)

Capture and debug Ruby net/http request without modifying any code


-1
投票

在这种情况下,我将使用 Firefox (Firebug) 或 Chrome(内置开发人员工具)来执行此操作

(更新:评论中的有效答案)

© www.soinside.com 2019 - 2024. All rights reserved.