Rotiranje proxy IP adresa bez VPN-a: šta izlaz vidi
Rotirajte proxy izlaze bez VPN-a: šta HTTP proxy može pročitati, kako ljepljive sesije sprječavaju slomljeno stanje i koji izlaz možete braniti u politici.
Rotiranje proxyja i VPN mijenjaju vašu javnu adresu na različitim slojevima, a ta razlika odlučuje šta curi. VPN premješta svaki paket u tunel, pa je izvorna adresa koju cilj vidi krajnja tačka tunela. Proxy stoji iznad mrežnog sloja: samo se zahtjevi koje pošaljete kroz njega pojavljuju s izlaza, dok sve ostalo na mašini zadržava pravu adresu. Ispravno postavljanje te podjele pretvara rotiranje iz kvačice u dizajnersku odluku.
Odakle javna adresa zapravo dolazi
Adresa koju cilj vidi je ona s koje je vaš saobraćaj posljednji put izašao, a na kućnoj vezi to je adresa provajdera na vašem ruteru, a ne nešto što mašina posjeduje. Ponovno pokretanje rutera može vratiti isti zakup, a promjena njegove MAC adrese ponekad stvori novu, ali nijedno vam ne daje izbor zemlje. VPN zamjenjuje izvornu adresu na IP sloju, pa svaki paket s mašine, uključujući DNS i pozadinska ažuriranja, izlazi s krajnje tačke tunela. Proxy radi jedan sloj više: prihvata zahtjev, otvara vlastitu vezu ka cilju, i samo se taj zahtjev pojavljuje s izlaza. Sve ostalo na mašini i dalje koristi pravu adresu.
Ta podjela objašnjava većinu iznenađenja. Proširenje preglednika usmjereno na proxy mijenja samo ono što preglednik šalje i ništa drugo, pa drugi program na istom hostu i dalje odaje originalnu adresu. Sistemski VPN ima suprotan način kvara: pokriva saobraćaj koji ste htjeli zadržati lokalnim i zatvara se samo ako je klijent tako konfigurisan. Biranje između njih zapravo je biranje koji saobraćaj mora kretati.
Rotiranje se onda primjenjuje na sloj koji ste odabrali. S proxyjem rotiranje znači da sljedeći zahtjev koristi drugi izlaz. S VPN-om to znači rušenje i ponovnu izgradnju tunela, što je sporije i vidi se kao primjetno ponovno povezivanje.
Šta HTTP proxy može pročitati, a šta ne
Kod običnog HTTP-a proxy vidi apsolutni URI u liniji zahtjeva, svako zaglavlje i tijelo. Može sve to zapisati i prepisati bilo koji dio, zato besplatni proxy koji ubacuje skriptu u odgovore radi tačno ono što protokol dozvoljava. Autentifikacija koristi Proxy-Authorization, a nedostajuće ili pogrešne vjerodajnice daju 407 Proxy Authentication Required umjesto greške veze.
Kod HTTPS-a klijent šalje CONNECT host:port i proxy otvara sirovi tunel, nakon čega vidi šifrirane bajtove. I dalje saznaje ime hosta iz CONNECT linije i obično iz SNI polja u TLS rukovanju, pa evidentiranje na nivou imena hosta preživljava i kad sadržaj ne preživi. Čitanje sadržaja zahtijeva prekid TLS-a certifikatom kojem klijent vjeruje, a to je drugi proizvod s drugim rizikom. A specifikacija HTTP semantike definira CONNECT kao zahtjev za tunel, što je ispravan mentalni model za ono što izlaz može i ne može vidjeti.
curl -v -x http://proxy.example.net:8080 https://example.com 2>&1 | grep -E 'CONNECT|Proxy-'
Detaljni izlaz pokazuje CONNECT liniju prije bilo kakvog TLS saobraćaja, i to je trenutak kada proxy saznaje vašu destinaciju. Proxy koji odgovori sa 407 nikada nije otvorio tunel, pa ponovni pokušaj s drugačijim TLS postavkama neće pomoći.
Granularnost rotiranja odlučuje šta se kvari
Rotiranje na svaki zahtjev je postavka koja izgleda najsigurnije i kvari najviše. Kolačići, CSRF tokeni i serverske sesije vezani su za identitet, a identitet koji se mijenja između prijave i sljedećeg poziva cilju izgleda kao otimanje sesije. Mnogi provajderi nude ljepljivu sesiju tako što je kodiraju u korisničko ime proxyja, pa izlaz ostaje fiksiran za odabrani prozor.
Odaberite granularnost prema zadatku, a ne prema zadanim postavkama provajdera. Puzalica koja dovlači nezavisne stranice može rotirati po zahtjevu, dok tok plaćanja ili autentifikovani API moraju držati jedan izlaz za cijeli tok. Dva poziva ispod pokazuju ljepljivo korisničko ime i običnu rotirajuću krajnju tačku, a socks5h šema razrješava imena na proxyju umjesto lokalno.
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
Lokalni DNS je tiha curenje. Ako klijent razriješi ime prije povezivanja, resolver i dalje saznaje svaki host koji posjetite, iako HTTP zahtjev izlazi negdje drugo. A socks5h forma i razrješavanje na strani proxyja to izbjegavaju, a njihovo korištenje ništa ne košta.
Šta cilj klasifikuje osim adrese
Reputacija adrese je jedan od nekoliko ulaza. Ciljevi kombinuju ASN i njegovu oznaku data centra ili stambenog, TLS otisak klijenta, postavke HTTP/2, redoslijed zaglavlja, brzinu zahtjeva i oblik navigacije. Stambeni izlaz vođen preglednikom bez interfejsa može pasti tamo gdje izlaz iz data centra vođen pravom sesijom prolazi.
Tip izlaza određuje šta možete iskreno tvrditi o saobraćaju, a svaki nosi drugačiju cijenu.
| Exit type | What the target sees | Main cost |
|---|---|---|
| Datacenter proxy | Hosting ASN, cheap, often pre-blocked | Low reputation, easy to detect |
| Residential network | A consumer ISP address belonging to someone else | Consent and terms-of-service exposure |
| Mobile carrier | A carrier NAT address shared by many subscribers | Price, plus shared blame for abuse |
| Your own cloud egress | An address you are accountable for | Recognisable, but defensible |
Dijeljeni izlaz nije neutralan. Sve ostalo što radi s te adrese pada u istu kantu reputacije, a adresa koju su drugi zakupci već spalili pada prije nego što se vaš prvi zahtjev pročita.
Odaberite izlaz koji možete opisati u politici
Korisno pitanje nije kako sakriti adresu, nego ko je odgovoran za saobraćaj koji s nje izlazi. Vaš vlastiti cloud izlaz po zadatku, ugovoreni provajder sa sporazumom o obradi podataka i objavljenim rokom čuvanja, i samostalno hostovan VPN s jednim identitetom po zadatku — sve se to može opisati jednom rečenicom. Besplatna lista ne može, jer njen operater nema obavezu prema vama i ima svaki podsticaj da loguje.
Držite vlastita ograničenja brzine ispod onoga što cilj toleriše i prikupljajte samo polja koja zadatak traži, da greška ostane mala. Brže rotiranje da pobjegnete od bloka obično povećava brzinu zahtjeva koja ga je izazvala.
Zapišite odabrani izlaz, njegov prozor rotiranja i njegovog vlasnika u konfiguraciju posla prije prvog pokretanja. Kada blok stigne, ta bilješka vam govori da li da promijenite izlaz ili promijenite ponašanje.