5

我正在使用 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

这导致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)

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

有任何想法吗?

4

1 回答 1

10

Web 代理通常不仅仅由端口定义,而是通常是完整的主机名。查尔斯很可能安装在本地主机上。因此,以下调整可能对您有用:

@agent ||= Mechanize.new do |agent|
  agent.set_proxy("localhost", 8888)
end
于 2013-08-21T06:13:04.447 回答