Ako nastaviť Cloudflare, aby neblokoval sťahovanie feedu a obrázkov?#

Prečo Cloudflare blokuje Mergado, aj keď má povolenú IP adresu#

Ak váš e-shop používa Cloudflare, môže sa stať, že Mergado (alebo niektoré z jeho rozšírení, napríklad Feed Image Editor) nedokáže stiahnuť váš feed alebo produktové obrázky, aj keď ste jeho IP adresu už pridali na whitelist.

Dôvodom je to, že Cloudflare nemusí automatické sťahovanie feedu vyhodnotiť ako bežný prístup, ale ako podozrivú prevádzku, a môže ho blokovať alebo mu zobraziť takzvanú bezpečnostnú výzvu (challenge). Teda stránku typu “Just a moment…”, ktorú vie vyriešiť len prehliadač s JavaScriptom, nie automatizované sťahovanie. Týka sa to hlavne nasledujúcich funkcií Cloudflare:

  • Bot Fight Mode / Super Bot Fight Mode,
  • Managed Challenge (spravovaná výzva),
  • Browser Integrity Check,
  • Hotlink Protection,
  • Security Level,
  • WAF Managed Rules.

Samotné pridanie IP adresy na staršie IP Access Rules (whitelist) tieto funkcie často nevypne. Navyše si všímame, že Cloudflare túto možnosť na niektorých účtoch postupne odoberá a nahrádza ju flexibilnejším nástrojom WAF Custom Rules. Tento návod ukazuje, ako cez neho nastaviť spoľahlivú výnimku pre Mergado.

Aké IP adresy potrebujete povoliť#

  • 81.31.39.112 - IP adresa, z ktorej Mergado sťahuje váš vstupný feed.
  • 81.31.39.116 - IP adresa, ktorú používajú niektoré rozšírenia sťahujúce produktové obrázky (napríklad Feed Image Editor, Bidding Fox, Pricing Fox, Fox Data+).

Ak používate aj ďalšie rozšírenia Mergada, skontrolujte si ich IP adresu v článku Aké IP adresy používa Mergado a jeho rozšírenia?

Krok za krokom: nastavenie výnimky v Cloudflare#

a. Vytvorte nové Custom Rule#

  1. Prihláste sa do správy vašej domény v Cloudflare.
  2. V ľavom menu prejdite na Security → WAF → Custom rules (prípadne len Security rules, podľa verzie rozhrania).
  3. Kliknite na Create rule.

b. Nastavte podmienku pre Mergado#

V sekcii “When incoming requests match…” nastavte podmienku tak, aby zodpovedala obom IP adresám Mergada, napríklad:

(ip.src eq 81.31.39.112) or (ip.src eq 81.31.39.116)

Odporúčame podmienku necieliť navyše na konkrétnu cestu (URI Path) alebo HTTP metódu. Čím jednoduchšia podmienka, tým menšie riziko chyby, a pretože ide len o dve konkrétne dôveryhodné IP adresy, nejde o žiadne zníženie zabezpečenia voči ostatnej prevádzke.

Pozor na preklepy. Ľahko sa stane, že sa do textového poľa omylom dostane medzera navyše (napríklad " /feed.xml" namiesto "/feed.xml") alebo zlé číslo v IP adrese. Taká podmienka potom nikdy nič nenájde, pravidlo sa nikdy neuplatní a vy budete hľadať problém inde. Vždy skontrolujte finálny tvar v poli Expression Preview pod podmienkou.

c. Nastavte akciu Skip a zaškrtnite všetky komponenty#

  1. V sekcii „Then take action…“ zvoľte akciu Skip.
  2. Zaškrtnite úplne všetky voľby pod „WAF components to skip“:
    • All remaining custom rules
    • All rate limiting rules
    • All managed rules
    • All Super Bot Fight Mode Rules
  3. Rozkliknite aj „More components to skip“ a zaškrtnite aj tieto:
    • Zone Lockdown
    • User Agent Blocking
    • Browser Integrity Check
    • Hotlink Protection
    • Security Level
    • Rate limiting rules (Previous version)
    • Managed rules (Previous version)

Stačí, aby zostala nezaškrtnutá jediná položka, a práve tá môže sťahovanie ďalej blokovať.

d. Umiestnite pravidlo na prvé miesto#

V sekcii „Place at“ zvoľte, aby sa pravidlo vyhodnocovalo ako prvé (prípadne hneď za inými technickými pravidlami, ktoré nesúvisia s bezpečnosťou). Cloudflare vyhodnocuje custom pravidlá v poradí zhora nadol a hneď ako nejaké skoršie pravidlo request zablokuje alebo mu zobrazí výzvu, k vášmu whitelist pravidlu sa už vôbec nemusí dostať.

Ak máte v Cloudflare aj iné bezpečnostné pravidlá (napríklad blokovanie prevádzky mimo určitej krajiny, ochranu proti botom a podobne), skontrolujte, že žiadne z nich nie je umiestnené vyššie než pravidlo pre Mergado.

e. Uložte pravidlo#

Kliknite na Save. Zmena sa obvykle prejaví počas niekoľkých sekúnd až minút.

Čo robiť, keď problém pretrváva aj po nastavení pravidla#

Overte, že pravidlo naozaj zaberá#

  1. V Cloudflare prejdite na Security → Events (alebo Security → Analytics → Events).
  2. Vyfiltrujte udalosti podľa zdrojovej IP adresy (81.31.39.112 alebo 81.31.39.116).
  3. Pri konkrétnej udalosti sa pozrite na sekciu „Matched service“. Malo by tam byť uvedené Action taken: Skip a názov vášho pravidla.

Ak vidíte namiesto toho inú akciu (napríklad Managed Challenge alebo Block) a iné pravidlo, znamená to, že sa vaše whitelist pravidlo vôbec neuplatnilo, a je potrebné skontrolovať podmienku (krok b) alebo poradie pravidiel (krok d).

Skontrolujte aj zabezpečenie na strane hostingu#

Ak váš e-shop beží na spravovanom hostingu (napríklad Kinsta, WP Engine a podobné služby), môže mať vlastnú, na Cloudflare nezávislú ochranu proti botom, ktorú je nutné nastaviť zvlášť. Aj po správnom nastavení Cloudflare sa tak môže stať, že požiadavka na stiahnutie feedu alebo obrázka ďalej skončí chybou 403 Forbidden, tentokrát ale z hostingu, nie z Cloudflare.

V takom prípade vyhľadajte v administrácii hostingu sekciu pre ochranu proti botom (napríklad „Bot protection“) a pridajte tam obe IP adresy Mergada do zoznamu výnimiek (často nazvaného „Always allow“ alebo podobne). Pri niektorých rozšíreniach (napríklad Feed Image Editor) je možné pridať do výnimiek aj user-agenta, ktorým sa rozšírenie identifikuje: feedimageeditor/2.0.

Ako spoznať, či blokuje Cloudflare alebo hosting#

Pomôže technický test odpovede servera (napríklad príkazom curl -I na konkrétnu URL obrázka alebo feedu). Rozhodujúca je hlavička cf-mitigated: challenge v odpovedi:

  • Ak je prítomná, request zachytáva Cloudflare (pokračujte v krokoch vyššie).
  • Ak chýba, ale request napriek tomu skončí chybou 403, ide najskôr o ochranu na strane hostingu, nie Cloudflare.

Hlavičky ako server: cloudflare alebo cf-ray sa objavujú na každej odpovedi, ktorá cez Cloudflare prechádza, či už request blokuje Cloudflare, alebo len prevádzku preposiela ďalej na hosting, a samy o sebe teda neurčujú, kto request zablokoval.

FAQ#

Prečo nestačí pridať IP adresu Mergada na starší whitelist (IP Access Rules)?#

IP Access Rules dokážu request pustiť dovnútra, ale nemusia vypnúť všetky ostatné ochrany (Bot Fight Mode, Managed Challenge, Browser Integrity Check a podobne), ktoré môžu požiadavku na stiahnutie feedu alebo obrázka zablokovať aj tak. Spoľahlivejšie je preto vytvoriť Custom Rule s akciou Skip, ktorá tieto ochrany pre dané IP adresy explicitne vypne.

Musím zaškrtnúť naozaj všetky komponenty vo „WAF components to skip“?#

Áno, odporúčame zaškrtnúť ich všetky. Pravidlo cieli len na dve konkrétne, dôveryhodné IP adresy Mergada, takže tým neznižujete ochranu webu voči ostatnej prevádzke. Stačí, aby zostala nezaškrtnutá jediná položka, a sťahovanie môže ďalej zlyhávať.

Nastavil/a som všetko podľa návodu a feed/obrázky sa stále nesťahujú. Čo ďalej?#

Skontrolujte v Cloudflare v sekcii Security → Events, akú akciu a aké pravidlo Cloudflare pri požiadavkách z IP 81.31.39.112 alebo 81.31.39.116 skutočne použil. Ak vidíte inú akciu než Skip, prejdite znova podmienku pravidla (možný preklep) a jeho poradie medzi ostatnými pravidlami. Ak pravidlo funguje správne a napriek tomu dostávate chybu 403, môže ísť o samostatnú ochranu na strane vášho hostingu.

Ako spoznám, že Mergado už feed skutočne sťahuje?#

V projekte v Mergade prejdite na stránku História a v kolónke Typ udalosti si vyfiltrujte Sťahovanie (prípadne Import produktov). Uvidíte tak záznamy o jednotlivých pokusoch vrátane času a počtu stiahnutých produktov.

Bol tento článok užitočný?