如何配置 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 Mechanize 登录亚马逊

Ruby登录使用mechanize进行spotify

ruby 使用CLI的Magento DB修复工具 - Ruby + Mechanize

ruby 使用Mechanize的Hacky爬虫

在Ruby中满足条件时强制Mechanize返回HTTP Success

ruby 使用docs提供的代码测试Mechanize gem