Параметр проксі контексту HTTP належить HTTP-обгортці потоку PHP. Необроблене TCP-з'єднання, створене stream_socket_client, не стає клієнтом HTTP-проксі лише тому, що цей параметр існує в об'єкті контексту.

Якщо код підключається безпосередньо до адреси призначення, він відкриває цей TCP-маршрут. Якщо ж він підключається до адреси проксі, наступні байти все ще мають реалізувати протокол проксі.

Для HTTP CONNECT це означає дійсний хост і порт призначення, будь-яку потрібну автентифікацію проксі, повний розбір відповіді та прийняття до початку протоколу призначення. Один виклик fread, що шукає фразу успіху, не є повним з'єднувачем. TCP може розділити відповідь між читаннями або повернути додаткові байти, які потрібно зберегти.

Для призначення HTTPS протокол TLS потім має початися через установлений тунель і перевірити ідентичність призначення. Ім'я хоста проксі не є ідентичністю сертифіката вебсайту.

Використовуйте клієнт або з'єднувач із документованою підтримкою потрібного протоколу проксі, коли завдання — просто отримати URL. Налаштування HTTP і SOCKS у PHP cURL дають один підтримуваний шлях отримання URL. Необроблений потік корисний, коли програма сама бере на себе цю протокольну роботу нижчого рівня; він не повинен мовчки успадковувати припущення з не пов'язаного прикладу HTTP-обгортки.

Схожі статті