Uma máquina com vários endereços locais pode precisar de um deles para a sua ligação a um proxy de encaminhamento. O cURL pode fazer ambas as escolhas de forma explícita:

curl_setopt_array($handle, [
    CURLOPT_URL => 'https://example.com/',
    CURLOPT_INTERFACE => '192.0.2.20',
    CURLOPT_PROXY => 'http://proxy.example:8080',
]);

Esta é uma configuração ilustrativa para um handle cURL existente. Substitua 192.0.2.20 por um endereço de origem realmente disponível na máquina que executa PHP. Para um pedido público permitido sem conta de proxy, a lista de proxies HTTP pode fornecer o ouvinte remoto para o valor do proxy.

CURLOPT_INTERFACE escolhe o lado local da ligação de saída. CURLOPT_PROXY escolhe o intermediário que transporta o pedido adiante. Escolher uma origem local não transforma essa máquina num proxy remoto nem lhe dá um IP público arbitrário.

Neste caminho, a escolha local afeta a ligação em direção ao proxy. O site vê geralmente o endereço de origem seguinte do proxy. O NAT entre qualquer par pode traduzir ainda mais o endereço que cada recetor vê.

Se a escolha da interface for omitida, o libcurl deixa a pilha TCP escolher uma origem adequada. Essa escolha segue a configuração de rede da máquina; não é uma regra universal que o primeiro endereço de um ficheiro de configuração ganhe.

O libcurl aceita nomes de interface nas plataformas suportadas, mas a sua documentação exclui a seleção por nome de interface no Windows para esta opção. Usar um hostname também pode desencadear uma pesquisa bloqueante. Um endereço local conhecido é uma entrada mais clara quando é essa a escolha que a aplicação pretende.

Artigos relacionados