Alguns aplicativos pedem IP:port. Outros precisam de uma URL iniciada por http:// ou socks5://. As configurações do navegador costumam separar endereço e porta em campos diferentes. Assim, o mesmo endpoint pode aparecer em vários formatos sem que seu endereço mude.

Uma entrada IPv4

Suponha que uma lista de proxies HTTP forneça o proxy HTTP de exemplo 203.0.113.10:8080.

O aplicativo pedeDigite
Host ou IP203.0.113.10
Porta8080
URL do proxy HTTPhttp://203.0.113.10:8080

Não inclua a porta duas vezes. Se o aplicativo já tiver um campo de porta, colocar 203.0.113.10:8080 no campo do host pode fazê-lo tentar resolver a string inteira como nome de host. Da mesma forma, não acrescente um esquema a um campo que espera explicitamente apenas um endereço IP.

O esquema deve corresponder ao serviço. Escolha HTTP ou SOCKS5 conforme o suporte do cliente antes de converter o endereço. Escrever socks5:// antes de um endpoint HTTP muda o que o cliente envia; não habilita SOCKS5 nesse servidor.

IPv6 precisa de colchetes em uma URL

Um endereço IPv6 já contém dois-pontos, por isso a URL coloca o endereço entre colchetes antes de acrescentar a porta:

http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080

Sem os colchetes, o limite entre endereço e porta é ambíguo. Um aplicativo com campos separados geralmente espera 2001:db8::10 como host e 8080 como porta; siga o formato de entrada dele. Os dois endereços usados aqui são exemplos de documentação, não proxies ativos.

Analise URLs em vez de dividir a cada dois-pontos

Um pequeno script Python pode processar URLs IPv4 e IPv6 com colchetes usando o analisador de URLs padrão:

from urllib.parse import urlsplit

proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)

A propriedade hostname retorna o endereço sem os colchetes. Dividir a string original a cada dois-pontos quebraria este exemplo. Em um importador real, rejeite também hosts ausentes, esquemas não suportados e portas fora de 1–65535. Analisar uma URL fornece seus componentes; não comprova que o serviço existe.

Quando a lista inclui usuário e senha

Um formato comum de URL é http://username:password@host:port. Caracteres como @, # e / nas credenciais precisam de codificação de URL adequada. Se o cliente oferece campos separados para as credenciais, usá-los costuma ser mais fácil do que montar uma URL à mão.

Confira o formato original do provedor antes de converter uma string de credenciais separadas por dois-pontos. Quatro campos separados assim não têm significado universal, e a própria senha pode conter dois-pontos. Um analisador feito para linhas simples de IP:port não deve adivinhar silenciosamente um formato diferente.

Artigos relacionados