红宝石代理验证GET / POST与OpenURI或net / HTTP(Ruby Proxy Au

2019-09-16 09:00发布

我使用Ruby 1.9.3并尝试使用open-uri得到一个URL,并尝试使用发布Net:HTTP

我试着去使用代理认证两种:

试图做一个POST用请求net/http

require 'net/http'
require 'open-uri'
http = Net::HTTP.new("google.com", 80)
headers = { 'User-Agent' => 'Ruby 193'}

resp, data = http.post("/", "name1=value1&name2=value2", headers)
puts data

而对于open-uri ,我不能拿去做POST我用:

data = open("http://google.com/","User-Agent"=> "Ruby 193").read

我将如何修改这些使用带有HTTP认证代理

我试过(开放-URI)

data = open("http://google.com/","User-Agent"=> "Ruby 193", :proxy_http_basic_authentication => ["http://proxy.com:8000/", "proxy-user", "proxy-password"]).read

但是,所有我会得到一个OpenURI::HTTPError: 407 Proxy Authentication Required 。 我已经验证一切,它在相同的认证和代理的详细信息,浏览器的工作原理,但我不能让Ruby来做到这一点。

我将如何修改上面的代码正确添加HTTP认证? 有没有人通过这一暴行到哪里去了?

Answer 1:

尝试:

require "open-uri"
proxy_uri = URI.parse("http://proxy.com:8000")

data = open("http://www.whatismyipaddress.com/", :proxy_http_basic_authentication => [proxy_uri, "username", "password"]).read
puts data

至于网:: HTTP,我最近实施了以http认证代理支持成网:: HTTP包装库称为HTTP 。 如果你看一下我的最后拉的要求,你会看到的基本实现。

编辑:希望这将让你在正确的方向前进。

Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port,"username","password").start('whatismyipaddress.com') do |http| 
  puts http.get('/').body
end


文章来源: Ruby Proxy Authentication GET/POST with OpenURI or net/http