Аутентификация 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