我有一個程序,我用於測試目的,我正在做的是爲web開放代理,並記錄他們的信息,但是這是一個非常不同類型的代理刮刀的,因爲它例如在執行前創建了一堆文件裏面前隨機代理:Open-uri拋出錯誤=>(URI :: InvalidURIError)
def create_possibles
puts "Creating random possible proxies..".green.bold
1.times do
port = rand(2000..8080)
1.times do
ip = Array.new(4){rand(256)}.join('.')
possible_proxy = "#{ip}:#{port}"
File.open("possible_proxies.txt", "a") {|s| s.puts(possible_proxy)}
end
end
end
#<= 189.96.49.87:7990
我想與「可能代理」要做的就是打開它,看看它的工作原理,但是當我使用下面的代碼它只是拋出該錯誤:
def check_possibles
IO.read("possible_proxies.txt").each_line do |proxy|
puts open('http://google.com', :proxy => "http://#{proxy}")
end
end
我有兩個問題:
- 這是否意味着該代理是無效的,如果是的話是否有辦法跳過文件中的行?可能通過使用
next
或skip
? - 如果這並不意味着代理無效,那麼它是什麼意思,我在我的代碼中做錯了什麼,它在哪裏讀取url錯誤?
完整的錯誤:
C:/Ruby22/lib/ruby/2.2.0/uri/rfc3986_parser.rb:66:in `split': bad URI(is not URI
?): http://189.96.49.87:7990 (URI::InvalidURIError)
編輯:
有人告訴我嘗試URI.parse
,我也得到了同樣的錯誤:
C:/Ruby22/lib/ruby/2.2.0/uri/rfc3986_parser.rb:66:in `split': bad URI(is not URI
?): http://195.239.61.210:4365 (URI::InvalidURIError) #<= Different IP
我完全不解,'http://189.96.49.87:7990'是一個完全有效的URI。當你嘗試'URI.parse(「http://#{proxy}」)'時會發生什麼? – Shelvacu
@shelvacu我不知道讓我發現真的很快 – 13aal
@shelvacu我試着用不同的IP C:/Ruby22/lib/ruby/2.2.0/uri/rfc3986_parser.rb:66:在'split'中:壞的URI(不是URI ?):http://195.239.61.210:4365(URI :: InvalidURIError) – 13aal