Príval scraperov na bezplatnom tarife Cloudflare: čo ho zastavilo a čo sme nechali vypnuté

Prevádzka

Jedného rána sa jedna z našich stránok s popismi produktov prestala otvárať. Cloudflare návštevníkom zobrazil chybu 524, origin serveru trvalo 2 až 6 minút na načítanie každej stránky a asi 10 hodín nám o tom nič nepovedalo. Príčinou bol scraper, ktorý cez rezidenčné proxy posielal približne 225 požiadaviek za sekundu.

Tvar prívalovej vlny

Každá stránka sa vykresľovala pri každej požiadavke, takže každý worker zaradil do frontu stovky vykreslení a narazil na limit procesora.

Prečo obmedzenia na jednotlivé adresy nepomohli

Limit frekvencie počíta požiadavky na jednu adresu. Ak z tisícov adries príde jedna až tri požiadavky z každej, žiadna jednotlivá adresa sa k limitu ani len nepriblíži. Blokácia krajín by bola zablokovala našich návštevníkov. Čo scraper nedokázal lacne sfalšovať, bolo správať sa ako prehliadač, ktorý už na stránke bol.

Na okraji siete Cloudflare: tri bezplatné pravidlá

Bezplatný tarif umožňuje päť vlastných pravidiel WAF na zónu. Použili sme tri, všetky s riadenou výzvou namiesto blokovania, takže osoba, ktorá je omylom zachytená, sa preklikne:

Všetky tri prepúšťajú overené boty Cloudflare, user agenty, ktoré sa označujú ako roboty, naše vlastné adresy, cesty API a webhookov a súbory, ktoré nie sú stránky. O dva dni neskôr bol príval stále v plnom prúde: za jednu hodinu pravidlo falošných prehliadačov vyzvalo viac ako 10 000 požiadaviek. 10 000 udalostí, ktoré Cloudflare vráti na jednu dotaz, pochádzalo z 9 627 adries, žiadna z nich nemala viac ako 4.

Na zdroji: brána v aplikácii

Headless polovica má úplné hlavičky prehliadača, takže samotné pravidlá na okraji ju nezachytia, keď je núdzové pravidlo vypnuté. V samotnej aplikácii sme pred vykresľovač stránok vložili malý middleware:

V prvej minúte brána odmietla približne 6 700 falošných prehliadačov a vyhnala približne 6 700 cudzincov, pričom cudzincom obsluhovala približne 9 stránok za sekundu. Pomalé požiadavky klesli na nulu, CPU workerov kleslo z ich stropu na 12 až 15 percent a ich pamäť z 4 až 5 GB na každého na 0,65 GB.

Čo sme nechali vypnuté

Zhrnutie

Príval cez rezidenčné proxy je ľahké odhaliť podľa toho, čo mu chýba: hlavičky fetch prehliadača, cookies a Referery. Vyzvite to na okraji, udržujte cudzincov v rámci toho, čo dokážu vaši workeri vykresliť, a uistite sa, že niečo mimo servera si všimne, keď sa stránka prestane otvárať. Night Watch balí všetko tri: stráž, pravidlá s automatickým prepínačom pre to núdzové a bránu pre Python webové aplikácie.

Aktualizované: