[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Защита от парсинга
innovate
Недавно наткнулся на сайт... Потребовалось вытащить всего по одной ссылке на нескольких сотнях страниц из iframe. Собственно, при просмотре ресурса, iframe есть, любые попытки получить контент страницы вместе с тегом iframe тщетны. Т.е. я получаю полную копию страницы, но без iframe.

Для наглядности: допустим открыли example.com, там:
<html>
<head>
<title>
Example</title>
</head>
<body><iframe
src=""></iframe></body>
</html>

теперь делаем банальный file_get_contents("http://example.com"), и в результате тег iframe у нас отсутствует... :o


Кто что думает по этому поводу?
Invis1ble
javascript ? анализ заголовков запроса сервером ?

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

sergeiss
Сам тэг отсутствует или его содержимое? И второе - как именно ты смотришь код? Исходный код страницы или текущий код страницы? Я потому спрашиваю, что iframe мог быть добавлен динамически, посредством jQuery или на чистом JS.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
innovate
Цитата
Сам тэг отсутствует или его содержимое?

сам тег - это и удивило.
Цитата
И второе - как именно ты смотришь код?

исходный код.
Цитата
анализ заголовков запроса сервером?

тоже думаю в этом направлении, пока не проверил.
vagrand
Ну тут не все так страшно, надо просто или найти закономерность зависимости адреса, который подгружаеться в iframe от адреса ткекущей страницы, если она есть, а если нет, то найти код, который создает iframe и понять откуда он берел адрес для него.
В общем мораль токова, если хотите что-то парсить то придется немного потрудиться.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
innovate
Да уже нашел, jQuery.post по завершению загрузки страницы инсэртит iframe в нужный мне div... Теперь дело в другом, какие, в теории, есть способы получения iframe при таком раскладе?
vagrand
innovate
Зачем вам iframe? Вам нужен только тот URL, который в нем открывают и все.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
killer8080
Цитата (innovate @ 14.07.2013 - 20:53)
Теперь дело в другом, какие, в теории, есть способы получения iframe при таком раскладе?

file_get_contents rolleyes.gif
innovate
vagrand
<iframe src="need it"></iframe>

Я же не говорю что мне требуется содержимое этого тега, всего ссылка, но разве не логично, что если тег отсутствует, то и ссылки нет?


killer8080
Не смешно.
Цитата
делаем банальный file_get_contents("http://example.com"), и в результате тег iframe у нас отсутствует
vagrand
innovate
Но вы же нашлши где его собирают, значит так е и ссылку собирают для него то же.

_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
innovate
С парсингом столкнулся недавно, собственно вопрос: Содержимое страницы я получаю с отработавшим js кодом? Если нет, то тогда все встает на свои места и отсюда вытекает новой вопрос: можно ли получить содержимое страницы с отработавшим js кодом или придется искать алгоритмы, по которым они генерят ссылку для iframe? (Просто сдается мне, что устроили они нечто вроде паровозика, ибо весь собранный iframe они инсэртят в див, сам iframe они берут из какого-то другого дива, которого в исходном коде тоже нету, а только в текущем, а для второго дива берут из третьего, который есть тоже только в текущем коде - я не понимаю, зачем не важную инфу так прятать. Я уже начинаю верить, что я просто где-то накосячил.)
Invis1ble
innovate
99% что никто ничего не прячет
и да, контент ты получаешь естественно "без отработавшего js-кода"

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

innovate
Тогда как обычно поступают, если нужную информацию вставляют js-ом?
killer8080
Цитата (innovate @ 14.07.2013 - 23:21)
Тогда как обычно поступают, если нужную информацию вставляют js-ом?

парсят js, ты ж сам уже ответил
Цитата (innovate @ 14.07.2013 - 20:53)
Да уже нашел, jQuery.post по завершению загрузки страницы инсэртит iframe в нужный мне div...

делай такой же пост запрос, и парсь оттуда iframe
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.