Поймать ссылку в защищенном JS
Внимание, 18+!
Всем привет. Делаем граббера для сайта, но столкнулись с проблемкой. Есть сайт-жертва https://hpjav.tv/142737/wanz-397 . При нажатии на кнопку VO Server под плеером идет подгрузка embed ссылки в iframe. Ссылка во фрейме вида https://vidoza.net/embed-7y8faotag.html Ява там летает защищенная, поэтому простыми средствами PHP не получается вычленить эту ссылку.
Подскажите пожалуйста средства, благодаря которым можно это сделать. Желательно с подробностями. Заранее спасибо!
Ответы (1 шт):
Вам необходимо смотреть в сторону безголовых (headless) браузеров, таких, как puppeteer, например.
Не знаю, что там, в php сейчас актуально по этой теме... Можно глянуть на https://github.com/nesk/puphpeteer
А вот PhantomJS для php давно уже "мертвый", по-моему.
Скорей всего Вы остановитесь на https://github.com/php-webdriver/php-webdriver (Selenium)
Anyway, примерно так будет выглядеть решение на nodejs с использованием puppeteer:
(async () => {
//Запускаем безголовый браузер
const browser = await BrowserLaunch({
args: [],
headless: false
});
const media = []; //Сюда складываем запросы с типом Медиа
const page = await browser.newPage(); //Открываем новую страницу
await page.goto('https://hpjav.tv/142737/wanz-397'); //Переходим на какой-то порно сайт
await page.click('#btn3'); //Кликаем по VO SERVER
await page.waitFor(5555); //Ждем 5 секунд
//Получаем от страницы список подгруженных ресурсов
const tree = await page._client.send('Page.getResourceTree');
//Проходимся по списку. Записываем урл ресурсов с типом Медиа
for (const resource of tree.frameTree.resources) {
if (resource.type.toLowerCase() === 'media') {
media.push(resource.url);
}
}
console.log(media) //Вот все медиа ресурсы подгруженные
await browser.close(); //Закрываем браузер
})()