Roynið proxy-evni við serstøkum Ruby Net::HTTP-klientum
Ger eina Net::HTTP-avrit fyri hvønn proxy-evni og steðga eftir tí svarinum, sum títt virki veruliga hevur brúk fyri.
Ein listi av proxium verður fyrst nyttigur, tá hvørt roynið ger ein klient, ið er stillaður fyri tað endapunktið. Fyri eitt GET gjøgnum HTTP-proxi uttan samsýning kann Net::HTTP brúkast soleiðis:
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
endFjórða argumentið velur proxy-portið; uri.host og uri.port vísa framvegis á málið. Fylla tey bæði dømisinnsløgini úr HTTP-proxilistanum, tá tú roynir eina loyvda almenna URL gjøgnum HTTP-endapkt uttan samsýning. request_uri varðveitir slóð sína og spurn. Dømið handterir vanligar sambands- og lesivillur og skrásetur HTTP-støðu, tá ein kemur.
Her endar eitt hvørt 2xx-svar leitingina. Um títt virki væntar eitt annað úrslit, greina tað kriteriað greitt. Ein vegvísing prógvar ikki sjálvvirkin, at ætlaða síðan varð heintað.
Halt sjálvvirkin endurtøku hóskandi fyri háttin. Eitt POST, ið fer út tíð eftir at kroppurin er sendur, kann longu hava broytt fjarrvirkið; at royna aftur gjøgnum eitt annað proxy kann endurtaka tað virknað. GET-dømið lovar ikki tryggari endurtøku av vilkærligum transaktiónum.