Proxy-Kandidate mat getrennten Ruby Net::HTTP-Cliënten testen
Erstell eng Net::HTTP-Instanz pro Proxy-Kandidat a stoppt no der Äntwert, déi deng Operatioun wierklech brauch.
Eng Lëscht vu Proxye gëtt eréischt nëtzlech, wann all Versuch e Client erstellt, deen op deen Endpunkt agestallt ass. Fir e GET iwwer HTTP-Proxye ouni Authentifizéierung kann Net::HTTP sou benotzt ginn:
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
endDat véiert Argument wielt de Proxy-Port; uri.host an uri.port bezeechnen nach ëmmer den Zil. Fëll déi zwou Beispill-Andräg aus der HTTP-Proxy-Lëscht, wann s du eng erlaabt ëffentlech URL iwwer HTTP-Endpunkten ouni Authentifizéierung iwwerpréifs. request_uri behält säi Wee a seng Ufro. D'Beispill behandelt gewéinlech Verbindungs- a Liesfeeler a vermierkt en HTTP-Status, wann een ukënnt.
Hei mécht all 2xx-Äntwert d'Sich op en Enn. Wa deng Operatioun en anert Resultat erwaart, definéier dat Kriterium ausdrécklech. Eng Ëmleetung beweist net automatesch, datt déi gewënscht Säit ofgeruff gouf.
Hal d'automatesch Widderhuelung passend zur Method. En POST, deen no dem Verschécke vu sengem Body an en Timeout leeft, huet d'Géigeniwwer-Applikatioun vläicht scho geännert; en neien Versuch iwwer en anere Proxy kann deen Effekt widderhuelen. D'GET-Beispill versprécht keng sécher Widderhuelung vu beléifegen Transaktiounen.