«Отримати проксі» в застосунку 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 відповідає на третє питання. Її відповідь може описувати вихід за проксі, тоді як налаштоване ім'я хоста розв'язується в інший вхід. Жодну з адрес не слід підміняти іншою в налаштуваннях застосунку.

Схожі статті