Частенько нужно программно зайти на какой нибудь сайт, но так, чтобы это выглядело так, что кто-то загрузил страницу в браузере.
Snoopy – это PHP класс эмулирующий работу веб. браузера, он позволяет получать содержимое страницы и например отправлять данные форм.
Последняя дата обновления ноябрь 2005 года.
Запросу на получение страницы можно подсунуть: хост (адрес страницы), порт, куки, реферальную страницу(адрес страницы по ссылке с которой якобы заходим), агента(название браузера), логин/пароль базовой авторизации, все что хотите в содержимое заголовка (header). Еще можно установить атрибуты прокси сервера – это нужно во первых для анонимности и во вторых против бана можно сменить прокси сервер. Есть поддержка редиректов, фреймов.
Кроме получения содержимого страницы есть функции для:
а) вытаскивания чистого текста (без тегов)
б) получения всех ссылок на странице
в) получения форм
вот вроде бы и все, вобщем очень неплохой класс для нужд спамера тире разработчика поискового бота
==================================
Теперь о том чего нет, и что хотелось бы видеть в классе
1) Более сложный парсинг ссылок, т.е. не только нужны порой сами урлы, но и текст ссылок
2) Парсинг всех используемых на странице картинок
3) Более сложная работа с формами. Получение формы в объект, заполнение переменных объекта значениями, отправка запроса
Немного фантастики …
4) Эмуляция выполнения событий javascript например клики по объектам наведение курсором и т.д. получения измененной страницы после действия javascript. Это же касается и vb script
5) Выполнение ajax запросов. Получение измененной страницы после исполнения ajax
6) Поддержка работы flesh обектов. Возможность сохранить в файл, нажать на ссылку
12 Дек 2007 в 09:10
1) и 2) — можно не поленится и дописать недостающее, просто наследовав класс и добавив в наследнике недостающее. оно достаточно просто.
3) аналогично предыдущему — создать объект формы и работать как хочеццо.
4) — а зачем? пока нет запроса, js не нужен. а перед запросом подготовить корректные данные — вопрос сервер-программинга, ненадо тут js и vb
5) не вижу проблем. аналогично предыдущему пункту, формируем запрос. получаем результ. именно так я и сделал в своём проекте.
6) вот флэш незнаю, увы. могу только предположить. что полученый флэш можно разобрать (как и в случае с ajax и js) и выяснить запросы-ответы, после чего обычным способом работать с этим хозйством 🙂
а вообще инфа полезная, спасибо. благодаря ей и этому клиенту я добился желаемого.
23 Мар 2008 в 03:03
Спасибо за заметку, теперь хоть имею немного представления о том что это такое и на сколько полезно. Просто ищу способ сбора информации с одного сайта.
13 Окт 2008 в 13:19
Подскажите как сделать чтобы просто скрипт заходил на сайт…я просто не знаю пхп…
13 Окт 2008 в 14:19
2 Слава
Если вы выбрали php как язык скрипта, тогда:
1) Для начала скачайте библиотеку url в заголовке поста
2) Исходный код примера достаточно прост чтобы в нем разобраться, нужно всего лишь подставить свой урл, куда должен заходить скрипт.
Вот пример из файла readme
Example: fetch a web page and display the return headers and
the contents of the page (html-escaped):
include “Snoopy.class.php”;
$snoopy = new Snoopy;
if($snoopy->fetch(“http://www.site.org/”))
{
echo “response code: “.$snoopy->response_code.”\n”;
while(list($key,$val) = each($snoopy->headers))
echo $key.”: “.$val.”\n”;
echo “
\n”;
echo “
\n”;
}
else
echo “error fetching document: “.$snoopy->error.”\n”;
13 Окт 2008 в 16:23
так вопрос на засыпку…ваш скрипт можно поставить на крон чтоб он дёргал клас снуп и соовтетсвенно просто заходил на определённую страницу?
Заранее большое спасибо
13 Окт 2008 в 16:48
Можно, только не то что я написал а несколько видоизмененный.
Встречный вопрос, а зачем это тебе?
Если для накрутки счетчика, баннера и т.д. то тут надо очень извернуться, и возможно решение уже за рамками библиотеки snoopy.
Вообще снупи это грабинг страниц – на другое он просто не рассчитан.
13 Окт 2008 в 16:50
2Слава
Если хочешь помогу, стукни в аську, делов на 5 минут
13 Окт 2008 в 18:33
Написал в аську зачем нужен:
ник Dominatos ася 193324345