![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 ![]() |
Описание класса «Snoopy» — это класс, предназначеный для имитации веб-браузера. Он позволяет упростить отправку форм и получение кода HTML-страниц посредством PHP. Данный класс является хорошей альтернативой «CURL». К сожалению, официальной онлайн-документации я так и не нашёл, но в Интернете есть множество статей по использованию данного класса. Скачать класс можно здесь. Некоторые возможности класса:
Основные поля и методы класса:
Начинаем Для того, чтобы протестировать данный класс, сначала скачаем его, после этого распакуем архив на какой-нибудь хост и создадим пустой PHP-скрипт. Получаем содержимое веб-страниц Для того, чтобы получить содержимое любой веб-страницы, нам можно использовать метод «fetch», как показано ниже: <?php include('Snoopy.class.php'); // подключаем «Snoopy» $snoopy = new Snoopy(); // создаём объект $snoopy->fetch('http://www.google.com/'); // загружаем страницу echo $snoopy->results; // выводим результат ?> Отправка POST запросов Конечно получение содержимого веб-страницы — хорошая функция, но мы можем получать содержимое и встроенными средствами PHP. Чаще всего «Snoopy» используют для отправки POST-запросов: <?php include('Snoopy.class.php'); // подключаем «Snoopy» $snoopy = new Snoopy(); // создаём объект /* создаём массив «$post_array» */ $post_array = array(); $post_array['city'] = 'Odessa'; $post_array['country'] = 'Ukraine'; /* cоздаем Cookies */ $snoopy->cookies['last_visit'] = 1298295000; $snoopy->cookies['nickname'] = 'Mirgorod'; $snoopy->submit('http://test.ru/submit.php', $post_array); echo $snoopy->results; // выводим результат ?> Сервер получит следующие данные: /* print_r($_POST); */ array(2) { ["city"]=> string(6) "Odessa" ["country"]=> string(7) "Ukraine" } /* print_r($_COOKIE); */ array(2) { ["last_visit"]=> int(10) 1298295000 ["nickname"]=> string(8) "Mirgorod" } Поиск всех ссылок на странице ... $snoopy->fetchlinks("http://www.google.com/"); // получаем все ссылки на странице print ($snoopy->results); // выводим результат ... Боевая задача А сейчас, после того как мы получили достаточное количество информации о «Snoopy», мы испытаем его на практике! Наша задача — авторизироваться на каком-нибудь произвольно сайте. Класс на практике Для начала нам нужно узнать какие поля мы передаём серверу. Для этого я использовать «Firebug» или «HTTPFox» — плагины для «Firefox». После этого приступим непосредственно к делу: <?php include('snoopy/Snoopy.class.php'); // подключаем «Snoopy» $snoopy = new Snoopy(); // создаём объект /* Если захотим использовать proxy */ //$snoopy->proxy_host = "my.proxy.host"; //$snoopy->proxy_port = "8080"; /* создаём массив «$post_array» */ $post_array = array(); $post_array['username'] = 'Mirgorod'; $post_array['userpass'] = 'password'; $snoopy->agent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; uk; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 Some plugins"; $snoopy->referer = "http://test.com/index.php"; $snoopy->rawheaders["Host"] = "test.com"; // Если сервер проверяет Host $snoopy->maxredirs = 2; // Максимальное количество редиректов $snoopy->submit('http://test.com/index.php', $post_array); // отправляем форму echo $snoopy->results; // выводим результат ?> (В примере используются изменённые данные) Заключение «Snoopy» упростил нам задачу симуляции поведения браузера. По моему мнению этот класс является более удобной альтернативой «CURL». Но всё же «Snoopy» не подходит для определенных задач. Например я не нашёл поддержку работы с загрузкой файлов. Original source: habrahabr.ru (comments). Читать дальше -------------------- |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 10.5.2025, 10:44 | |
|