如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作?
Posted
技术标签:
【中文标题】如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作?【英文标题】:How do I configure a Ruby Mechanize agent to work through the Charles web proxy? 【发布时间】:2013-08-21 04:04:12 【问题描述】:我正在使用 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, ...)
提供了错误的主机参数,要么我没有正确配置Charles。 (FWIW,我曾经能够做到这一点,但 Mechanize 和 Charles 自那些太平时代以来已经成熟了好几代......)
有什么想法吗?
【问题讨论】:
【参考方案1】:Web 代理通常不是由 一个端口定义的,而通常是一个完整的主机名。查尔斯很可能安装在本地主机上。因此,以下调整可能对您有用:
@agent ||= Mechanize.new do |agent|
agent.set_proxy("localhost", 8888)
end
【讨论】:
为了记录,tap
是不必要的,Mechanize.new 将自己交给块。
谢谢——我应该意识到 localhost 是正确的。它几乎可以工作——现在我所要做的就是处理我的certificate verify failed
错误。不同的问题...
@pguardiario:感谢您的提示。相应地编辑了 OP(和我的源代码)。以上是关于如何配置 Ruby Mechanize 代理以通过 Charles Web 代理工作?的主要内容,如果未能解决你的问题,请参考以下文章
ruby 使用CLI的Magento DB修复工具 - Ruby + Mechanize