Jak v PrestaShopu omezit počet požadavků na IP bez blokování Googlu

SEO a výkon · 6 min čtení

Jak v PrestaShopu omezit počet požadavků na IP bez blokování Googlu

Pondělí ráno. E-shop v neděli dvakrát spadl, přístupový log ukazuje tři adresy, z nichž každá si vyžádala osmdesát tisíc stránek, a vy je na serveru zablokujete. Klid. V úterý je tu čtyřicet nových adres, které dělají přesně totéž.

Blokovat podle adresy je první reakce každého a ta, která vydrží nejkratší dobu. Ne proto, že by to byl špatný nápad, ale protože problém není v tom, kdo se ptá, ale kolik se ptá. A to se měří, ne hádá.

Proč blokování adres nikdy nekončí?

Robot, který prochází váš katalog, nepřichází z jedné adresy: přichází ze sítě, nebo z několika, a střídá je. Když jednu odříznete, bez zaváhání pokračuje z další. Se jmény je to stejné: tváří se jako běžný prohlížeč, každý týden mění identitu a každý měsíc se objeví tři noví. Seznam blokací roste a zátěž neklesá.

Co zamaskovat nedokážou, je tempo. Člověk, který nakupuje, otevře kategorii, zaškrtne dva filtry, otočí jednu stránku a jde na detail produktu: tři čtyři drahá hledání za celou návštěvu. Robot jich udělá tři čtyři za sekundu, z každé adresy, kterou používá. Když spočítáte, kolik drahých hledání udělá každý zdroj za minutu, obojí rozlišíte, aniž byste potřebovali znát jména.

Co je omezení počtu požadavků na IP a proč i na síť?

Omezit na IP znamená nastavit strop: kolik požadavků e-shop přijme ze stejné adresy během časového okna – obvykle šedesáti sekund. Pod stropem projde všechno; nad ním dostane požadavek „vraťte se za chvíli“, jehož obsloužení nic nestojí.

Jen s tímhle zůstane robot, který si práci rozdělí mezi dvě stě adres stejné sítě, pod stropem u každé z nich. Proto je druhý limit na síť: adresy, které sdílejí první tři bloky (technik by řekl /24), se počítají dohromady. Mobilní operátor může vypadat podobně, takže tento strop je výš než strop na adresu, ale střídání přestane být zadarmo. A třetí brzda, na celý e-shop, funguje jako nouzový limit: když celkový počet hledání za minutu překročí, co váš server pohodlně zvládne, projdou jen návštěvníci, kteří už prokázali, že jsou lidé.

Kam limit patří: na server, nebo do e-shopu?

Počítat se dá na třech místech a každé vidí něco jiného.

  • V CDN (například pravidla rate limiting v Cloudflare). Počítá podle adresy a vzoru URL. Neví, který požadavek je drahý a který je obrázek, neví, jestli je návštěvník přihlášený, a s Googlebotem zachází jako s kýmkoli jiným. Na odpolední špičku to funguje; žít se tak ale nedá, buď přibrzdíte zákazníky víc, než je potřeba, nebo boty méně.
  • Na webovém serveru (moduly pro omezení požadavků v Apache nebo nginx, nebo fail2ban, který čte log). Počítá všechno, co přijde, včetně CSS a fotek, takže strop musí být tak vysoko, že skoro nebrzdí. A abyste na něj mohli sáhnout, musíte umět spravovat server, což na sdíleném hostingu ani nejde.
  • Přímo v e-shopu, dřív, než PrestaShop začne hledat. Je to jediné místo, které ví, co je drahé: filtrované hledání, vyhledávací pole, stránka výpisu, změna řazení. Jen to se do limitu počítá. Ví, jestli je návštěvník přihlášený – a pak ho neomezuje –, a umí ověřit, jestli ten, kdo tvrdí, že je Googlebot, jím opravdu je. Právě tam ho dává Ochrana proti botům pro PrestaShop, a proto může být limit nízký, aniž by obtěžoval kohokoli, kdo nakupuje.

Jak pustit dovnitř Google?

Tohle je obava, která většinu lidí brzdí, a oprávněně: špatně nastavený limit vás z Googlu vymaže sám. Odpovědí není seznam jmen, protože za Googlebota se může vydávat kdokoli: je to dotaz na síť. Každý požadavek, který tvrdí, že přichází od Googlu, se ověří zpětným dotazem DNS, a pokud adresa Googlu nepatří, požadavek od Googlu není, ať tvrdí cokoli.

Ověřené vyhledávače přicházejí s vlastní kvótou, oddělenou od návštěvníků, a stránky filtrů dostávají označené jako neindexovatelné. Přesně to Google doporučuje pro fasetovou navigaci: kombinace filtrů se nemají měnit v tisíce opakovaných stránek. Jakmile na ně přestanete plýtvat jeho časem, začne lépe procházet ty, na kterých vám záleží.

Co se stane, když někdo limit překročí?

Skript dostane „příliš mnoho požadavků“ s časem, kdy se smí vrátit, a vaši databázi to nic nestojí. Limit na adresu má ale jeden nepříjemný případ: kancelář se třiceti lidmi za jedním připojením, nebo zákazník, který filtruje hodně rychle. Ty není potřeba vyhazovat: je potřeba ověřit, že jsou to lidé.

Ověření, které funguje, je to, které nikdo nevidí. Proof of work – malý výpočet, který prohlížeč sám vyřeší za milisekundy, bez hádanek a zaškrtávacích políček – a propustka na jednu hodinu. Propustka neosvobozuje úplně, protože vyřešit ten výpočet je levné i pro skript: kdo ji má, má pořád strop na adresu, jen desetkrát vyšší.

Čísla na začátek

S oknem šedesáti sekund pokryje třicet drahých hledání na adresu, devadesát na síť a šest set na celý e-shop drtivou většinu e-shopů, aniž by si kterýkoli zákazník čehokoli všiml. Rychlý zákazník jich udělá dvacet za minutu; třicet už je někdo, kdo se nedívá, co filtruje.

Pokud tomu ještě nevěříte, existuje režim pozorování: limit sleduje a zaznamenává, co by zastavil, ale pustí všechno. Týden takhle a panel vám řekne, kolik požadavků by zůstalo za dveřmi a odkud přišly, a vy rozhodnete na základě dat.

Jak poznat, že je limit nastavený správně?

Limit, který se neměří, je limit, který jednoho dne obtěžuje zákazníka, aniž byste o tom věděli. Každý týden se vyplatí sledovat tři věci: kolik drahých hledání se obsloužilo a kolik zastavilo, které zdroje se zastavovaly nejčastěji a proč, a jestli mezi nimi není někdo váš – monitoring dostupnosti, feed pro srovnávač cen, zákazník, který si stěžoval. Ten dostane kliknutím důvěru a už se nikdy nepočítá.

A na pochybnosti je tu kontrola: vložíte adresu a prohlížeč z logu a stránku, o kterou žádal, a ona vám přesně řekne, co by s tím požadavkem teď udělala a proč. Tak se dá na limit sáhnout, aniž byste na něj sahali naslepo.

To vše – tři stropy, odraz přes cookie, Google ověřený přes DNS, neviditelné ověření, režim pozorování a panel s kontrolou – dělá Ochrana proti botům pro PrestaShop od minuty, kdy ji nainstalujete, na PrestaShopu 1.7.6 až 9 i za Cloudflare. A pokud chcete nejdřív vědět, jestli je to váš problém, pošlete nám přístupový log ze špatného dne přes kontaktní formulář: zdarma vám řekneme, kolik z těch požadavků jsou lidé a kolik šum.

Moduly zmíněné v tomto článku

Číst dál

Ochrana proti botům pro PrestaShop: štít fasetového vyhledávání a limit požadavků Ochrana proti botům pro PrestaShop: štít fasetového vyhledávání a limit požadavků 149,99 $ Zobrazit

Řekněte nám, co vaše firma potřebuje

Modul, aplikace, server, který vám dělá potíže, nebo něco naléhavého. Odpovíme do 24 hodin s pevnou nabídkou, cenou a termínem.