Isku day musharrixiinta proxy ee leh macaamiil Ruby Net::HTTP gooni ah
Samee hal Net::HTTP mid kasta oo musharrix proxy ah, kadibna jooji iyadoo eegaysa jawaabta hawshaadu dhab ahaan u baahan tahay.
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
endDoodda 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.