Capturar solicitudes HTTP/HTTPS de scripts Ruby (net/http)
Este artículo muestra cómo capturar el tráfico HTTP/HTTPS de scripts de Ruby con las bibliotecas net/http y http.
En este artículo veremos:
- Cómo capturar el tráfico HTTP/HTTPS de scripts de Ruby (net/http o la gema http) con Proxyman
1. Hacer una solicitud HTTPS con Ruby
Si eres desarrollador de Ruby, probablemente dediques mucho tiempo a hacer solicitudes HTTP(s) con estas bibliotecas:
- Net::HTTP: biblioteca integrada de Ruby. Ofrece una API completa para implementar un cliente que use el protocolo HTTP de solicitud-respuesta.
- http: es una gema de terceros, diseñada como una biblioteca cliente más sencilla de usar que Net::HTTP.
El siguiente código de ejemplo muestra cómo hacer una solicitud con ambas bibliotecas.
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)
Para ejecutarlo, guarda el ejemplo como client.rb → abre la app Terminal → ejecútalo con: ruby client.rb.

2. ¿Cómo capturar HTTP/HTTPS?
Problema actual
Por defecto, ambas bibliotecas (net/http y la gema http) no respetan el proxy HTTP del sistema ni las variables de entorno HTTP_PROXY y HTTPS_PROXY. Es posible que no veas su tráfico si usas Fiddler o Charles Proxy.
Para solucionarlo, hay que añadir manualmente la configuración del proxy. Este es un ejemplo de configuración para 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
}
Más información en net::http Proxy.
Es propenso a errores y consume mucho tiempo, porque hay que modificar el código fuente a mano.
Solución ✅
Afortunadamente, Proxyman incluye una función que te ayuda a capturar solicitudes y respuestas HTTP/HTTPS sin ninguna configuración.
- Descarga la última versión de la app para macOS en https://proxyman.com/
- Instala el certificado de Proxyman en tu Mac. Para ello, abre el menú Certificate → Install Certificate on this Mac… → haz clic en el botón "Install & Trust".

- Abre el menú Setup → Automatic → haz clic en "New Terminal app…"

- Se abre una nueva app Terminal. Es la app Terminal de Apple preconfigurada, que captura y descifra automáticamente el tráfico HTTPS de Ruby.
- Ejecuta de nuevo
ruby client.rben la nueva app Terminal y, ahora, Proxyman captura y descifra todo el tráfico HTTP/HTTPS 🎉

- ¡Listo!
- Si quieres entender cómo funciona por dentro, consulta la documentación de Automatic Setup
- Si prefieres usar tu propia terminal (iTerm2 o Hyper), consulta Manual Setup.
Bibliotecas de Ruby compatibles
Proxyman admite de forma nativa: http, net/http, net/https, faraday, httparty y fastlane.
Conclusión
Capturar el tráfico HTTP/HTTPS de scripts de Ruby (net/http o la gema http) es propenso a errores y consume mucho tiempo. Sin embargo, se puede hacer sin ninguna configuración y con un solo clic, usando Automatic Setup de Proxyman.
La configuración se aplica a la sesión de terminal que abre Proxyman, así que ejecuta el comando de Ruby en esa ventana. Tus archivos de shell habituales no se modifican. Si una biblioteca sigue sin aparecer, muestra su configuración de proxy, comprueba que no haya desactivado los proxies del entorno y confirma que la misma terminal puede hacer una solicitud sencilla a https://httpbin.org/get.
Proxyman es una app de alto rendimiento para macOS que permite a los desarrolladores capturar e inspeccionar el tráfico HTTP(s) de apps y dominios en dispositivos iOS, simuladores de iOS y dispositivos Android.
Descárgala en https://proxyman.com/
