GET запрос в PHP с разных IP адресов
posted in SEO, Полезности, Программирование |Всем привет!
2 недели ничего не писал — был в отпуске — времени совсем на онлайн не было !
Отдохнул в кавычках — с двумя детьми ( 01.02.2010 девочку Катю родили ) отдых получается специфический 😉
Ладно — потихоньку нужно входить в рабочее русло, и первый пост после отпуска я решил написать в помощь программистам пишущим разнообразные парсеры и граберы реазизующим сию задачу на PHP и ещё не ведающим как же можно организовать GET запрос с разных IP адресов.
Про эту задачу вспомнил при реализации Яндекс Wordstat парсинга (сервис будет «прикручен» к моему сервису MySEO для управления ссылками на своих ресурсах), кстати ноль ноль ноль первая бета версия уже готова 🙂
ИТАК на PHP мне известны 2 метода запроса с разных айпишников:
Первый с использованием библиотеки curl — нужно заюзать опцию CURLOPT_INTERFACE
Второй на сокетах — для привязки айпишника нужно использовать socket_bind
вот рабочий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php $url = "http://gtalex.ru/seo/ip.php"; echo "<h1>CURLOPT_INTERFACE</h1>"; $get = curl_init(); curl_setopt($get, CURLOPT_URL, $url); // curl_setopt($get, CURLOPT_INTERFACE,'87.118.116.130'); curl_setopt($get, CURLOPT_INTERFACE,'87.118.117.130'); curl_setopt($get, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($get, CURLOPT_RETURNTRANSFER, 1); curl_setopt($get, CURLOPT_TIMEOUT, 60); $buf = curl_exec($get); echo $buf; echo "<h1>socket_bind</h1>"; $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Unable to create socket\n"); // socket_bind($sock, '87.118.116.130'); socket_bind($sock, '87.118.117.130'); socket_connect($sock, 'gtalex.ru', 80); $request = "GET /seo/ip.php HTTP/1.1\r\n"; $request .= "Host: gtalex.ru\r\n"; $request .= "Connection: Close\r\n\r\n"; socket_write($sock, $request); $buff= ""; do { $recv = ""; $recv = socket_read($sock, '1400'); if($recv != "") { $buff .= $recv; } } while($recv != ""); socket_close($sock); echo $buff; ?> |
В моем случае имею два подопытных айпишника 87.118.117.130 и 87.118.116.130
По умолчанию используется 87.118.116.130. В вышеупомянутом скриптике я двумя способами подменяю айпишник на 87.118.117.130
Для просмотра результатов использую скриптик отображающий откуда его дёргают http://gtalex.ru/seo/ip.php
Приятного граббинга !