د پروکسي لیست یوازې هغه وخت ګټور کیږي چې هر هڅه د هماغه پای ټکي لپاره تنظیم شوی کلاینټ جوړ کړي. د غیر تصدیق شویو HTTP پروکسي له لارې د GET لپاره Net::HTTP داسې کارول کیدای شي:

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

څلورم دلیل د پروکسي پورټ غوره کوي؛ uri.host او uri.port لا هم منزل ښیي. دوه بېلګې د HTTP پروکسي لیست څخه ډک کړئ کله چې د غیر تصدیق شویو HTTP پای ټکو له لارې اجازه لرونکی عامه URL ګورئ. request_uri خپله لاره او پوښتنه ساتي. بېلګه عادي د اړیکې او لوستلو ناکامي سمبالوي او د HTTP حالت رارسیدو ته ثبتوي.

دلته هر 2xx ځواب لټون پای ته رسوي. که ستاسو عملیات بل نتیجه تمه لري، هغه معیار په روښانه توګه تعریف کړئ. لیږدول په خپله نه ثابتوي چې غوښتل شوې پاڼه ترلاسه شوې ده.

اتوماتیک تکرار د میتود سره سم وساتئ. هغه POST چې د خپل بدن له لیږلو وروسته وخت تیر شي کیدای شي لیرې غوښتنلیک لا بدل کړی وي؛ د بل پروکسي له لارې بیا هڅه کول هغه اغیز تکرارولی شي. د GET بېلګه د خپل سري معاملو د خوندي بیا پلي کیدو ژمنه نه کوي.

اړوندې مقالې