Intereting Posts
Калькулятор доставки WooCommerce (shipping-calculator.php) – Переопределение PHP – только почтовый индекс Выходной буфер Artisan не содержит весь вывод Как создать отношения следопытов, используя Полиморфные отношения Многие-Многие с Laravel? Каков наилучший способ уменьшить количество запросов, когда у класса DAO есть методы, которые используют один и тот же результат? PHP: вычислить математическую функцию f (x) в строке Как настроить PhpUnit в Xampp? Многоуровневый доступ к массиву PHP База данных Lumen не настроена Почему функция PHP без параметров требует скобок? Сохранить вывод оболочки в переменную PHP Firebird вставить blob-файл в базу данных apache внезапно прекратить работу Найти разрешение JPEG с помощью PHP Символы UTF-8 в выгруженном имени файла смешаны с загрузкой файла PHP-печать на локальный термальный принтер не работает без имени сети Как вставить json-массив в базу данных mysql

cURL с PHP, можно определить IP-адрес cURL?

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

Для сервера, на котором я разговариваю, требуется строка аутентификации, которая объединяет IP-адрес соединения и вращающийся код доступа (например, my $ code = SHA1 ($ _ SERVER ['SERVER_ADDR']. $ Passcode) сравнивается по завершении с SHA1 ($ _ SERVER ['REMOTE_ADDR']. $ Passcode)). Это отлично работало, когда исходящее соединение cURL использовало тот же IP-адрес, который хранится в $ _SERVER ['SERVER_ADDR'], однако IP-адрес, используемый cURL, теперь отличается и периодически вращается.

Вы можете сделать это, чтобы получить свой публичный IP-адрес, прежде чем звонить:

$ch = curl_init('http://whatismyip.org/'); curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); $myIp = curl_exec($ch); 

Однако:

  • Если ваш публичный IP-адрес иногда изменяется между сеансами cURL, нет ничего, что могло бы сказать, что он не изменится между указанным выше сеансом и следующим, для которого вам действительно нужны эти данные.
  • Он полагается на то, что на самом деле работает whatismyip.org (или аналогичная служба).

Вы можете принудительно использовать IP, который использует curl, в отличие от его обнаружения.

Используйте параметр CURLOPT_INTERFACE для curl_setopt() – установите его на IP-адрес, который вы хотите использовать.

Если вы используете сервер, такой как облачный сервер, с пулом IP, то рекомендуется выбрать интерфейс для использования, если важно обнаружить это с другой стороны по соображениям безопасности.

Лично мне пришлось использовать эту функцию для передачи данных по платежным картам через cURL, когда IP-адрес ограничен.

Существует веб-сайт, который называется whatismyip.com. У них есть общедоступный API, который вы можете использовать до тех пор, пока вы не превысите их лимит (что-то вроде пяти запросов в час?). Не помешает сделать это выстрелом, а?

Предполагая, что завиток всегда запускается с одного и того же сервера, даже если у него несколько сетевых адаптеров, не имеет значения, скажете ли вы curl, какой IP использовать.

Я бы использовал трюк DaveRandom для получения того, какой IP-адрес вы используете в настоящий момент, а затем установите его для следующего вызова, используя

 curl_setopt($ch, CURLOPT_INTERFACE, "XXX.XXX.XXX.XXX"); 

Предполагая, что два вызова достаточно близки, существует очень высокая вероятность того, что IP-адрес все равно будет привязан к интерфейсу, и, установив его, вы говорите, что он использует его, вместо того, который может потребоваться использовать балансировщик нагрузки.