Unele aplicații cer IP:port. Altele au nevoie de un URL care începe cu http:// sau socks5://. Setările browserului au adesea câmpuri diferite pentru adresă și port. Același punct final poate apărea deci în mai multe formate fără să-și schimbe adresa.

O intrare IPv4

Să presupunem că o listă de proxy-uri HTTP oferă proxy-ul HTTP de exemplu 203.0.113.10:8080.

Aplicația cereIntrodu
Gazdă sau IP203.0.113.10
Port8080
URL proxy HTTPhttp://203.0.113.10:8080

Nu include portul de două ori. Dacă aplicația are deja un câmp pentru port, introducerea lui 203.0.113.10:8080 în câmpul gazdei o poate face să încerce rezolvarea întregului șir ca nume de gazdă. De asemenea, nu adăuga o schemă într-un câmp care cere explicit doar o adresă IP.

Schema trebuie să corespundă serviciului. Alege HTTP sau SOCKS5 în funcție de suportul clientului înainte de conversia adresei. Scrierea lui socks5:// înaintea unui punct final HTTP schimbă ce trimite clientul; nu activează SOCKS5 pe server.

IPv6 are nevoie de paranteze drepte într-un URL

O adresă IPv6 conține deja două puncte, deci URL-ul încadrează adresa în paranteze drepte înainte de a adăuga portul:

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

Fără paranteze, limita dintre adresă și port este ambiguă. O aplicație cu câmpuri separate cere de obicei 2001:db8::10 pentru gazdă și 8080 pentru port; respectă formatul ei de intrare. Ambele adrese de aici sunt exemple pentru documentație, nu proxy-uri active.

Parsează URL-uri, nu separa la fiecare semn de două puncte

Un mic script Python poate procesa URL-uri IPv4 și IPv6 cu paranteze folosind parserul URL standard:

from urllib.parse import urlsplit

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

Proprietatea hostname returnează adresa fără paranteze. Separarea șirului original la fiecare semn de două puncte ar strica acest exemplu. Într-un importator real, respinge și gazdele lipsă, schemele neacceptate și porturile din afara 1–65535. Parsarea unui URL oferă componentele sale; nu dovedește existența serviciului.

Când lista include un nume de utilizator și o parolă

Un format URL obișnuit este http://username:password@host:port. Caracterele precum @, # și / din datele de autentificare necesită codare URL corectă. Dacă clientul oferă câmpuri separate pentru autentificare, utilizarea lor este de obicei mai simplă decât construirea manuală a unui URL.

Verifică formatul original al furnizorului înainte să convertești un șir de autentificare separat prin două puncte. Patru câmpuri separate astfel nu au o semnificație universală, iar parola poate conține ea însăși două puncte. Un parser pentru linii simple IP:port nu trebuie să ghicească în tăcere un alt format.

Articole similare