抓取 Ruby(net::http 或 http gem)脚本的 HTTP/HTTPS 请求

抓取 Ruby(net::http 或 http gem)脚本的 HTTP/HTTPS 请求 的封面图

本文演示如何抓取 Ruby 脚本(net/http 和 http)库的 HTTP/HTTPS 流量。

本文内容

  • 如何使用 Proxyman 抓取 Ruby 脚本(net/http 或 http gem)的 HTTP/HTTPS 流量

1. 使用 Ruby 发起 HTTPS 请求

如果你是 Ruby 开发者,可能会花很多时间使用以下库发起 HTTP(s) 请求:

  • Net::HTTP:Ruby 内置库,提供了丰富的 API,可帮助你实现使用 HTTP 请求-响应协议的客户端。
  • http:第三方 gem,相比 Net::HTTP,它的设计更易于使用。

以下示例代码演示了如何使用这两个库发起请求。

require "http"
require 'net/http'

# Use net/http
uri = URI('https://httpbin.org/post?lib=net_http')
res = Net::HTTP.post_form(uri, 'isSSL' => 'true')
puts(res)

# Use http gem
res = HTTP.get("https://httpbin.org/get?lib=http").to_s
puts(res)

运行方法很简单:将示例保存为 client.rb -> 打开终端 App -> 执行:ruby client.rb。

Proxyman:使用 Ruby 的 net/http 或 http gem 发起 HTTP 请求
Proxyman:使用 Ruby 的 net/http 或 http gem 发起 HTTP 请求

2. 如何抓取 HTTP/HTTPS?

当前的问题

默认情况下,这两个库(net/http 和 http gem)都不会遵循系统的 HTTP 代理设置,也不会读取 HTTP_PROXY、HTTPS_PROXY 环境变量。如果你使用的是 Fiddler 或 Charles Proxy 等应用,可能看不到它们的流量。

要解决这个问题,我们必须手动添加代理配置。以下是 net/http 的配置示例:

proxy_addr = 'localhost'
proxy_port = 9090

Net::HTTP.new('example.com', nil, proxy_addr, proxy_port).start { |http|
  # always proxy via localhost:9090
}

更多信息请参阅 net::http Proxy。

这种方式容易出错且耗时,因为我们必须手动修改源代码。

解决方案 ✅

幸运的是,Proxyman 提供了一项功能,无需任何配置即可帮你抓取 HTTP/HTTPS 请求和响应。

  1. 前往 https://proxyman.com/ 下载最新版 macOS App
  2. 在你的 Mac 上安装 Proxyman 证书。打开 Certificate 菜单 -> Install Certificate on this Mac… -> 点击 “Install & Trust” 按钮即可完成安装。
在当前 MacBook 上安装 Proxyman 根证书
在当前 MacBook 上安装 Proxyman 根证书
  1. 打开 Setup 菜单 -> Automatic -> 点击 “New Terminal app…”
打开预配置的终端 App,无需任何配置即可抓取 Ruby 的 HTTP 流量
打开预配置的终端 App,无需任何配置即可抓取 Ruby 的 HTTP 流量
  1. 随后会显示新的终端 App。这是一个预配置好的 Apple 终端 App,会自动抓取并解密来自 Ruby 的 HTTPS 流量。
  2. 在新的终端 App 中再次运行 ruby client.rb,现在所有 HTTP/HTTPS 流量都会被 Proxyman 抓取并解密 🎉
运行 Ruby 脚本,在 Proxyman 中查看 net/http 或 http gem 的 HTTP 流量
运行 Ruby 脚本,在 Proxyman 中查看 net/http 或 http gem 的 HTTP 流量
  1. 完成。

  • 如果你想了解其背后的工作原理,请查阅 Automatic Setup 文档
  • 如果你更喜欢使用自己的终端(iTerm2 或 Hyper),可以查阅 Manual Setup 文档。

支持的 Ruby 库

Proxyman 开箱即支持:http、net/http、net/https、faraday、httparty 和 fastlane。

总结

抓取 Ruby 脚本(net/http 或 http gem)的 HTTP/HTTPS 流量既容易出错,又耗时。不过,借助 Proxyman 的 Automatic Setup,只需一键即可完成,无需任何配置。

该设置仅对 Proxyman 打开的新终端会话生效,因此请在该窗口中运行 Ruby 命令。你平时使用的 shell 配置文件不会被修改。如果某个库仍然没有出现,请打印它的代理设置,检查它是否禁用了环境变量代理,并确认同一终端可以向 https://httpbin.org/get 发送一个简单请求。


Proxyman 是一款高性能的 macOS 应用,可用于抓取和检查来自 iOS 设备、iOS 模拟器和 Android 设备上的应用及域名的 HTTP(s) 流量。

前往 https://proxyman.com/ 获取。

Noah Tran
Noah Tran

最后修订于 2026年7月18日。 明确了终端的作用范围,并新增了脚本仍未出现时的排查方法。

无需修改代码即可检查 Ruby 请求

在 Proxyman 中打开预配置的终端,在其中运行你的 Ruby 脚本,并查看完整的请求和响应。

下载 Proxyman