Прокси талапкерлерин өзүнчө Ruby Net::HTTP кардарлары менен сынап көрүңүз
Ар бир прокси талапкери үчүн бир Net::HTTP объектисин түзүп, операцияңызга чындап керек болгон жоопко жараша токтотуңуз.
Прокси тизмеси ар бир аракет ошол акыркы чекитке ылайыкталган кардар түзгөндө гана пайдалуу болот. Аутентификациясыз 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 мисалы каалаган транзакцияларды коопсуз кайра аткарууга убада бербейт.