'n Lys vol proxy's word eers nuttig wanneer elke poging 'n kliënt skep wat vir daardie eindpunt opgestel is. Vir 'n GET deur ongeverifieerde HTTP-proxies kan Net::HTTP so gebruik word:

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

Die vierde argument kies die proxy-poort; uri.host en uri.port dui steeds die bestemming aan. Vul die twee voorbeeldinskrywings uit die HTTP-proxylys wanneer jy 'n toegelate openbare URL deur ongeverifieerde HTTP-eindpunte toets. request_uri behou sy pad en navraag. Die voorbeeld hanteer gewone verbindings- en leesfoute en teken 'n HTTP-status aan wanneer een opdaag.

Hier beëindig enige 2xx-reaksie die soektog. As jou bewerking 'n ander resultaat verwag, definieer daardie maatstaf uitdruklik. 'n Herverwysing bewys nie outomaties dat die verlangde bladsy verkry is nie.

Hou outomatiese herhaling gepas by die metode. 'n POST wat ná die stuur van sy liggaam 'n tyd uitput, het die afgeleë toepassing moontlik al verander; om dit weer deur 'n ander proxy te probeer, kan daardie uitwerking herhaal. Die GET-voorbeeld belowe nie veilige herhaling van willekeurige transaksies nie.

Verwante artikels