如何配置Ruby Mechanize代理以通过Charles Web代理工作?

fea*_*ool 5 ruby proxy mechanize charles-proxy

我正在使用Ruby/Mechanize编写一个"自动填写表单"应用程序.它几乎可以工作.

我可以使用精彩的Charles Web代理查看服务器和我的Firefox浏览器之间的交换.现在我想用Charles查看服务器和我的应用程序之间的交换.

Charles代理端口8888.假设服务器位于https://my.host.com.一件事不起作用的是:

@agent ||= Mechanize.new do |agent|
  agent.set_proxy("my.host.com", 8888)
end
Run Code Online (Sandbox Code Playgroud)

这导致Net::HTTP::Persistent::Error:

...lib/net/http/persistent.rb:579:in `rescue in connection_for': connection refused: my.host.com:8888 (Net::HTTP::Persistent::Error)
Run Code Online (Sandbox Code Playgroud)

所以要么我给错了主机参数agent.set_proxy(host, ...),要么我没有正确配置查尔斯.(FWIW,我曾经能够做到这一点,但是自从那些宁静的日子以来,机械师和查尔斯已经成熟了几代......)

有任何想法吗?

Nei*_*ter 10

Web代理通常不仅仅由端口定义,而通常是完整的主机名.Charles很可能安装在localhost上.因此,以下调整可能适合您:

@agent ||= Mechanize.new do |agent|
  agent.set_proxy("localhost", 8888)
end
Run Code Online (Sandbox Code Playgroud)

  • 为了记录,"tap"是不必要的,Mechanize.new将自己产生到块. (3认同)