我想做的是这个
我有一个ip | port
的代理列表现在,Mechanize正在使用这些代理,我已经设置了
open_timeout = 20
read_timeout = 20
我想要的是重试,但即使我有" proxies = @ proxies.order(" RANDOM()"),它也将使用相同的代理重试。首先&# 34;它不会加载新的代理,而是从缓存加载
这是我使用的代码:
begin
proxies = @proxies.order("RANDOM()").first
proxy_ip = proxies.ip
proxy_port = proxies.port
puts proxy_ip
puts proxy_port
agent = Mechanize.new
agent.open_timeout = 20
agent.read_timeout = 20
agent.set_proxy(proxy_ip, proxy_port)
page = agent.get("http://whatismyip.org/"
rescue
puts "oh shit, error"
retry
end
doc = page.parser
ip_ad = doc.css('span').text
puts ip_ad
现在我的问题是如何使其加载新代理而不是从缓存中使用
答案 0 :(得分:0)
对于任何来自谷歌的人来说,这就是我解决它的方式
offset = rand(Proxy.count)
proxies = @proxies.offset(offset).first
我使用偏移量,它就像魅力一样,这是
开始 page = minion.submit(form,button)
rescue Mechanize::ResponseCodeError => e
offset = rand(Proxy.count)
proxies = @proxies.offset(offset).first
proxy_ip = proxies.ip
proxy_port = proxies.port
puts proxy_ip
puts proxy_port
minion.open_timeout = 3.0
minion.read_timeout = 3.0
minion.cookie_jar.clear!
minion.max_history = 0
#minion.set_proxy(proxy_ip, proxy_port)
sleep 5.0
if page.parser.xpath('//h2[contains(@class,"name")]').text == "Ingen träff"
puts "ingen träff"
else
puts "retrying"
retry
end
end
享受家伙