¿Qué proxy ha utilizado esta petición PHP cURL?
Distinga el proxy configurado, el par conectado y la salida pública que observa un destino.
«Obtener el proxy» puede significar tres cosas distintas en una aplicación PHP cURL. Decida qué observación necesita antes de añadir otra petición.
| Pregunta | Dónde mirar |
|---|---|
| ¿Qué punto final configuró la aplicación? | La configuración entregada al manejador |
| ¿Se utilizó un proxy para esta transferencia? | Información de la transferencia, cuando es compatible |
| ¿Qué dirección pública vio el sitio web? | Una observación en ese destino |
Mantenga el punto final seleccionado junto al manejador o al objeto de petición. curl_getinfo es una interfaz de información de la transferencia, no un getter general para cada valor CURLOPT asignado antes. Conservar la configuración de la aplicación es más sencillo que intentar interceptar las llamadas a curl_setopt.
Inspeccione la transferencia completada
Tras la transferencia, el par conectado está disponible mediante CURLINFO_PRIMARY_IP. Cuando la primera conexión va a un proxy, ese par puede ser la dirección del proxy en lugar de la del sitio web.
$peer = curl_getinfo($ch, CURLINFO_PRIMARY_IP);
$usedProxy = defined('CURLINFO_USED_PROXY')
? curl_getinfo($ch, constant('CURLINFO_USED_PROXY'))
: null;
CURLINFO_USED_PROXY se añadió a libcurl en la versión 8.7.0 y lo exponen las compilaciones de PHP compatibles. Su resultado informa del uso de proxy, no de la URL completa del proxy seleccionado. Si la constante no está disponible, el null anterior significa que la observación no está disponible, no que la petición haya ido directamente.
Lea estos valores mientras el manejador aún describe la operación en cuestión. Una conexión fallida puede no dar una dirección de par útil, y un proxy explícito aún puede evitarse con una exclusión aplicable.
Un punto final de comprobación de IP responde la tercera pregunta. Su respuesta puede describir una salida detrás del proxy, mientras que el nombre de host configurado resuelve a una entrada distinta. Ninguna de las dos direcciones debe sustituirse por la otra en los ajustes de la aplicación.