Вибір локального інтерфейсу та проксі в одній передачі cURL
Використовуйте CURLOPT_INTERFACE для локального джерела та CURLOPT_PROXY для посередника, зважаючи на маршрутизацію ОС і NAT.
Машині з кількома локальними адресами може знадобитися одна з них для з'єднання з вихідним проксі. cURL дозволяє явно задати обидва вибори:
curl_setopt_array($handle, [
CURLOPT_URL => 'https://example.com/',
CURLOPT_INTERFACE => '192.0.2.20',
CURLOPT_PROXY => 'http://proxy.example:8080',
]);
Це ілюстративна конфігурація для наявного дескриптора cURL. Замініть 192.0.2.20 на адресу джерела, яка справді доступна на машині, що виконує PHP. Для дозволеного публічного запиту без облікового запису проксі список HTTP-проксі може надати віддалений слухач для значення проксі.
CURLOPT_INTERFACE вибирає локальний бік вихідного з'єднання. CURLOPT_PROXY вибирає посередника, який передає запит далі. Вибір локального джерела не робить цю машину віддаленим проксі й не дає їй довільної публічної IP.
На цьому шляху локальний вибір впливає на з'єднання в бік проксі. Сайт зазвичай бачить наступну адресу джерела проксі. NAT між будь-якою парою може додатково транслювати адресу, яку бачить кожен отримувач.
Якщо вибір інтерфейсу не задано, libcurl дозволяє стеку TCP вибрати відповідне джерело. Цей вибір підпорядковується мережевій конфігурації машини; це не універсальне правило, ніби перемагає перша адреса у файлі конфігурації.
libcurl приймає назви інтерфейсів на підтримуваних платформах, але його документація виключає вибір назви інтерфейсу Windows для цієї опції. Використання hostname також може спричинити блокувальний пошук. Відома локальна адреса є зрозумілішим вводом, коли саме цей вибір має на увазі застосунок.