Как определяют реальный IP адрес запроса?
У меня есть парсинг , реализованный через curl . Я использую мобильные прокси через https. На одном сервере запускаю парсинг и он работает, а на другом запускаю - нет (блокировка). Подскажите, каким образом сайт, который парсят, определяет с какого ip-адреса идет парсинг , ведь используется прокси ?
JS не работает, Прокси стоят одинаковые (мобильные), Условия работы парсинга одинаковые, за исключением ip-сервера, на котором он находится. 1 сервер - россия 2 сервер - беларусь
Ответы (2 шт):
Это может быть двусторонний пинг, т.к сервера находятся в разных локациях
Запустив пинг к клиентскому IP, со стороны нашего сервера, можно узнать приблизительную длинну маршрута. То же самое можно сделать со стороны браузера, XMLHTTPRequest дёргает пустую страницу нашего nginx. Полученную разницу в петле более 30 мс можно интерпретировать как туннель.
В свое время я защищался от хождения и граббинга моих сайтов в несколько потоков через прокси двумя путями.
1) Через crontab опрашивал популярные форумы и сайты где выкладывают бесплатные прокси. На их основе создавал ban-list в iptables
2) В момент прихода на мою страницу посетителя выполнял нехитрые действия
$isProxy = false;
$proxyPortsList = [8080,8081,3128,81,88 ... ...];
foreach( $proxyPortsList as $port) {
$userIP = getENV('REMOTE_ADDR');
$fp = fsockopen( $userIP, $port, $errno, $errstr, 30);
if ( $fp ) {
$isProxy = true;
fclose($fp);
}
}
if ( $isProxy ) {
header('Location: https://google.com');
}
В 90% случаев помогало. :)
Так что, вполне может быть что-то из этого использует и сервер на который Вы ходите.