841 文字
4 分

CloudflareのBot Fight ModeがSlackでのOGP表示をブロックしている可能性がある

2025-02-09

ある時期から、運用しているサイトの OGP が Slack でだけ表示されない問題が発生していた。

OGP 画像の内部で外部の画像を参照していることや、Astro が stylesheet を巻き上げてしまう挙動によりページの読み込みに時間がかかってしまっている可能性を考え、順番に潰していったが解決は見られなかった。

そこで、コードとは別の場所で読み込みがブロックされている可能性を考えたところ、Cloudflare の Bot をブロックする機能のことを思い出した。

実験#

Cloudflare の Bot をブロックする機能は、Account Home→Domain→Security→Bots から設定できる。

問題が発生しているサイトで確認すると、Bot Fight Mode が有効になっていた。

alt text

試しに Bot Fight Mode をオフにして、Slack で URL を共有すると OGP が表示されるようになった。 ただし、1 回だけの確認では、その URL のページがたまたま表示されたという可能性が高い。

そこで同じ URL に対して Slack のキャッシュを回避するためにクエリパラメータを都度変更しながら、Bot Fight Mode のオン/オフ毎に 5 回程度 Slack へ張り付ける作業を複数回、計 20 回繰り返した。

その結果、Bot Fight Mode が有効な場合、常に OGP が表示されず、無効であれば常に表示されることが確認できた。

また、Bot Fight Mode な他のサイト 3 件についても、Slack で OGP が表示されていないことを確認した。

Bot Fight Mode について#

Bot Fight Mode は、Cloudflare が提供するセキュリティ機能の 1 つで、悪意のあるボットによるアクセスをブロックするための機能である。

2024 年に機能が発表された。

https://blog.cloudflare.com/ja-jp/declaring-your-aindependence-block-ai-bots-scrapers-and-crawlers-with-a-single-click/

当社が「モデルのトレーニングのために Web を広くスクレイピングしている」と判断した、問題のあるボットの新しいフィンガープリントを確認した時点で経時的に自動的に更新されます。

と記載されており、Slack 側の実装に問題のある可能性が考えられる。実際、Slack 以外のサービス(X、Discord、Facebook など)では OGP が表示されていた。

また、Free プランでは Bot Fight Mode を有効化すると、強制的に Bot JavaScript detectins も有効化されるため、この機能によって Slack での OGP 表示がブロックされている可能性も考えられる。JavaScript detectinsとは、Cloudflare からクライアントに検知用のスクリプトを渡すことで能動的なブロックを行う機能である。

結果#

Cloudflare の Bot Fight Mode が有効な場合、Slack で OGP 表示されないケースがあることを確認した。 ただし、これが Cloudflare 側の Bot Fight Mode や JavaScript detections の問題なのか、Slack 側の問題なのか、または利用サイドにも原因があるのかは実験が不十分なため断言できない。

なお、追加で Bot Fight Mode と同じ画面で設定できる Block AI Bots によっても Slack での OGP 表示が左右されるかも試したが、今回は影響が確認されなかった。

CloudflareのBot Fight ModeがSlackでのOGP表示をブロックしている可能性がある
https://blog.ohirunewani.com/posts/cloudflare-bot-fight-mode-may-block-the-display-of-ogps-in-slack/
作者
hrdtbs
公開日
2025-02-09
ライセンス
CC BY-NC-SA 4.0