跳到主要内容

Ruby

使用 Proxyman Automatic Setup 抓取 Ruby 脚本和服务的 HTTP/HTTPS 流量,兼容 http、net/http、net/https、httparty 和 faraday。

1. 全新自动方案(v4.7.0 或更高版本)✅​

Proxyman v4.7.0 或更高版本可以一键抓取 Ruby 的 HTTP/HTTPS 流量。

  • 一键方案:无需手动设置 HTTP Proxy,也无需手动信任自签名证书。
  • 支持多种 Ruby 库:http、net/http、net/https、httparty 和 faraday。

使用方法:​

  1. 打开 Proxyman -> Setup Menu -> Automatic Setup
  2. 点击 “Open New Terminal”
  3. 如有需要,请允许 AppleScript 的权限请求
  4. 会打开一个新的 Terminal 窗口,在其中启动 Ruby 后端服务或运行脚本,Proxyman 会自动抓取所有流量
  5. 完成 ✅
Proxyman Automatic Setup 窗口,其中的 Open New Terminal 按钮可以抓取 net/http 等 Ruby 库的流量

抓取 Ruby 流量

1. 为 Ruby 设置 HTTP Proxy​

如果存在 http_proxy 环境变量,Net::HTTP 会自动使用其中的代理。

因此可以这样设置:

ENV['http_proxy'] = 'http://127.0.0.1:9090' # your http://address:port here

这样,Net::HTTP 默认会将所有请求都通过该代理发送。

参考:https://stackoverflow.com/questions/15792999/how-to-set-a-proxy-in-rubys-net-http

2. 在 Ruby 中安装 Proxyman 证书​

默认情况下,macOS 上的 Ruby 可能不信任 Proxyman 的自签名证书,因此在拦截 HTTPS 流量时可能会出现 SSL 错误。

你可以通过 SSL_CERT_FILE 环境变量告诉 Ruby 使用 Proxyman 证书。

$ env SSL_CERT_FILE=~/.proxyman/proxyman-ca.pem ruby my_script.rb
信息

较新版本的 Proxyman 将证书存放在 ~/Library/Application Support/com.proxyman.NSProxy/app-data/proxyman-ca.pem。如果你的 Mac 上不存在 ~/.proxyman/proxyman-ca.pem,请改用该路径,或者从 Certificate 菜单 -> Export -> Root Certificate as PEM 导出证书。

了解更多​