IP și port proxy: ce format cere aplicația ta?
Transformă o intrare din lista de proxy-uri într-un URL HTTP sau SOCKS, completează câmpuri separate pentru gazdă și port și formatează corect adresele IPv6.
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 cere | Introdu |
|---|---|
| Gazdă sau IP | 203.0.113.10 |
| Port | 8080 |
| URL proxy HTTP | http://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.