gpt4 book ai didi

ruby - 打开 uri 抛出错误 => (URI::InvalidURIError)

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:03 25 4
gpt4 key购买 nike

我有一个用于测试目的的程序,我正在做的是抓取网络上的开放代理,并记录它们的信息,但是这是一种非常不同类型的代理抓取器,因为它创建了一堆在执行之前在文件内部之前的随机代理的数量例如:

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

我有两个问题:

  1. 这是否意味着代理无效,如果是这样,是否有办法跳过文件中的该行?可能通过使用 nextskip
  2. 如果这并不意味着代理无效,那么它是什么意思,我是不是在我的代码中做错了什么导致读取 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

最佳答案

当您使用 #each_line 遍历 ruby​​ 中的每一行时,它会为您提供每一行包括换行符。 Ruby 的 URI 库不喜欢换行符。简单替换

:proxy => "http://#{proxy}"

:proxy => "http://#{proxy.chomp}"

String#chomp将切断字符串末尾的所有换行符。

关于ruby - 打开 uri 抛出错误 => (URI::InvalidURIError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36067887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com