Подтвердить что ты не робот

Выберите исходящий ip для запроса curl

У меня есть сервер с двумя разными IP-адресами. Мне нужно отправить нечетные запросы на завивки с первого IP-адреса и даже со второго. Как выбрать исходящий IP-адрес?

Мой PHP script выглядит примерно так:

$curlh = curl_init($url);
curl_setopt($curlh, CURLOPT_USERAGENT, $uagent);
curl_setopt($curlh, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curlh);

Как я могу это сделать?

4b9b3361

Ответ 1

Вы можете попробовать установить параметр CURLOPT_INTERFACE:

curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");

CURLOPT_INTERFACE:. Имя используемого сетевого интерфейса. Это может быть имя интерфейса, IP-адрес или имя хоста.

От: php Руководство: curl_setopt


РЕДАКТИРОВАТЬ: Пример фиксации, поскольку @Майкл Харт указал в другом ответе.

Ответ 2

Так как я не могу ответить, просто хочу добавить к Даниэлю Вассалло ответ. Хотя он прав, его пример не таков.

CURLOPT_INTERFACE является константой и не может быть помещен в кавычки. Это может вызвать некоторую путаницу для тех, кто может копировать и вставлять только, чтобы узнать, что он не работает. Правильный код:

curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");

Кроме того, для Linux-систем (и я уверен, что Windows, но это не будет точно таким же), я чувствую, что вам не нужно использовать IP-адрес. Если вы знаете интерфейс ethN, вы можете просто использовать "eth0", "eth1" или "eth0: 0" в зависимости от настройки вашей сети. Это может быть более предпочтительным, поскольку код не будет специфичен для 1 машины и может вписаться в более широкую конфигурацию (например, кластеры).