Всем привет!
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
Приятного граббинга !
13 комментариев на «“GET запрос в PHP с разных IP адресов”»
Здорово!
Поздравляю с рождение ребенка ! Про скрипт подумаю, не совсем еще въехал. .
Поздравляю с пополнением! А за статью спасибо, обязательно испытаю сий прогресс на деле))
Я так понял, указываемые IP должны быть привязаны к серверу?
Если так, почему бы тогда просто не использовать прокси?
зачем прокси юзать если есть свои ?
Спасибо большое в поиске нету простите ) Снова проявление ментального поля!
mycash net настоящий капитан! )))))
Действительно удивили и порадовали
Никогда не поверил бы,
http://www.ucoza.ru
что даже такое бывает
Поздравляю с пополнением!
Завидую работоспособности — у меня и с полугодовалым сыном времени на блог как-то не выдается.
интересует подобный скрипт
для получения информации WHOIS
с подменой IP
Если есть подобное пришлите на мыло
mikirada@yandex.ru
Спасибо
Интересно из тех кто тут отписывался пробовал хоть кто то запускать скрипт? Fatal error: Call to undefined function curl_init() in ………
у тебя либа curl не подключена в php
Первым способом ответа не показывается (возможно ушел по ложному IP)
По второму дает ошибку:
Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: Требуемый адрес для своего контекста неверен. in Z:\home\pr.pr\www\index.php on line 21
и выдает реальный IP.
А как можно проверить первый способ без второго подопытного IP?
[…] погуглив я нашел здесь: GET запрос в PHP с разных IP адресов, целых два способа это […]