Jaribu wagombea wa proksi kwa wateja tofauti wa Ruby Net::HTTP
Unda Net::HTTP moja kwa kila mgombea wa proksi na usimame kulingana na jibu ambalo operesheni yako inahitaji kwelikweli.
Orodha ya proksi huwa na maana tu pale kila jaribio linapounda mteja aliyesanidiwa kwa mwisho huo. Kwa GET kupitia proksi za HTTP zisizo na uthibitishaji, Net::HTTP inaweza kutumika hivi:
require 'net/http'
uri = URI('https://www.example.com/status')
proxies = ['http://proxy-a.example:8080',
'http://proxy-b.example:8080']
proxies.each do |value|
proxy = URI(value)
http = Net::HTTP.new(uri.host, uri.port, proxy.host, proxy.port)
http.use_ssl = uri.scheme == 'https'
http.open_timeout = 5
http.read_timeout = 10
begin
response = http.get(uri.request_uri)
puts "#{proxy.host}:#{proxy.port} #{response.code}"
break if response.is_a?(Net::HTTPSuccess)
rescue Net::OpenTimeout, Net::ReadTimeout, SocketError, SystemCallError, IOError => error
warn "#{proxy.host}:#{proxy.port} #{error.class}"
end
endHoja ya nne huchagua bandari ya proksi; uri.host na uri.port bado zinaonyesha lengwa. Jaza maingizo mawili ya mfano kutoka orodha ya proksi za HTTP unapokagua URL ya umma inayoruhusiwa kupitia vituo vya HTTP visivyo na uthibitishaji. request_uri huhifadhi njia na swali lake. Mfano hushughulikia hitilafu za kawaida za muunganisho na usomaji na hurekodi hali ya HTTP inapofika.
Hapa jibu lolote la 2xx humaliza utafutaji. Ikiwa operesheni yako inatarajia matokeo mengine, eleza kigezo hicho wazi. Uelekezaji upya hauthibitishi kiotomatiki kuwa ukurasa uliotaka umepatikana.
Weka urudiaji wa kiotomatiki ukiendana na mbinu. POST inayopitwa na muda baada ya mwili wake kutumwa huenda tayari imebadilisha programu ya mbali; kujaribu tena kupitia proksi nyingine kunaweza kurudia athari hiyo. Mfano wa GET hauahidi uchezaji upya salama wa miamala yoyote.