პროქსების სია სასარგებლო ხდება მხოლოდ მაშინ, როცა ყოველი ცდა ქმნის ამ ბოლო წერტილისთვის კონფიგურირებულ კლიენტს. ავტორიზაციის გარეშე HTTP პროქსებით GET-ის შესასრულებლად Net::HTTP ასე გამოიყენება:

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

მეოთხე არგუმენტი ირჩევს პროქსის პორტს; uri.host და uri.port კვლავ მიუთითებენ დანიშნულებაზე. შეავსეთ მაგალითის ორი ჩანაწერი HTTP პროქსების სიიდან, როცა ამოწმებთ დაშვებულ საჯარო URL-ს ავტორიზაციის გარეშე HTTP ბოლო წერტილებით. request_uri ინარჩუნებს თავის გზას და მოთხოვნას. მაგალითი ამუშავებს ჩვეულებრივი კავშირისა და კითხვის წარუმატებლობებს და აღრიცხავს HTTP სტატუსს, როცა ის მოვა.

აქ ნებისმიერი 2xx პასუხი ასრულებს ძიებას. თუ თქვენი ოპერაცია სხვა შედეგს ელოდება, ეს კრიტერიუმი ცხადად განსაზღვრეთ. გადამისამართება ავტომატურად არ ამტკიცებს, რომ სასურველი გვერდი მიღებულ იქნა.

შეინახეთ ავტომატური გამეორება მეთოდის შესაბამისად. POST, რომელსაც ვადა გასდის სხეულის გაგზავნის შემდეგ, შესაძლოა უკვე შეცვალა დისტანციური აპლიკაცია; სხვა პროქსით ხელახლა ცდამ შეიძლება გაიმეოროს ეს ეფექტი. GET მაგალითი არ გვპირდება თვითნებური ტრანზაქციების უსაფრთხო გამეორებას.

დაკავშირებული სტატიები