6

我在一个 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 暴露?

4

1 回答 1

15

你的问题的答案是肯定的,你可以通过tor代理。我过去做过,您将面临的问题:

  1. 如果你在 heroku 上运行,你将不得不在其他地方运行 tor

  2. Tor 的抓取速度非常慢

  3. 您需要设置一个可以与 tor (privoxy) 对话的代理

  4. 对于任何严重的刮擦,您都需要运行多个 tors

  5. 一段时间后,甚至您的 tor ip 也会被阻止。

让你觉得这是否值得麻烦。您可以为 IP 掩码代理服务付费,这可能是一种更简单的方法。

当我研究这个时,想想链接给了我一些方法:http: //www.howtoforge.com/ultimate-security-proxy-with-tor

于 2012-05-28T23:54:32.987 回答