Аутентификация Ruby Proxy GET/POST с OpenURI или net/http

Я использую 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-аутентификацией

Я пробовал (для open-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? Кто-нибудь прошел через это злодеяние?

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

Что касается Net::HTTP, я недавно реализовал поддержку прокси с http-аутентификацией в библиотеке- оболочке Net:: HTTP под названием http. Если вы посмотрите на мой последний pull-запрос, вы увидите базовую реализацию.

РЕДАКТИРОВАТЬ: Надеюсь, это поможет вам двигаться в правильном направлении.

Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port,"username","password").start('whatismyipaddress.com') do |http| 
  puts http.get('/').body
end
Другие вопросы по тегам