Заполнение форм с помощью PHP и cURL

Я думаю, найдутся люди, которые, прочитав заголовок, решать что в статье речь пойдет о создании какой-нибудь спамилки (бота) для форумов или социальных сетей. По большому счету так и есть
, но с некоторыми оговорками.
В принципе, любой инструмент, предназначенный для автоматизации ваших действий, можно использовать для рассылки спама (в той или иной форме). К cURL это относится вдвойне, т.к. эта утилита позволяет имитировать работу браузера. Но на мой взгляд не правильно скрывать полезную информацию только потому, что кто-то может её использовать для рассылки спама.
Тем не менее, примеров работы с конкретными сайтами здесь не будет, только описание принципа работы и нужных функций.
Итак, у нас есть инструмент (cURL), который делает большую часть работы за нас. И для работы с ним существует ряд библиотек в том числе и для PHP.
Рассмотрим самый простой пример – получение страницы.
-
$login_url = 'http://my_site.com/';
-
$agent = 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)';
-
-
$ch = curl_init(); //инициализация библиотеки
-
//указываем адрес страницы
-
curl_setopt($ch, CURLOPT_URL,$login_url);
-
//указываем заголовок User-Agent
-
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
-
//указываем, что полученная страница должна быть сохранена в переменную
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
-
//указываем, что cURL должен переходить по редиректам
-
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
-
-
//выполняем запрос
-
$page = curl_exec($ch);
Как видите, нужно инициализировать библиотеку, указать параметры подключения и отправить запрос. В результате страница будет сохранена в переменной page.
Теперь посмотрим, что нужно сделать для аутентификации на сайте и последующей работы с ним.
1) Отправить запрос с логином и паролем.
Предварительно нужно узнать названия полей в форме авторизации. На мой взгляд, лучше всего для этих целей подходит Firebug (плагин к FireFox). Т.е. вам нужно вручную зайти на сайт и посмотреть какие запросы отправляются и с какими параметрами.
Например, если форма аутентификации отправляет запрос на страницу
http://my_site.com/checklogin
а введенные данные передаются в полях login и pass методом post, то нужно указать следующие параметры.
-
$referer = 'http://my_site.com/';
-
$postLoginFields = array();
-
$postLoginFields['login'] = 'your login';
-
$postLoginFields['pass'] = 'your password';
-
-
//referer – адрес страницы с которой вы пришли,
-
//т.е. нужно указать адрес страницы на которой находится форма
-
curl_setopt($ch, CURLOPT_REFERER, $reffer);
-
//указываем, что мы отправляем данные методом post
-
curl_setopt($ch, CURLOPT_POST, 1);
-
//добавляем строку с post данными
-
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postLoginFields));
Обратите внимание, мы использовали параметр CURLOPT_REFERER, т.к. браузер передает адрес страницы с которой он пришел. В данном случае предполагается, что вы зашли на страницу с формой входа, заполнили ее (форму) и нажали кнопку «Войти», т.е. отправили запрос.
Кроме того, мы использовали функцию http_build_query для того, чтобы сформировать строку с post данными из массива. Это намного удобнее, чем составлять ее вручную.
2) Сохранить cookie.
Т.к. протокол HTTP не предусматривает сохранение состояния посетителя, то для этих целей обычно используют cookie. В нашем случае это означает, что в момент аутентификации сервер отправит нам cookie, а наша задача – её сохранить и использовать при выполнении следующих запросов. Делается это так.
-
//создаем файл для cookies
-
$cookiefile = tempnam('path/to/cookie/folder', 'cookie_');
-
-
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
-
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);
Функция tempnam создаёт файл с уникальным именем. В первом параметре указываем размещение файла, во втором – префикс (не обязательно).
3) Заполнение форм на сайте.
Тут все просто. Порядок действий ничем не отличается от первого шага. Заполняете форму вручную, смотрите что и куда отправляется и рассказываете об этом cURL'у. Единственный нюанс – у вас уже должен быть сохраненный cookie.
Думаю, вы уже поняли, что используя cURL вы можете написать скрипт, который будет перемещаться по сайту и имитировать действия обычных пользователей. Но я хочу напомнить, что, во-первых, спамить плохо, во-вторых, такие действия обычно очень не нравятся администрации ресурсов. Поэтому не удивляйтесь если вас забанят по IP
. И в-третьих, точно такие же скрипты можно использовать и в «мирных» целях, например, для создания автоматизированных тестов, проверки доступности сайтов, времени отклика и т.п.
Интересно почитать
На нашем сайте вы всегда найдете стихи о любви
Детская мебель б.у – хорошая возможность сэкономить.
Итак, как предпринимателю вести бухучет ИП? Несколько простых правил.
Понравилась статья? Подписывайтесь на продолжение
!
Опубликовано в PHP View Comments
-
Andrey
-
Владимир
-
Andrey
-
Владимир
-
Andrey
-
Alex
-
vitadez
-
vellet
-
Olegjko
-
Domin
-
Владимир
-
mihdan
-
ghost
-
mihdan
-
Big_Shark
-
mihdan
-
Владимир
-
Владимир
-
Nayjest
-
Владимир
-
Big_Shark








