Який проксі використав цей запит PHP cURL?
Розрізняйте налаштований проксі, підключений вузол і публічний вихід, який бачить призначення.
«Отримати проксі» в застосунку PHP cURL може означати три різні речі. Вирішіть, яке спостереження вам потрібне, перш ніж додавати ще один запит.
| Питання | Де дивитися |
|---|---|
| Яку кінцеву точку налаштував застосунок? | Конфігурація, передана дескриптору |
| Чи використовувався проксі для цього передавання? | Відомості про передавання, де це підтримується |
| Яку публічну адресу побачив сайт? | Спостереження на цьому призначенні |
Тримайте вибрану кінцеву точку поруч із дескриптором або об'єктом запиту. curl_getinfo — це інтерфейс відомостей про передавання, а не універсальний гетер для кожного раніше заданого значення CURLOPT. Зберігати конфігурацію застосунку простіше, ніж намагатися перехоплювати виклики curl_setopt.
Огляньте завершене передавання
Після передавання підключений вузол доступний через CURLINFO_PRIMARY_IP. Коли перше з'єднання йде до проксі, цим вузлом може бути адреса проксі, а не адреса сайту.
$peer = curl_getinfo($ch, CURLINFO_PRIMARY_IP);
$usedProxy = defined('CURLINFO_USED_PROXY')
? curl_getinfo($ch, constant('CURLINFO_USED_PROXY'))
: null;
CURLINFO_USED_PROXY додано до libcurl у версії 8.7.0, і його надають сумісні збірки PHP. Його результат повідомляє про використання проксі, а не про повну URL вибраного проксі. Якщо константа недоступна, null вище означає, що спостереження недоступне, а не що запит ішов напряму.
Читайте ці значення, поки дескриптор ще описує відповідну операцію. Невдале з'єднання може не дати корисної адреси вузла, а явний проксі все ще можна обійти через застосовний виняток.
Кінцева точка перевірки IP відповідає на третє питання. Її відповідь може описувати вихід за проксі, тоді як налаштоване ім'я хоста розв'язується в інший вхід. Жодну з адрес не слід підміняти іншою в налаштуваннях застосунку.