Прокси жагсаалт нь оролдлого бүр тухайн төгсгөлийн цэгт тохируулсан клиент үүсгэж байж л хэрэгтэй болно. Баталгаажуулалтгүй 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 хараахан очих газрыг заана. Зөвшөөрөгдсөн нийтийн URL-г баталгаажуулалтгүй HTTP төгсгөлийн цэгээр шалгахдаа жишээний хоёр бичлэгийг HTTP прокси жагсаалтаас бөглөнө үү. request_uri өөрийн зам, асуулгыг хадгална. Жишээ нь ердийн холболт, уншилтын алдааг шийдвэрлэж, HTTP төлөв ирэхэд бүртгэнэ.

Энд аливаа 2xx хариулт хайлтыг дуусгана. Хэрэв таны үйлдэл өөр үр дүн хүлээж байвал тэр шалгуурыг тодорхой тодорхойл. Дахин чиглүүлэлт нь хүссэн хуудас авсан гэдгийг автоматаар нотлохгүй.

Автомат давталтыг аргадаа тохируулан хадгал. Биеийг илгээсний дараа хугацаа дууссан POST алсын программд өөрчлөлт оруулсан байж болно; өөр проксигоор дахин оролдох нь тэр нөлөөг давтаж болно. GET жишээ нь дурын гүйлгээг аюулгүй дахин тоглуулахыг амлаагүй.

Холбоотой нийтлэлүүд