FastNetMon

Thursday, 25 February 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 comments :

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

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

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

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

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

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

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

    ReplyDelete

Note: only a member of this blog may post a comment.