Jak nastavit Cloudflare, aby neblokoval stahování feedu a obrázků?#
Proč Cloudflare blokuje Mergado, i když má povolenou IP adresu#
Pokud váš e-shop používá Cloudflare, může se stát, že Mergado (nebo některé z jeho rozšíření, například Feed Image Editor) nedokáže stáhnout váš feed nebo produktové obrázky, i když jste jeho IP adresu už přidali na whitelist.
Důvodem je to, že Cloudflare nemusí automatické stahování feedu vyhodnotit jako běžný přístup, ale jako podezřelý provoz, a může jej blokovat nebo mu zobrazit tzv. bezpečnostní výzvu (challenge). Tedy stránku typu “Just a moment…”, kterou umí vyřešit jen prohlížeč s JavaScriptem, ne automatizované stahování. Týká se to hlavně následujících funkcí Cloudflare:
- Bot Fight Mode / Super Bot Fight Mode,
- Managed Challenge (spravovaná výzva),
- Browser Integrity Check,
- Hotlink Protection,
- Security Level,
- WAF Managed Rules.
Prosté přidání IP adresy na starší IP Access Rules (whitelist) tyto funkce často nevypne. Navíc si všímáme, že Cloudflare tuto možnost na některých účtech postupně odebírá a nahrazuje ji flexibilnějším nástrojem WAF Custom Rules. Tento návod ukazuje, jak přes něj nastavit spolehlivou výjimku pro Mergado.
Jaké IP adresy potřebujete povolit#
- 81.31.39.112 - IP adresa, ze které Mergado stahuje váš vstupní feed.
- 81.31.39.116 - IP adresa, kterou používají některá rozšíření stahující produktové obrázky (např. Feed Image Editor, Bidding Fox, Pricing Fox, Fox Data+).
Pokud používáte i další rozšíření Mergada, zkontrolujte si jejich IP adresu v článku Jaké IP adresy používá Mergado a jeho rozšíření?
Krok za krokem: nastavení výjimky v Cloudflare#
a. Vytvořte nové Custom Rule#
- Přihlaste se do správy vaší domény v Cloudflare.
- V levém menu přejděte na Security → WAF → Custom rules (případně jen Security rules, podle verze rozhraní).
- Klikněte na Create rule.
b. Nastavte podmínku pro Mergado#
V sekci “When incoming requests match…” nastavte podmínku tak, aby odpovídala oběma IP adresám Mergada, například:
(ip.src eq 81.31.39.112) or (ip.src eq 81.31.39.116)Doporučujeme podmínku necílit navíc na konkrétní cestu (URI Path) nebo HTTP metodu. Čím jednodušší podmínka, tím menší riziko chyby, a protože jde jen o dvě konkrétní důvěryhodné IP adresy, nejde o žádné snížení zabezpečení vůči ostatnímu provozu.
Pozor na překlepy. Snadno se stane, že se do textového pole omylem dostane mezera navíc (např.
" /feed.xml"místo"/feed.xml") nebo špatné číslo v IP adrese. Taková podmínka pak nikdy nic nenajde, pravidlo se nikdy neuplatní a vy budete hledat problém jinde. Vždy zkontrolujte finální tvar v poli Expression Preview pod podmínkou.
c. Nastavte akci Skip a zaškrtněte všechny komponenty#
- V sekci „Then take action…“ zvolte akci Skip.
- Zaškrtněte úplně všechny volby pod „WAF components to skip“:
- All remaining custom rules
- All rate limiting rules
- All managed rules
- All Super Bot Fight Mode Rules
- Rozklikněte i „More components to skip“ a zaškrtněte i tyto:
- Zone Lockdown
- User Agent Blocking
- Browser Integrity Check
- Hotlink Protection
- Security Level
- Rate limiting rules (Previous version)
- Managed rules (Previous version)
Stačí, aby zůstala nezaškrtnutá jediná položka, a právě ta může stahování dál blokovat.
d. Umístěte pravidlo na první místo#
V sekci „Place at“ zvolte, aby se pravidlo vyhodnocovalo jako první (případně hned za jinými technickými pravidly, která nesouvisí s bezpečností). Cloudflare vyhodnocuje custom pravidla v pořadí shora dolů a jakmile nějaké dřívější pravidlo request zablokuje nebo mu zobrazí výzvu, k vašemu whitelist pravidlu se už vůbec nemusí dostat.
Pokud máte v Cloudflare i jiná bezpečnostní pravidla (např. blokování provozu mimo určitou zemi, ochranu proti botům apod.), zkontrolujte, že žádné z nich není umístěné výše než pravidlo pro Mergado.
e. Uložte pravidlo#
Klikněte na Save. Změna se obvykle projeví během několika sekund až minut.
Co dělat, když problém přetrvává i po nastavení pravidla#
Ověřte, že pravidlo opravdu zabírá#
- V Cloudflare přejděte na Security → Events (nebo Security → Analytics → Events).
- Vyfiltrujte události podle zdrojové IP adresy (81.31.39.112 nebo 81.31.39.116).
- U konkrétní události se podívejte na sekci „Matched service“. Mělo by tam být uvedeno Action taken: Skip a název vašeho pravidla.
Pokud vidíte místo toho jinou akci (např. Managed Challenge nebo Block) a jiné pravidlo, znamená to, že se vaše whitelist pravidlo vůbec neuplatnilo, a je potřeba zkontrolovat podmínku (krok b) nebo pořadí pravidel (krok d).
Zkontrolujte i zabezpečení na straně hostingu#
Pokud váš e-shop běží na spravovaném hostingu (např. Kinsta, WP Engine a podobné služby), může mít vlastní, na Cloudflare nezávislou ochranu proti botům, kterou je nutné nastavit zvlášť. I po správném nastavení Cloudflare se tak může stát, že požadavek na stažení feedu nebo obrázku dál skončí chybou 403 Forbidden, tentokrát ale z hostingu, ne z Cloudflare.
V takovém případě vyhledejte v administraci hostingu sekci pro ochranu proti botům (např. „Bot protection“) a přidejte tam obě IP adresy Mergada do seznamu výjimek (často nazvaného „Always allow“ nebo podobně). U některých rozšíření (např. Feed Image Editor) je možné přidat do výjimek i user-agenta, kterým se rozšíření identifikuje: feedimageeditor/2.0.
Jak poznat, jestli blokuje Cloudflare nebo hosting#
Pomůže technický test odpovědi serveru (např. příkazem curl -I na konkrétní URL obrázku nebo feedu). Rozhodující je hlavička cf-mitigated: challenge v odpovědi:
- Pokud je přítomná, request zachytává Cloudflare (pokračujte v krocích výše).
- Pokud chybí, ale request přesto skončí chybou 403, jde nejspíš o ochranu na straně hostingu, ne Cloudflare.
Hlavičky jako server: cloudflare nebo cf-ray se objevují na každé odpovědi, která přes Cloudflare prochází, ať už request blokuje Cloudflare, nebo jen provoz přeposílá dál na hosting, a samy o sobě tedy neurčují, kdo request zablokoval.
FAQ#
Proč nestačí přidat IP adresu Mergada na starší whitelist (IP Access Rules)?#
IP Access Rules dokážou request pustit dovnitř, ale nemusí vypnout všechny ostatní ochrany (Bot Fight Mode, Managed Challenge, Browser Integrity Check apod.), které mohou požadavek na stažení feedu nebo obrázku zablokovat i tak. Spolehlivější je proto vytvořit Custom Rule s akcí Skip, která tyto ochrany pro dané IP adresy explicitně vypne.
Musím zaškrtnout opravdu všechny komponenty ve „WAF components to skip“?#
Ano, doporučujeme zaškrtnout je všechny. Pravidlo cílí jen na dvě konkrétní, důvěryhodné IP adresy Mergada, takže tím nesnižujete ochranu webu vůči ostatnímu provozu. Stačí, aby zůstala nezaškrtnutá jediná položka, a stahování může dál selhávat.
Nastavil/a jsem vše podle návodu a feed/obrázky se pořád nestahují. Co dál?#
Zkontrolujte v Cloudflare v sekci Security → Events, jakou akci a jaké pravidlo Cloudflare u požadavků z IP 81.31.39.112 nebo 81.31.39.116 skutečně použil. Pokud vidíte jinou akci než Skip, projděte znovu podmínku pravidla (možný překlep) a jeho pořadí mezi ostatními pravidly. Pokud pravidlo funguje správně a přesto dostáváte chybu 403, může jít o samostatnou ochranu na straně vašeho hostingu.
Jak poznám, že Mergado už feed skutečně stahuje?#
V projektu v Mergadu přejděte na stránku Historie a v kolonce Typ události si vyfiltrujte Stahování (případně Import produktů). Uvidíte tak záznamy o jednotlivých pokusech včetně času a počtu stažených produktů.