抓取 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) 请求:
以下示例代码演示了如何使用这两个库发起请求。
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。

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 请求和响应。
- 前往 https://proxyman.com/ 下载最新版 macOS App
- 在你的 Mac 上安装 Proxyman 证书。打开 Certificate 菜单 -> Install Certificate on this Mac… -> 点击 “Install & Trust” 按钮即可完成安装。

- 打开 Setup 菜单 -> Automatic -> 点击 “New Terminal app…”

- 随后会显示新的终端 App。这是一个预配置好的 Apple 终端 App,会自动抓取并解密来自 Ruby 的 HTTPS 流量。
- 在新的终端 App 中再次运行
ruby client.rb,现在所有 HTTP/HTTPS 流量都会被 Proxyman 抓取并解密 🎉

- 完成。
- 如果你想了解其背后的工作原理,请查阅 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/ 获取。
