Как-то раз встала передо мной задача – накрутить посещения на одной веб-страничке. Не буду рассказывать, для чего мне это понадобилось. Скажем так, это был просто эксперимент. Отчасти он удался, на этом удалось заработать немного. Спалил метод дальше, в итоге лавочку прикрыли. Но приятный осадок остался
Задачу эту я решал на PHP, один из моих любимых языков программирования. Кстати, более-менее сносно изучить его можно на INTUIT-е, там есть несколько курсов. Ну а тестировать свои знания на DenWer или XAMPP (под Windows), а под Nix советую полный LAMP поставить. Очень нужная штука.
Итак, поскольку задача стоит – не просто загрузить веб-страницу, а ещё и представиться конкретным пользователем, обычные методы типа file_get_content() и т.п. не подойдут. В логах сервера засветится большое количество однотипных запросов, с одинаковым IP и без рефферера (страницы, с которой произошел переход).
Решать эту проблему будем… да её уже решили давно! Встречайте, модуль cURL!
Прежде всего пару слов об этом инструменте. Это служебная программа, которая может взаимодействовать с различными прикладными протоколами, в том числе FTP, HTTP, SCP, POP3, SMTP и многим другим. Есть поддержка HTTPS сертификатов, аутентификация, и много приятных фич.
Подключить её можно в файле php.ini, раскомментировав строку:
;extension=php_curl.dll
(т.е. стереть первый символ точки с запятой), после этого перезагружаем веб-сервер и всё должно работать. В частности, проверим вывод команды phpinfo(); и поиск на странице “curl”.
Для Debian-а, например:
# apt-get install php5-curl
# apache2ctl restart
Ну в общем, не буду заострять внимание, как подключать модули – смотрите в манах, речь идет о работе с cURL непосредственно.
Создаем файлик, какой-нибудь там get.php следующего содержания:
<?php $url = 'http://yoip.ru';
$curlobj = curl_init();
curl_setopt($curlobj, CURLOPT_URL, $url);
curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlobj, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
curl_setopt($curlobj, CURLOPT_PROXY, "111.222.111.222"); // этот прокси не валидный
$r=curl_exec($curlobj);
curl_close($curlobj);
echo $r;
?>
Русские прокси я беру тут, список юзерагентов (браузеров, которыми мы будем представляться) – берем тут. Ну вы можете использовать свои источники.
Открываем наш get.php в браузере и видим… что наш IP = IP Proxy!
В качестве $url можно укать любой накручиваемый сайт. Ничто не мешает сохранить все проксики и юзерагенты в массив и подставлять случайные комбинации, предварительно убедившись в валидности прокси.
Для тестов – направим cURL на наш собственный веб-сервер и посмотрим логи access.log Апача.
P.S. Хочу добавить, что таким способом можно накрутить только самые простые счетчики, которые не учитывают куки. Но если покопать cURL поглубже (см. его полную документацию), то нам открываются богатые возможности, вплоть до закачки файлов (пригодится для аплоадеров) и передачи POST-параметров (проспамить разные формы). Богатые возможности для программистов, верно?
Господа, приветствую! Очень хочется взглянуть на файлик get.php…
Файл съелся. Сейчас поправил