有没有办法使用Ruby的net / http将表单数据发布到http代理?

时间:2010-05-26 01:05:55

标签: ruby proxy squid

我有一个基本的Squid服务器设置,我正在尝试使用Ruby的Net :: HTTP :: Proxy类将表单数据的POST发送到指定的HTTP端点。

我以为我可以做以下事情:

  Net::HTTP::Proxy(my_host, my_port).start(url.host) do |h|
    req = Net::HTTP::Post.new(url.path)
    req.form_data = { "xml" => xml }
    h.request(req)
  end

但是,唉,代理与非代理Net :: HTTP类似乎没有使用代理IP地址。我的远程服务响应告诉我它收到了来自错误IP地址的请求,即:不是代理。我正在寻找一种特定的方法来编写程序,以便我可以通过代理成功发送表单。救命? :)

2 个答案:

答案 0 :(得分:0)

哈,原来这是正确的方法,我的问题实际上是Squid和我推动的API。有趣的提示与此问题有关,如果您使用Squid代理服务器代理,您可能想要添加此服务器配置选项:

header_access X-Forwarded-For deny all

这将确保代理完全忽略与HTTP端点有关的调用者IP地址的任何关系。

答案 1 :(得分:0)

您可能还想查看基于Perl的WWW :: Mechanize的mechanize gem。如果它像Perl那样(并且我被引导相信它),那么它就包含了你正在处理的许多常见混乱。

Ruby:http://mechanize.rubyforge.org/

Perl:http://search.cpan.org/dist/WWW-Mechanize/