ಪ್ರತ್ಯೇಕ 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 ಉದಾಹರಣೆ ಅನಿಯಂತ್ರಿತ ವಹಿವಾಟುಗಳ ಸುರಕ್ಷಿತ ಮರುಪ್ಲೇಗೆ ಭರವಸೆ ನೀಡುವುದಿಲ್ಲ.