PHP.Curl. Сабмитим форму. Автосабмит.

PHP.Curl. Сабмитим форму. Автосабмит.

Пример php кода, который при помощи curl, может заполнять форму на удаленном сайте и отправлять ее. Так же скрипт позволяет получить ответ от сервера для дальнейшей обработки.

Постановка задачи

Есть несколько форм (html form) на разных сайтах в которые необходимо внести одинаковую информацию. Мотив нас не интересует - это может быть как банальный спам в гостевухи, так и выполнение рутинных операций по поддержке и обслуживанию сайтов.

Есть готовые решения для этих целей - самые известные это - AIRoboform, AllSubmitter и Xrumer. Но как универсальное решение они не всегда могут подойти под конкретные потребности вполне конкретного разработчика сайта или веб-студии.

На помощь нам приходит php и curl.

Пример сабмита формы при помощи php & curl

Источник

Это наш сабмитер. Он передает файлу по адресу http://localhost/curl/1.php параметры в переменной $params. Строка $params - состоит из названий имен полей формы и значений, им задаваемых. В переменную $result попадает результат выполнения файла 1.php. Попросту говоря - ответная страница. Пример 1.php приведен ниже.

<?
  $url = 'http://localhost/curl/1.php';
  $params = "keyword=123&zxczxc=333"; //you must know what you want to post
  $user_agent = "Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)";
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_POST,1);
  curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
  curl_setopt($ch, CURLOPT_URL,$url);
  curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

  $result=curl_exec ($ch);
  curl_close ($ch);

  echo "Results: <br>".$result;
?>

Пример 1.php для тестирования работы скрипта

<?
print_r($_POST);
?>

Замечание №1. У хостинг провайдера должна быть включена возможность скриптам коннектиться наружу. Как в пхп так и на фаерволе. На платных хостинга - это обычная практика, на бесплатных - обычно отключена. Что бы не спамили.

Замечание №2. Если результат работы скрипта зависит от того, какой value установленно у input type=submit, то мы добавляем в параметры name & value кнопки сабмит.

Замечание №3. Понятно, что пример сырой, но на его основе можно построить годный автоматизатор рутинных задач, которые часто встречаются при обслуживании сайтов, реже - при создании сайтов.