Listo de proksioj utilas nur tiam, kiam ĉiu provo kreas klienton agorditan por tiu finpunkto. Por GET tra senajtentikaj HTTP-proksioj, Net::HTTP uzeblas jene:

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
end

La kvara argumento elektas la proksian pordon; uri.host kaj uri.port daŭre indikas la celon. Plenigu la du ekzemplajn erojn el la HTTP-proksia listo kiam vi kontrolas permesatan publikan URL-on tra senajtentikaj HTTP-finpunktoj. request_uri konservas sian vojon kaj demando. La ekzemplo traktas ordinarajn konektajn kaj legajn malsukcesojn kaj notas HTTP-staton kiam ĝi alvenas.

Ĉi tie ajna respondo 2xx finas la serĉadon. Se via operacio atendas alian rezulton, difinu tiun kriterion eksplicite. Alidirektado ne pruvas aŭtomate ke la dezirata paĝo estis akirita.

Tenu aŭtomatan ripeton taŭga por la metodo. POST kiu tempolimas post kiam ĝia korpo estis sendita eble jam ŝanĝis la malproksiman aplikaĵon; reprovi tra alia proksio povus ripeti tiun efikon. La GET-ekzemplo ne promesas sekuran ripeton de arbitraj transakcioj.

Rilataj artikoloj