Bain triail as iarrthóirí seachfhreastalaí le cliaint Ruby Net::HTTP ar leithligh
Cruthaigh aon chás Net::HTTP amháin in aghaidh gach iarrthóra seachfhreastalaí agus stop de réir an fhreagra a theastaíonn go fírinneach ó d'oibríocht.
Ní bhíonn liosta seachfhreastalaithe úsáideach go dtí go gcruthaíonn gach iarracht cliant atá cumraithe don chríochphointe sin. Le haghaidh GET trí sheachfhreastalaithe HTTP gan fhíordheimhniú, is féidir Net::HTTP a úsáid mar seo:
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
endRoghnaíonn an ceathrú hargóint port an tseachfhreastalaí; sainaithníonn uri.host agus uri.port an ceann scríbe fós. Líon an dá iontráil samplacha ón liosta seachfhreastalaithe HTTP agus tú ag seiceáil URL poiblí ceadaithe trí chríochphointí HTTP gan fhíordheimhniú. Coimeádann request_uri a chonair agus a iarratas. Láimhseálann an sampla teipeanna coitianta ceangail agus léitheoireachta agus taifeadann sé stádas HTTP nuair a thagann ceann.
Anseo cuireann aon fhreagra 2xx deireadh leis an gcuardach. Má tá toradh eile ag teastáil ó d'oibríocht, sainmhínigh an critéar sin go sainráite. Ní chruthaíonn atreorú go huathoibríoch gur aisghabhadh an leathanach atá uait.
Coinnigh an t-athdéanamh uathoibríoch oiriúnach don mhodh. B'fhéidir go bhfuil POST a théann as am tar éis a chomhlacht a sheoladh tar éis an feidhmchlár cianda a athrú cheana; d'fhéadfadh athiarracht trí sheachfhreastalaí eile an éifeacht sin a athdhéanamh. Ní gheallann sampla GET athsheinm shábháilte d'idirbhearta treallacha.