Часто на серверах используется большое количество IP, но все программы и скрипты используют самый первый из них (точнее тот, для которого прописан default route). Изменить это поведение вполне возможно, пример кода ниже. Этот скрипт при выполнении отображает IP адрес, который видят удаленные сервисы.
Если же cURL не используется, а используются лишь голые сокеты, то это все равно возможно сделать: http://blog.nachtarbeiter.net/2008/08/21/binding-phps-fsockopen-to-a-specific-ip-address/
По материалам http://www.php.net/manual/en/function.curl-setopt.php
<?PHP
// create a new cURL resource
$ch = curl_init();
// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://automation.whatismyip.com/n09230945.asp");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_INTERFACE, '88.xx.xx.xx'); // работаем через дополнительный IP
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// grab URL and pass it to the browser
$output = curl_exec($ch);
echo $output;
// close cURL resource, and free up system resources
curl_close($ch);
?>
Если же cURL не используется, а используются лишь голые сокеты, то это все равно возможно сделать: http://blog.nachtarbeiter.net/2008/08/21/binding-phps-fsockopen-to-a-specific-ip-address/
По материалам http://www.php.net/manual/en/function.curl-setopt.php
Любопытно, а как быть, если скрипт под ИонКубом (зашифрован)?
ReplyDeleteБоюсь, никак.
ReplyDeleteСпасибо, вновь пришёл сюда за инфой и увидел свой коммент.
ReplyDeleteХороший "цинизм", thx!
Рад страться! :)
ReplyDeleteа это важно какой именно ip указать?
ReplyDeleteя могу "прикинутся" пользователем который зашёл на страничку, и спросить "от имени" его ip адреса какой-нибудь ещё сервис? Или речь только про дополнительные адреса, которые всё же принадлежат к серверу.
Yourick Yourick, речь идет про исключительно те адреса, что принадлежат Вам. Так как http является tcp протоколом и поддерлка исходящего адреса в его случае весьма сложна.
ReplyDeleteЯсно, спасибо.
ReplyDeleteА у меня тут уже другая задача всплыла, вероятно я всё же воспользуюсь вашими подсказками)
требуется сделать запрос курлом с использованием ssl-сертификата, а на хостинге ssl сертификат почему-то установили при помощи дополнительно адреса, а не основного, надеюсь поможет.
Лучше воспользоваться флагом -k и отключить проверку сертификата :)
ReplyDelete