Scraperin tulva Cloudflaren ilmaisella tasolla: mikä sen pysäytti ja mitä jätimme päälle

Ylläpito

Eräänä aamuna yhden tuotesivustomme avautuminen lakkasi toimimasta. Cloudflare näytti vierailijoille virheen 524, palvelin käytti sivua kohden kaksi–kuusi minuuttia, eikä mikään kertonut meille asiasta noin kymmeneen tuntiin. Syynä oli scraper, joka kävi läpi asuntokohtaisia välityspalvelimia noin 225 pyynnön sekuntinopeudella.

Tulvan muoto

Jokainen sivu renderöitiin jokaiselle pyynnölle, joten kukin työntekijä joutui jonottamaan satoja renderöintejä ja ylitti CPU-rajan.

Miksi osoitekohtaiset rajoitukset eivät auttaneet

Nopeusrajoitus laskee pyynnöt osoitetta kohden. Kun tuhansista osoitteista tulee yksi–kolme pyyntöä kullekin, yksikään osoite ei koskaan lähesty rajaa. Maiden esto olisi estänyt myös kävijämme. Se, mitä scraper ei voinut halvalla väärentää, oli käyttäytyminen kuin selain, joka on käynyt sivustolla aiemmin.

Cloudflaren reunalla: kolme ilmaista sääntöä

Ilmainen taso sallii viisi WAF-mukautettua sääntöä vyöhykettä kohden. Käytimme kolmea, kaikki hallitun haasteen kanssa eston sijaan, joten vahingossa kiinni jäänyt henkilö klikkaa itsensä läpi:

Kaikki kolme päästävät läpi Cloudflaren varmennetut botit, käyttäjäagentit, jotka nimeävät itsensä boteiksi, omat osoitteemme, API- ja webhook-polut sekä tiedostot, jotka eivät ole sivuja. Kaksi päivää myöhemmin tulva oli yhä käynnissä: tunnissa vale-selain -sääntö haastoi yli 10 000 pyyntöä. Cloudflaren palauttamat 10 000 tapahtumaa kyselyä kohden tulivat 9 627 osoitteesta, joista millään ei ollut enempää kuin 4.

Alkuperäisellä palvelimella: portti sovelluksessa

Headless-puolikas käyttää täydellisiä selaimen otsikoita, joten reunasäännöt eivät yksinään sieppaa sitä, kun hätäsääntö on pois päältä. Itse sovelluksessa laitoimme pienen väliohjelmiston sivun renderöijän eteen:

Ensimmäisen minuutin aikana portti hylkäsi noin 6 700 vale-selainta ja käänsi pois noin 6 700 tuntematonta, samalla kun se palveli tuntemattomille noin 9 sivua sekunnissa. Hitaat pyynnöt putosivat nollaan, työntekijöiden CPU laski rajaltaan 12–15 prosenttiin ja muisti kullakin 4–5 GB:sta 0,65 GB:aan.

Mitä jätimme pois päältä

Pääpointti

Asuntoverkkoproksien kautta tuleva tulva on helppo tunnistaa siitä, mitä siltä puuttuu: selaimen fetch-otsikot, evästeet ja Referer-otsikot. Haasta se reunalla, pidä tuntemattomat työntekijöiden renderöintikyvyn rajoissa ja varmista, että jokin palvelimen ulkopuolella huomaa, kun sivu lakkaa aukeamasta. Night Watch paketoi kaikki kolme: vartijan, säännöt automaattisella kytkimellä hätäsäännölle sekä portin Python-web-sovelluksille.

Päivitetty: