Я использую PhantomJS для входа на веб-сайт, и captcha должен вводиться вручную. Как сохранить изображение captcha на диск, а затем ввести captcha вручную в консоли PhantomJS?
Есть ли способ прочитать пользовательский ввод с клавиатуры для PhantomJS?
Ответ 1
У меня была такая же проблема, просто используйте системный модуль в сочетании с page.render(), а некоторые аргументы передаются на страницу .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;
}
Ответ 2
То, что вы просите, звучит почти невозможно.
Если бы я отчаянно хотел сделать что-то подобное, я мог бы рассмотреть следующий подход:
- захватить захват, сохранить на диск как изображение
- вывод на консоль, чтобы сообщить, что изображение пользователя готово
- использовать window.setTimeout для ожидания 30 секунд
- пользователь затем редактирует текстовый файл (например,
/tmp/code.txt
) с результатом записи - через 30 секунд обратный вызов в window.setTimeout будет читать
/tmp/code.txt
Это некрасиво. Но я не могу думать ни о каком другом пути с головы.