ਵੱਖਰੇ 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 ਅਜੇ ਵੀ ਮੰਜ਼ਿਲ ਦਰਸਾਉਂਦੇ ਹਨ। ਬਿਨਾਂ ਪ੍ਰਮਾਣੀਕਰਨ ਵਾਲੇ HTTP ਐਂਡਪੁਆਇੰਟਾਂ ਰਾਹੀਂ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਜਨਤਕ URL ਜਾਂਚਦੇ ਸਮੇਂ ਉਦਾਹਰਨ ਦੀਆਂ ਦੋਵੇਂ ਐਂਟਰੀਆਂ HTTP ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਤੋਂ ਭਰੋ। request_uri ਆਪਣਾ ਰਾਹ ਅਤੇ ਕਵੈਰੀ ਬਣਾਈ ਰੱਖਦਾ ਹੈ। ਉਦਾਹਰਨ ਆਮ ਕਨੈਕਸ਼ਨ ਅਤੇ ਪੜ੍ਹਨ ਦੀਆਂ ਅਸਫਲਤਾਵਾਂ ਸੰਭਾਲਦੀ ਹੈ ਅਤੇ HTTP ਸਥਿਤੀ ਆਉਣ 'ਤੇ ਦਰਜ ਕਰਦੀ ਹੈ।
ਇੱਥੇ ਕੋਈ ਵੀ 2xx ਜਵਾਬ ਖੋਜ ਖਤਮ ਕਰ ਦਿੰਦਾ ਹੈ। ਜੇ ਤੁਹਾਡਾ ਕੰਮ ਕੋਈ ਹੋਰ ਨਤੀਜਾ ਉਮੀਦ ਕਰਦਾ ਹੈ, ਤਾਂ ਉਹ ਮਾਪਦੰਡ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਪਰਿਭਾਸ਼ਿਤ ਕਰੋ। ਰੀਡਾਇਰੈਕਟ ਆਪਣੇ ਆਪ ਇਹ ਸਾਬਤ ਨਹੀਂ ਕਰਦਾ ਕਿ ਲੋੜੀਂਦਾ ਪੇਜ ਮਿਲ ਗਿਆ ਹੈ।
ਆਟੋਮੈਟਿਕ ਦੁਹਰਾਓ ਨੂੰ ਢੰਗ ਦੇ ਅਨੁਕੂਲ ਰੱਖੋ। ਬਾਡੀ ਭੇਜਣ ਤੋਂ ਬਾਅਦ ਸਮਾਂ ਖਤਮ ਹੋਣ ਵਾਲਾ POST ਦੂਰਲੀ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਬਦਲ ਸਕਦਾ ਹੈ; ਕਿਸੇ ਹੋਰ ਪ੍ਰੌਕਸੀ ਰਾਹੀਂ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਨਾਲ ਉਹ ਪ੍ਰਭਾਵ ਦੁਹਰਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। GET ਉਦਾਹਰਨ ਮਨਮਾਨੇ ਲੈਣ-ਦੇਣ ਦੀ ਸੁਰੱਖਿਅਤ ਮੁੜ-ਚਲਾਉਣ ਦਾ ਵਾਅਦਾ ਨਹੀਂ ਕਰਦੀ।