[英]Monkey patching use_ssl= method works for Net:HTTP but not for OpenURI in Ruby 1.9.3?
[英]Ruby Proxy Authentication GET/POST with OpenURI or net/http
我正在使用 ruby 1.9.3 並嘗試使用open-uri
獲取 url 並嘗試使用Net:HTTP
發布
我正在嘗試對兩者都使用代理身份驗證:
嘗試使用net/http
發出POST
請求:
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
對於我無法進行POST
的open-uri
,我使用:
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 身份驗證? 有沒有人經歷過這種暴行?
嘗試:
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 身份驗證的代理的支持。 如果您查看我的上一個拉取請求,您將看到基本的實現。
編輯:希望這會讓你朝着正確的方向前進。
Net::HTTP::Proxy(proxy_uri.host, proxy_uri.port,"username","password").start('whatismyipaddress.com') do |http|
puts http.get('/').body
end
編輯 11/24/2020 : Net::HTTP::Proxy
現在被認為已過時。 您現在可以在創建Net::HTTP
的新實例時配置代理。 有關詳細信息,請參閱Net::HTTP.new的文檔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.