Добрый вечер друзья. Подскажи пожалуйста как PhantomJS заставить выполнят скрипт, пытаюсь заставить фантом нажать на капчу
recaptcha но не получается, если я правильно понял, то фантом игнорирует все фреймы. (Так ли это?)
Сам код
var webPage = require('webpage');
var page = webPage.create();
page.settings.userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36",
page.viewportSize = { width: 1920, height: 1080 };
page.open('https://www.google.com/recaptcha/api2/demo', function (status) {
console.log('Status: ' + status);
window.setTimeout( function() {
// Скрипт взят из расширения для chrome, работает замечательно. Там в файле manifest.json включена опция
// all_frames : true ( выполнять сценарий во всех фреймах, из за этого и подумал что он игнорирует фреймы)
var isRecaptchaFrame = function() {
return /https:\/\/www.google.com\/recaptcha\/api2\/anchor/.test(window.location.href);
};
var captchaInterval = setInterval(function() {
if (isRecaptchaFrame()) {
clearInterval(captchaInterval);
document.getElementsByClassName('recaptcha-checkbox-checkmark')[0].click();
}
}, 500);
// end
window.setTimeout( function() {
page.render('/screenshot.jpeg');
phantom.exit();
}, 2500);
}, 5500);
});
Само расширение
здесь.
Подскажите, как мне это реализовать, куда копать?
UPD: Рабочий кодvar page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 YaBrowser/17.11.1.1120 (beta) Yowser/2.5 Safari/537.36';
page.viewportSize = '1280x1024';
page.open('https://www.google.com/recaptcha/api2/demo', function (status) {
if (status == 'success') {
page.includeJs('https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js');
isRecapha();
window.setTimeout( function() {
page.switchToMainFrame();
page.render('/home/user/screenshot.jpeg');
phantom.exit();
}, 5000);
};
});
function isRecapha()
{
page.switchToFrame(0);
window.setTimeout( function() {
var step = page.evaluate(function() {
var isRecaptchaFrame = function() {
return /https:\/\/www.google.com\/recaptcha\/api2\/anchor/.test(window.location.href);
};
if (isRecaptchaFrame()) {
document.getElementsByClassName('recaptcha-checkbox-checkmark')[0].click();
return true;
} else return false;
});
}, 1000);
}