Ноя 06

Частенько нужно программно зайти на какой нибудь сайт, но так, чтобы это выглядело так, что кто-то загрузил страницу в браузере.

Snoopy – это PHP класс эмулирующий работу веб. браузера, он позволяет получать содержимое страницы и например отправлять данные форм.

Последняя дата обновления ноябрь 2005 года.

Запросу на получение страницы можно подсунуть: хост (адрес страницы), порт, куки, реферальную страницу(адрес страницы по ссылке с которой якобы заходим), агента(название браузера), логин/пароль базовой авторизации, все что хотите в содержимое заголовка (header). Еще можно установить атрибуты прокси сервера – это нужно во первых для анонимности и во вторых против бана можно сменить прокси сервер. Есть поддержка редиректов, фреймов.

Кроме получения содержимого страницы есть функции для:

а) вытаскивания чистого текста (без тегов)

б) получения всех ссылок на странице

в) получения форм

вот вроде бы и все, вобщем очень неплохой класс для нужд спамера тире разработчика поискового бота

==================================

Теперь о том чего нет, и что хотелось бы видеть в классе

1) Более сложный парсинг ссылок, т.е. не только нужны порой сами урлы, но и текст ссылок

2) Парсинг всех используемых на странице картинок

3) Более сложная работа с формами. Получение формы в объект, заполнение переменных объекта значениями, отправка запроса

Немного фантастики …

4) Эмуляция выполнения событий javascript например клики по объектам наведение курсором и т.д. получения измененной страницы после действия javascript. Это же касается и vb script

5) Выполнение ajax запросов. Получение измененной страницы после исполнения ajax

6) Поддержка работы flesh обектов. Возможность сохранить в файл, нажать на ссылку

автор: \\ теги: , ,

8 комментариев на «http://snoopy.sourceforge.net/ – класс на PHP для эмуляции захода браузером на сайт»

  1. Ober Gun пишет:

    1) и 2) — можно не поленится и дописать недостающее, просто наследовав класс и добавив в наследнике недостающее. оно достаточно просто.
    3) аналогично предыдущему — создать объект формы и работать как хочеццо.
    4) — а зачем? пока нет запроса, js не нужен. а перед запросом подготовить корректные данные — вопрос сервер-программинга, ненадо тут js и vb
    5) не вижу проблем. аналогично предыдущему пункту, формируем запрос. получаем результ. именно так я и сделал в своём проекте.
    6) вот флэш незнаю, увы. могу только предположить. что полученый флэш можно разобрать (как и в случае с ajax и js) и выяснить запросы-ответы, после чего обычным способом работать с этим хозйством 🙂

    а вообще инфа полезная, спасибо. благодаря ей и этому клиенту я добился желаемого.

  2. Andrey пишет:

    Спасибо за заметку, теперь хоть имею немного представления о том что это такое и на сколько полезно. Просто ищу способ сбора информации с одного сайта.

  3. Слава пишет:

    Подскажите как сделать чтобы просто скрипт заходил на сайт…я просто не знаю пхп…

  4. e64f пишет:

    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 “

    “.htmlspecialchars($snoopy->results).”

    \n”;
    }
    else
    echo “error fetching document: “.$snoopy->error.”\n”;

  5. Слава пишет:

    так вопрос на засыпку…ваш скрипт можно поставить на крон чтоб он дёргал клас снуп и соовтетсвенно просто заходил на определённую страницу?
    Заранее большое спасибо

  6. e64f пишет:

    Можно, только не то что я написал а несколько видоизмененный.
    Встречный вопрос, а зачем это тебе?

    Если для накрутки счетчика, баннера и т.д. то тут надо очень извернуться, и возможно решение уже за рамками библиотеки snoopy.
    Вообще снупи это грабинг страниц – на другое он просто не рассчитан.

  7. e64f пишет:

    2Слава
    Если хочешь помогу, стукни в аську, делов на 5 минут

  8. Слава пишет:

    Написал в аську зачем нужен:
    ник Dominatos ася 193324345

Оставьте свой отзыв

*

code