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