2013-05-08 58 views
11

我正在使用PhantomJS登录网站,验证码必须手动输入。 如何将验证码图像保存到磁盘,然后在PhantomJS控制台中手动输入验证码?有没有办法从PhantomJS的keybord读取用户输入?

+0

保存文本..不是验证码提供的文本 – matzone 2013-05-09 00:01:09

+1

没有文字,只有图像。你必须自己(人类)认可,然后提交可识别的文本。 – aztack 2013-05-09 00:04:25

+0

像[this](http://labs.abeautifulsite.net/simple-php-captcha/)例子,简单的方法从PHP中的文本制作capctha .. – matzone 2013-05-09 00:18:31

回答

1

你所问的声音几乎不可能。

如果我不顾一切地做这样的事我可能会考虑以下方法:

  • 抢捕获,保存到磁盘作为图像
  • 输出到控制台,告诉用户图像准备
  • 使用window.setTimeout以等待30秒
  • 然后用户编辑一个文本文件(如/tmp/code.txt)与捕捉结果
  • 后30秒window.setTimeout无线回调我会读/tmp/code.txt

这不太好。但我想不出任何其他方式。

15

我有同样的问题,只是使用系统模块结合page.render()和一些参数传递给page.evaluate。

page.render('pagewithcatpcha.jpg'); 
page.injectJs('http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js'); 

var arg1 = consoleRead(); 

page.evaluate(function (arg1) { 
$('.yourFormBox').val(arg1); 
$('.yourForm').submit(); 
}, arg1); 

function consoleRead() { 
var system = require('system'); 

system.stdout.writeLine('CaptchaCode: '); 
var line = system.stdin.readLine(); 

return line; 
} 
+0

是否奏效? @aztack你最终做了什么? – TarunG 2014-01-24 07:11:01

+0

很好用,*除*我无法注入远程文件;而是我使用** page.injectJs('jquery.min.js')** – 2014-10-30 06:20:56

+0

@AdamAlbright使用外部js使用'page.includeJs('http://ajax...jquery.min.js')' ,从本地使用'page.injectJs('myJs.js')'来代替,就像你使用':)'一样。这个解决方案对我来说也很好,+1 !. – albciff 2015-06-03 15:14:53

相关问题