Может ли PHP cURL использовать IP-адрес посетителя?
Объясняет, какая машина открывает cURL-соединение на стороне сервера и что прокси должен изменить в этом маршруте.
Посетитель нажимает кнопку. Ваш PHP-сервер обращается к внешнему API. API видит исходящее соединение сервера или выход прокси, настроенного для этого соединения. Браузер посетителя поддерживает отдельное соединение с вашим сайтом.
Копирование адреса посетителя в заголовок не может перенести PHP-соединение в сеть посетителя. Заголовки — это данные, отправляемые по уже установленному соединению. Получатель может использовать доверенный заголовок пересылки в своей логике приложения, но это не превращает значение заголовка в адрес источника соединения.
Прокси должен принять соединение
Чтобы пропустить PHP cURL через другую машину, она должна предоставлять доступный прокси-сервис с разрешением передавать запрос. Процесс PHP должен иметь возможность к нему подключиться. Обычный сеанс браузера посетителя не даёт вашему серверу такой универсальной прокси-точки.
Параметр прокси в libcurl выбирает сервис, к которому подключается cURL. Он не может попросить произвольный браузер инициировать запрос от его имени.
Запрос из браузера — другая схема
Для некоторых API браузер может обращаться к получателю напрямую. Так запрос идёт по сети пользователя с учётом его собственной конфигурации прокси. Для этого также нужен API, рассчитанный на браузерных клиентов. Доступ между источниками подчиняется CORS, а учётные данные, переданные в код браузера, становятся доступны этому клиенту.
Решите, где должен выполняться запрос, прежде чем выбирать вариант прокси. Храните учётные данные сервера на сервере; используйте документированную браузерную интеграцию, если сервис её поддерживает. Ни одна из схем не даёт надёжного короткого пути, позволяющего серверному запросу унаследовать сетевую идентичность посетителя.