пятница, 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://www.whatismyip.com/automation/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

4 коммент.:

Вячеслав комментирует...

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

pavel.odintsov комментирует...

Боюсь, никак.

Вячеслав комментирует...

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

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

pavel.odintsov комментирует...

Рад страться! :)