Probeer proxikandidate met afsonderlike Ruby Net::HTTP-kliënte
Skep een Net::HTTP-instansie per proxikandidaat en stop volgens die reaksie wat jou bewerking werklik nodig het.
'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
endDie 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.