FastNetMon

пятница, 26 февраля 2010 г.

cURL: как менять исходящий IP?

Часто на серверах используется большое количество IP, но все программы и скрипты используют самый первый из них (точнее тот, для которого прописан default route). Изменить это поведение вполне возможно, пример кода ниже. Этот скрипт при выполнении отображает IP адрес, который видят удаленные сервисы.


<?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

8 комментариев :

  1. Любопытно, а как быть, если скрипт под ИонКубом (зашифрован)?

    ОтветитьУдалить
  2. Спасибо, вновь пришёл сюда за инфой и увидел свой коммент.

    Хороший "цинизм", thx!

    ОтветитьУдалить
  3. а это важно какой именно ip указать?
    я могу "прикинутся" пользователем который зашёл на страничку, и спросить "от имени" его ip адреса какой-нибудь ещё сервис? Или речь только про дополнительные адреса, которые всё же принадлежат к серверу.

    ОтветитьУдалить
  4. Yourick Yourick, речь идет про исключительно те адреса, что принадлежат Вам. Так как http является tcp протоколом и поддерлка исходящего адреса в его случае весьма сложна.

    ОтветитьУдалить
  5. Ясно, спасибо.
    А у меня тут уже другая задача всплыла, вероятно я всё же воспользуюсь вашими подсказками)
    требуется сделать запрос курлом с использованием ssl-сертификата, а на хостинге ssl сертификат почему-то установили при помощи дополнительно адреса, а не основного, надеюсь поможет.

    ОтветитьУдалить
  6. Лучше воспользоваться флагом -k и отключить проверку сертификата :)

    ОтветитьУдалить

Примечание. Отправлять комментарии могут только участники этого блога.