我在一个rake任务中使用Mechanize,该任务由Heroku上的ruby应用程序的调度程序加载项运行。在脚本中,我正在登录一个网页,直到最近脚本无法再登录时才会工作。当我开始调试时,当我在heroku控制台中运行脚本而不是在本地控制台上时,Mechanize会显示不同的表单字段。
本地ruby控制台显示以下字段:
>> asf.fields.each do |f| puts f.name end
__VIEWSTATE
__PREVIOUSPAGE
__EVENTVALIDATION
login$field
password$field
Heroku控制台显示了一个未出现在html源代码中的附加字段:
>> asf.fields.each do |f| puts f.name end
__VIEWSTATE
__PREVIOUSPAGE
__EVENTVALIDATION
login$field
password$field
captcha$txtCaptcha
当我发出:
>> asf.click_button
更新的 我尝试将用户代理更改为几个不同的浏览器别名,但没有运气。似乎来自Heroku的IP地址导致了验证码的提供。是否可以通过代理服务器发出请求或使用Tor来防止IP暴露?
答案 0 :(得分:15)
回答你的问题是肯定的,你可以通过tor代理。我过去已经做过,你将遇到的问题:
如果您在heroku上运行,则必须在其他地方运行
Tor的抓取速度非常慢
您需要设置一个可与tor(privoxy)对话的代理
对于任何严重的刮擦,你需要运行多个躯干
一段时间后,即使是你的手枪也会受阻。
让你觉得这是否值得麻烦。您可以为ip masking代理服务付费,这可能是一种更容易的方法。
在我调查时,想想链接让我有所帮助:http://www.howtoforge.com/ultimate-security-proxy-with-tor