IP e porto do proxy: que formato necesita a túa aplicación?
Converte unha entrada da lista de proxies nun URL HTTP ou SOCKS, enche campos separados de host e porto e formata correctamente os enderezos IPv6.
Algunhas aplicacións piden IP:port. Outras necesitan un URL que comece por http:// ou socks5://. A configuración do navegador adoita separar o enderezo e o porto en campos distintos. Así, o mesmo extremo pode aparecer en varios formatos sen cambiar de enderezo.
Unha entrada IPv4
Supoñamos que unha lista de proxies HTTP ofrece o proxy HTTP de exemplo 203.0.113.10:8080.
| A aplicación pide | Introduce |
|---|---|
| Host ou IP | 203.0.113.10 |
| Porto | 8080 |
| URL do proxy HTTP | http://203.0.113.10:8080 |
Non inclúas o porto dúas veces. Se a aplicación xa ten un campo de porto, poñer 203.0.113.10:8080 no campo do host pode facer que tente resolver toda a cadea como un nome de host. Tampouco engadas un esquema a un campo que espere expresamente só un enderezo IP.
O esquema debe corresponder co servizo. Escolle HTTP ou SOCKS5 segundo o soporte do cliente antes de converter o enderezo. Escribir socks5:// diante dun extremo HTTP cambia o que envía o cliente; non activa SOCKS5 nese servidor.
IPv6 necesita corchetes nun URL
Un enderezo IPv6 xa contén dous puntos, polo que o URL encerra o enderezo entre corchetes antes de engadir o porto:
http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080
Sen corchetes, o límite entre enderezo e porto é ambiguo. Unha aplicación con campos separados adoita esperar 2001:db8::10 como host e 8080 como porto; segue o seu formato de entrada. Ambos os enderezos aquí son exemplos de documentación, non proxies activos.
Analiza os URL en vez de dividir en cada signo de dous puntos
Un pequeno script Python pode tratar URL IPv4 e IPv6 con corchetes mediante o analizador de URL estándar:
from urllib.parse import urlsplit
proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)
A propiedade hostname devolve o enderezo sen corchetes. Dividir a cadea orixinal en cada signo de dous puntos estragaría este exemplo. Nun importador real, rexeita tamén hosts ausentes, esquemas non compatibles e portos fóra de 1–65535. Analizar un URL dá os seus compoñentes; non demostra que exista o servizo.
Cando a lista inclúe nome de usuario e contrasinal
Un formato habitual de URL é http://username:password@host:port. Os caracteres como @, # e / nas credenciais necesitan unha codificación URL correcta. Se o cliente ofrece campos separados de credenciais, usalos adoita ser máis doado ca construír o URL á man.
Comproba o formato orixinal do provedor antes de converter unha cadea de credenciais separadas por dous puntos. Catro campos separados así non teñen significado universal, e o propio contrasinal pode conter dous puntos. Un analizador para liñas IP:port sinxelas non debe adiviñar silenciosamente outro formato.