Learning
Všechny články
Engineering31. srpna 2026 5 min

Crawler si vybere to dražší z tvých rozhraní

Mohutnost URL prostoru je závazek, ne vlastnost routeru

Kombinatorický URL prostor je závazek, ne detail routeru

git.kernel.org nabízí kompletní data zadarmo a jedním příkazem. git clone přenese všech zhruba 1,48 milionu commitů v komprimované podobě a server u toho skoro nic nestojí.

Scrapery to nedělají. Místo toho renderují jednotlivé commity jako HTML a parsují je zpátky. Výsledek podle správce: zhruba 14 jader v pěti lokalitách nedělá nic jiného, než že vykresluje commity do HTML, tedy asi pětina celkové kapacity.


Proč se ta jedna volba tak prodraží

Rozdíl není v objemu dat, ale v mohutnosti adresního prostoru. Každý commit se dá požádat jako stránka, jako patch, jako diff, jako plain text a v dalších variantách. Správce odhaduje řádově miliardu platných URL už z jediného forku.

A forků je na git.kernel.org kolem 922. Backend je ukládá chytře, protože objekty jsou skoro totožné. Crawler o tom neví a projde je jako 922 nezávislých stromů. Miliardy požadavků, na jejichž konci je 922 kopií týchž 1,48 milionu commitů.

Tohle je obecný tvar problému. Levné rozhraní bylo hromadné a jedno, drahé rozhraní je jednotkové a je jich kombinatoricky mnoho. Crawler se rozhoduje podle toho, co umí jeho parser, ne podle toho, co tebe stojí míň.


Obrany a proč jedna po druhé padly

Postup byl klasický a poučný právě tím, jak spolehlivě selhal. Nejdřív user agenty a blokace IP. Scrapery začaly předstírat prohlížeč a rozprostřely se přes celé ASN cloudových poskytovatelů.

Pak přišel skutečný zlom: rezidenční a mobilní proxy sítě. Požadavky chodí z milionů náhodných adres, každá udělá čtyři pět dotazů a zmizí. Zdroj je monetizace SDK ve spotřební elektronice, jak správce poznamenává, tvoje televize to nejspíš dělá taky. Blokace podle IP tím ztrácí smysl, protože ta adresa patří něčímu domácímu routeru.

Následoval Anubis, tedy proof of work se SHA256, nejdřív na obtížnosti 4, později 5. Zabral. Dnes 66 % ze šesti milionů denních požadavků na výzvě skončí a 33 % ji spočítá a projde. Legitimní vývojářský provoz tvoří asi 2 %.

Za pozornost stojí, co ta čísla znamenají. Proof of work nezastavil crawlery, jen jim zdražil jednotku. Když je pro ně jednotková cena stále nižší než hodnota dat, zaplatí ji.


Jediná páka, kterou máš

Správce nakonec sahá po jediném opatření, které nezávisí na rozpoznání útočníka: vypíná funkce, aby snížil počet crawlovatelných URL a uzavřel drahé operace. Data zůstávají ke stažení komukoli, kdo si o ně řekne.

To je podstatné. Detekce je závod ve zbrojení, který prohráváš. Zmenšení adresního prostoru je konstrukční změna, kterou ti nikdo nesmaže.


Co si z toho odnést

Ke každému veřejnému endpointu, který kombinuje parametry, si připočti jeho mohutnost. Filtry, řazení, stránkování a formáty se násobí, a to číslo je počet stránek, které někdo dřív nebo později vyrenderuje. U jednoho zdroje to nevidíš, u součinu ano.

Když už dnes nabízíš hromadný export nebo dump, tvoje drahá cesta neexistuje kvůli datům. Existuje kvůli tomu, že si ji někdo vybral. Zlevnit se dá jen tak, že hromadnou cestu uděláš viditelnou a objevitelnou, ne tak, že tu drahou budeš bránit.

A na obranu se dívej podle toho, co dělá s jednotkovou cenou. Cokoli, co se opírá o rozpoznání útočníka, má poločas rozpadu měřený v měsících. Cokoli, co snižuje počet adres nebo cenu jejich vyrenderování, drží.

Zdroje

Poslech místo čtení — 1 zdroj k načtení.