12

我正在使用 PhantomJS 登录网站,验证码必须手动输入。如何将验证码图像保存到磁盘,然后在 PhantomJS 控制台中手动输入验证码?

4

2 回答 2

19

我遇到了同样的问题,只需将系统模块与 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;
}
于 2013-07-24T08:15:33.570 回答
1

你要问的听起来几乎是不可能的。

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

  • 抓取捕获,作为图像保存到磁盘
  • 输出到控制台以告诉用户图像已准备好
  • 使用 window.setTimeout 等待 30 秒
  • /tmp/code.txt然后用户编辑带有捕获结果的文本文件(例如)
  • 30 秒后 window.setTimeout 中的回调将读取/tmp/code.txt

这不漂亮。但我想不出任何其他方法。

于 2013-05-23T09:55:14.690 回答