proxy စာရင်းသည် ကြိုးပမ်းမှုတစ်ခုစီက ထို endpoint အတွက် ပြင်ဆင်ထားသော client တစ်ခု ဖန်တီးမှသာ အသုံးဝင်လာသည်။ အထောက်အထားမဲ့ HTTP proxy များမှတစ်ဆင့် 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

စတုတ္ထ argument သည် proxy port ကို ရွေးချယ်သည်; uri.host နှင့် uri.port သည် ဦးတည်ရာကို အသိအမှတ်ပြုနေဆဲဖြစ်သည်။ အထောက်အထားမဲ့ HTTP endpoint များမှတစ်ဆင့် ခွင့်ပြုထားသော အများသုံး URL ကို စစ်ဆေးသောအခါ ဥပမာရှိ အချက်နှစ်ချက်ကို HTTP proxy စာရင်းမှ ဖြည့်ပါ။ request_uri သည် ၎င်း၏လမ်းကြောင်းနှင့် query ကို ထိန်းသိမ်းသည်။ ဥပမာသည် သာမန် ချိတ်ဆက်မှုနှင့် ဖတ်ရှုမှု မအောင်မြင်မှုများကို ကိုင်တွယ်ပြီး HTTP အခြေအနေ ရောက်လာသောအခါ မှတ်တမ်းတင်သည်။

ဤနေရာတွင် မည်သည့် 2xx တုံ့ပြန်မှုမဆို ရှာဖွေမှုကို အဆုံးသတ်သည်။ သင့်လုပ်ဆောင်ချက်က အခြားရလဒ်ကို မျှော်လင့်ပါက ထိုစံနှုန်းကို အတိအကျ သတ်မှတ်ပါ။ ပြန်ညွှန်းခြင်းသည် လိုချင်သော စာမျက်နှာ ရရှိပြီဟု အလိုအလျောက် သက်သေမပြပါ။

အလိုအလျောက် ထပ်ခါပြုလုပ်မှုကို method နှင့် သင့်လျော်အောင် ထားပါ။ body ပို့ပြီးနောက် အချိန်ကုန်သွားသော POST သည် အဝေးမှ အပ်ပလီကေးရှင်းကို ပြောင်းလဲပြီးဖြစ်နိုင်သည်; အခြား proxy ဖြင့် ထပ်စမ်းခြင်းက ထိုအကျိုးသက်ရောက်မှုကို ထပ်ဖြစ်စေနိုင်သည်။ GET ဥပမာသည် မတရားသော အရောင်းအဝယ်များကို ဘေးကင်းစွာ ပြန်လည်လုပ်ဆောင်နိုင်မည်ဟု ကတိမပေးပါ။

ဆက်စပ်ဆောင်းပါးများ