recaptcha ruby脚本
我正在编写一个应用程序,用户需要在浏览器之外解决一个recaptcha图像,基本上他们会从这样的页面看到图像http://www.google.com/recaptcha/api/noscript?k=6Lf5YAcAAAAAAILdm73fp007vvmaaDpFb6A5HLJP,提交解决方案,程序将执行休息。recaptcha ruby脚本
我正在使用机械化来自动化与该页面的交互,并且由于某种原因它总是给我一个500响应代码。我试着用机械化设置useragent无济于事。我对我应该做的事情感到不知所措,因为我检查过(使用wireshark)机械化发送/接收的数据包,并将它们与使用chrome获取代码时的数据包进行比较,并且它们几乎看起来很近一样! (这是一个帖子消息,他们有相同的参数,等等,并张贴到同一个地方)
我很确定这是明显的东西,但我一直在奋斗了几个小时,并会感谢一些帮助。
编辑代码
agent = Mechanize.new do |i|
i.user_agent_alias = 'Mac Safari'
i.log = Logger.new 'captcha.log'
end
agent.get(captcha_url) do |google_page| # captcha_url is a url like the one above
form = google_page.forms.first
form.recaptcha_response_field = captcha_text # captcha_text is user-input
form.
form.submit # this line is where the error is
end
嗯,我已经解决了这个问题。显然,机械化在标题中发送了不正确的“内容长度”。手动执行请求(从net/http发布)使其工作。
他们可能会做一些浏览器识别的除了检查用户代理,如检查头部中的数据的顺序。但这只是猜测。代码示例将有所帮助。
几乎一样吗?尝试发送完全相同的标题。
agent = Mechanize.new
headers = {
"Content-Type" => "application/x-www-form-urlencoded",
"User-Agent" => "MyAgent",
"Referer" => "Bob"
}
agent.post(url, {:foo => 'bar'}, headers)
如果这样行不通,请查看cookie。
嗯,那也不管用。就cookie而言,我会看什么样的东西? –
它们在您的脚本请求中与您的Chrome请求中的相同。重点是使脚本请求与chrome请求相同。 Wireshark不是很友好,你可以尝试一下提琴手或查尔斯代理来并排检查它们。 – pguardiario
嗯,这是一些非常疯狂的猜测。 – pguardiario
他们还能做些什么? –