Liiska proxy waxaa uun faa'iido leh marka isku day kastaa uu sameeyo macmiil loo habeeyay bartaas. Si GET loo sameeyo iyada oo loo marayo proxy-yada HTTP ee aan xaqiijin, Net::HTTP waxaa loo isticmaali karaa sidan:

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

Doodda afaraad waxay doorataa dekedda proxy; uri.host iyo uri.port weli waxay tilmaamayaan halka loo socdo. Buuxi labada tusaale ee liiska proxy-yada HTTP markaad hubinayso URL dadweyne oo la oggolaaday iyada oo loo marayo barta HTTP ee aan xaqiijin. request_uri waxay ilaalisaa waddadeeda iyo weydiinteeda. Tusaalu waxay maareysaa guuldarrooyinka caadiga ah ee isku xirka iyo akhrinta, waxayna diiwaangeliyaa xaaladda HTTP marka mid yimaado.

Halkan jawaab kasta oo 2xx ah waxay joojisaa raadinta. Haddii hawshaadu filanayso natiijo kale, si cad u qeex halbeeggaas. Dib-u-jiidhku si otomaatig ah ma caddeeyo in bogga la doonayay la helay.

Ku hay ku-celinta otomaatigga ah mid ku habboon habka. POST oo waqtigiisu dhamaado ka dib markii jirkiisa la diray waxaa laga yaabaa inuu horey u beddelay barnaamijka fog; isku day kale oo proxy kale lagu sameeyo waxay ku celin kartaa saameyntaas. Tusaalaha GET ma ballanqaado in si ammaan ah dib loo ciyaaro macaamilo aan loo kala saarin.

Maqaallo la xiriira