Rotirea proxy și un VPN schimbă adresa ta publică la niveluri diferite, iar această diferență decide ce se scurge. Un VPN mută fiecare pachet într-un tunel, așa că adresa sursă pe care o vede ținta este punctul final al tunelului. Un proxy stă deasupra nivelului de rețea: doar cererile pe care le trimiți prin el apar din ieșire, în timp ce tot restul de pe mașină păstrează adresa reală. A nimeri această separare transformă rotirea dintr-o bifă într-o decizie de proiectare.

De unde vine de fapt adresa publică

Adresa pe care o vede o țintă este cea de unde a plecat ultima dată traficul tău, iar într-o conexiune de acasă este adresa furnizorului de pe routerul tău, nu ceva ce deține mașina. Repornirea routerului poate returna același contract de închiriere, iar schimbarea adresei MAC produce uneori una nouă, dar niciuna nu îți dă un selector de țară. Un VPN înlocuiește adresa sursă la nivelul IP, așa că fiecare pachet de pe mașină, inclusiv DNS și actualizările din fundal, pleacă din punctul final al tunelului. Un proxy lucrează cu un nivel mai sus: acceptă o cerere, deschide propria conexiune către țintă, și doar acea cerere apare din ieșire. Tot restul de pe mașină folosește în continuare adresa reală.

Această separare explică majoritatea surprizelor. O extensie de browser îndreptată spre un proxy schimbă doar ce trimite browserul și nimic altceva, așa că o a doua aplicație pe același host scurge în continuare adresa originală. Un VPN la nivel de sistem are modul de eșec opus: acoperă traficul pe care voiai să îl păstrezi local și se închide doar dacă clientul este configurat astfel. A alege între cele două înseamnă de fapt a alege ce trafic trebuie să se miște.

Rotirea se aplică apoi nivelului pe care l-ai ales. Cu un proxy, rotirea înseamnă că următoarea cerere folosește o altă ieșire. Cu un VPN, înseamnă demolarea și reconstruirea tunelului, ceea ce este mai lent și apare ca o reconectare vizibilă.

Ce poate citi un proxy HTTP și ce nu

La HTTP simplu proxy-ul vede un URI absolut în linia cererii, fiecare antet și corpul. Poate înregistra totul și poate rescrie orice parte, motiv pentru care un proxy gratuit care injectează un script în răspunsuri face exact ce permite protocolul. Autentificarea folosește Proxy-Authorization, iar o acreditare lipsă sau greșită produce 407 Proxy Authentication Required în loc de o eroare de conexiune.

La HTTPS clientul trimite CONNECT host:port și proxy-ul deschide un tunel brut, după care vede octeți criptați. Învață în continuare numele de gazdă din linia CONNECT și de obicei din câmpul SNI din strângerea de mână TLS, așa că înregistrarea la nivel de nume de gazdă supraviețuiește chiar dacă încărcătura nu. Citirea încărcăturii cere terminarea TLS cu un certificat în care clientul are încredere, ceea ce este un alt produs cu un alt risc. A specificația de semantică HTTP definește CONNECT ca o cerere de tunel, care este modelul mental corect pentru ce poate și ce nu poate vedea o ieșire.

curl -v -x http://proxy.example.net:8080 https://example.com 2>&1 | grep -E 'CONNECT|Proxy-'

Ieșirea detaliată arată linia CONNECT înainte de orice trafic TLS, și acela este momentul în care proxy-ul îți află destinația. Un proxy care răspunde cu 407 nu a deschis niciodată tunelul, așa că o nouă încercare cu alte setări TLS nu va ajuta.

Granularitatea rotirii decide ce se strică

Rotirea la fiecare cerere este setarea care pare cea mai sigură și strică cel mai mult. Cookie-urile, tokenurile CSRF și sesiunile de pe partea serverului sunt legate de o identitate, iar o identitate care se schimbă între autentificare și următorul apel arată pentru țintă ca o deturnare de sesiune. Mulți furnizori oferă o sesiune lipicioasă codificând-o în numele de utilizator al proxy-ului, așa că ieșirea rămâne fixă pentru o fereastră aleasă.

Alege granularitatea după sarcină, nu după valoarea implicită a furnizorului. Un crawler care aduce pagini independente poate roti la fiecare cerere, în timp ce un flux de plată sau un API autentificat trebuie să păstreze o singură ieșire pe tot fluxul. Cele două apeluri de mai jos arată un nume de utilizator lipicios și un punct final rotativ simplu, iar socks5h schema rezolvă numele la proxy în loc de local.

curl -sS -x http://user-session-a1b2:[email protected]:8080 https://ifconfig.me
curl -sS -x socks5h://127.0.0.1:1080 https://ifconfig.me

DNS-ul local este o scurgere tăcută. Dacă clientul rezolvă numele înainte de conectare, rezolverul află în continuare fiecare gazdă pe care o vizitezi chiar dacă cererea HTTP iese în altă parte. A socks5h forma și rezolvarea de pe partea proxy-ului evită asta, iar folosirea lor nu costă nimic.

Ce clasifică ținta dincolo de adresă

Reputația adresei este o intrare printre mai multe. Țintele combină ASN-ul și eticheta lui de centru de date sau rezidențial, amprenta TLS a clientului, setările HTTP/2, ordinea antetelor, rata cererilor și forma navigării. O ieșire rezidențială condusă de un browser fără interfață poate eșua unde o ieșire de centru de date condusă de o sesiune reală trece.

Tipul ieșirii stabilește ce poți afirma cinstit despre trafic, iar fiecare are un cost diferit.

Exit typeWhat the target seesMain cost
Datacenter proxyHosting ASN, cheap, often pre-blockedLow reputation, easy to detect
Residential networkA consumer ISP address belonging to someone elseConsent and terms-of-service exposure
Mobile carrierA carrier NAT address shared by many subscribersPrice, plus shared blame for abuse
Your own cloud egressAn address you are accountable forRecognisable, but defensible

O ieșire partajată nu este neutră. Tot restul care rulează de la acea adresă ajunge în aceeași găleată de reputație, iar o adresă deja arsă de alți chiriași eșuează înainte ca prima ta cerere să fie citită.

Alege o ieșire pe care o poți descrie într-o politică

Întrebarea utilă nu este cum să ascunzi adresa, ci cine răspunde pentru traficul care iese din ea. Ieșirea ta proprie de cloud pentru fiecare sarcină, un furnizor contractat cu un acord de prelucrare a datelor și o păstrare publicată, și un VPN auto-găzduit cu o identitate pentru fiecare sarcină sunt toate descrieri într-o singură propoziție. O listă gratuită nu, pentru că operatorul ei nu are nicio obligație față de tine și are fiecare stimulent să înregistreze.

Ține-ți limitele proprii de rată sub ce tolerează ținta, și colectează doar câmpurile de care are nevoie sarcina, ca o greșeală să rămână mică. Rotirea mai rapidă ca să scapi de un blocaj crește de obicei rata cererilor care l-a provocat.

Scrie ieșirea aleasă, fereastra ei de rotire și proprietarul ei în configurația lucrării înainte de prima rulare. Când vine blocajul, acea notă este ce îți spune dacă să schimbi ieșirea sau comportamentul.

Articole similare