ファイアウォールで Shoply AI のクローラーを許可する方法

A brick firewall opens one gate so Shoply's crawler can carry website pages to the chat assistant

Shoply AI は、あなたのウェブサイトを定期的に読み取ることで回答の正確性を保っています。サイトで Cloudflare やその他のファイアウォール、またはボット保護サービスを使用している場合、そのサービスが Shoply のクローラーをブロックすることがあります。そうなると、チャットボットは古いサイトのコピーをもとに回答し続けます。

通常、必要な対応は 1 つのルールだけです。User-Agent に ShoplyAIBot を含むリクエストを許可します。 このガイドでは、なぜクローラーが必要なのか、どのように識別するのか、そして Cloudflare やその他のファイアウォールでどのように許可するのかを説明します。

これは誰が対応する必要がありますか?

  • SiteChat のウェブサイト所有者。 SiteChat は、Shopify ストアではないあらゆるウェブサイト向けの Shoply のチャットと検索であり、Magento ストアも含まれます。
  • 代理店や開発者 で、それらのウェブサイトのホスティング、CDN(コンテンツ配信ネットワーク)、またはセキュリティ設定を管理している方。

通常、Shopify アプリの加盟店は何も変更する必要はありません。 Shoply はストアフロントをクロールするのではなく、Shopify の API を通じて Shopify の商品データを取得します。ただし、別の場所でホストされているヘルプセンターやブログなど、Shopify 以外のウェブサイトのページをナレッジソースとして追加している場合、そのウェブサイトのファイアウォールが Shoply をブロックする可能性はあります。それらのページがどこに一覧表示されるかについては、Shoply にあなたのストアについて教える方法 をご覧ください。

なぜ Shoply は私のウェブサイトを読み取る必要があるのですか?

Shoply は、クロール設定で指定したページを読み取り、チャットボットの回答、価格、リンクが公開中のサイトと一致するようにします。

Magento ストア の場合、Shoply はストアの GraphQL エンドポイント(/graphql)を通じて公開商品カタログも読み取ります。名前、SKU、価格、バリエーション、商品 URL などの詳細を取得するために、読み取り専用の商品クエリを送信します。

クローラーがログインしたり、注文を行ったり、フォームを送信したりすることはありません。Shoply がこのコンテンツをどのように扱うかについては、Shoply が顧客の質問に回答するために使用する情報 をお読みください。

クローラーがブロックされるとどうなりますか?

  • クロールが失敗します。 Shoply はページや商品データを取得できません。
  • AI は最後に成功したクロールの内容から回答し続けます。 顧客に古い価格、すでに削除した商品、古いまたは誤ったリンクが表示される可能性があります。実際の事例では、あるストアが開発サイトから本番ドメインへ移行したものの、ファイアウォールがクローラーをブロックしていたため、チャットボットが顧客を古い開発サイトへ案内し続けていました。
  • Shoply 管理画面の「Last updated … ago」 が更新されなくなります。

クローラーがブロックされている一般的な兆候

Shoply 管理画面でクロール時刻の遅れが大きくなります。 ダッシュボードの Content crawled by Shoply AI の下にある 「Last updated at: … ago」 の時刻が、数時間ごとにリセットされる代わりに増え続けます。たとえば「770 hours ago」(約 1 か月前)のように表示されます。Recrawl Now をクリックしても、ブロックされたクロールは完了しないため、遅れたままになります。

ファイアウォールのログを確認すると、一般的な症状は Cloudflare が Shoply のリクエストに HTTP 403 を返していることです。主に次のいずれかの形になります。

  • Error 1010。これは、サイト所有者がブラウザシグネチャに基づいてそのリクエストを禁止したことを意味します。Cloudflare 自身のこのエラーに対する対処法は Browser Integrity Check を示しています。
  • 「Just a moment…」 のチャレンジページ。これはクローラーでは完了できません。

Shoply のクローラーはどう見分ければよいですか?

Shoply のクローラーからのすべてのリクエストは、この User-Agent を使用します。

text
ShoplyAIBot/1.0 (https://shoplyai.ai; support@shoplyai.ai; For sites installed Shoply AI Search & Chatbot)

ルールは、より短い文字列 ShoplyAIBot に一致するように記述してください(たとえば「User-Agent に ShoplyAIBot を含む」)。そうすれば、バージョン番号が変わってもルールは機能し続けます。

IP アドレスではなく user agent で許可してください。 Shoply のクローラーは固定 IP アドレスを使用しないため、IP 許可リストは安定して機能しません。

クローラーの動作

  • Shoply で設定したサイトだけをクロールします。
  • ページの読み取り時に robots.txt に従います。 robots.txt がページをブロックしている場合、Shoply はそのページをスキップします。AI に学習させたいページをブロックしていないか確認してください。
  • サーバーへの負荷は控えめです。 同時リクエストは最大 2 件で、各リクエストの間に 2 秒の待機があります。
  • ページ数には上限があり、 その上限はご利用の Shoply プランによって決まります。

クローラーが実行されるタイミング

  • スケジュールに従って自動実行。 頻度はプランによって異なります。
  • Shoply 管理画面で「Recrawl Now」をクリックしたとき。
  • クロール失敗が続いている間は 2 日ごと。 Shoply は自動で再試行するため、許可ルールを追加すれば、次の再試行または手動の再クロールでサイトが取り込まれます。

Cloudflare で Shoply を許可するにはどうすればよいですか?

Cloudflare では、Skip アクションを使った custom rule を作成します。スキップルールを使うと、一致したリクエストは本来ブロックまたはチャレンジされるはずのセキュリティチェックを回避できます。

ステップ 1: スキップルールを作成する

  1. Cloudflare ダッシュボードで、あなたのウェブサイト(zone)を開き、Security rules に移動します。

  2. Create rule > Custom rules を選択します。

  3. Rule name に、Allow Shoply AI crawler のような分かりやすい名前を入力します。

  4. When incoming requests match で、次のように設定します。

    • Field: User Agent
    • Operator: contains
    • Value: ShoplyAIBot

    Expression editor を使う場合は、次を使用します。

    text
    (http.user_agent contains "ShoplyAIBot")
  5. Then take action > Choose action で、Skip を選択します。

  6. スキップする対象を選択します(下の表を参照)。

  7. Log matching requests はオンのままにします。これにより、Shoply のリクエストが Cloudflare の Security Events に表示され、トラブルシューティングに役立ちます。

  8. Deploy を選択します。

ステップ 2: 何をスキップするか選ぶ

Cloudflare のスキップ項目スキップする?理由
Browser Integrity Checkはいクローラーに対して error 1010 を引き起こすため
Security LevelはいSecurity Level のチェックによるクローラーへのチャレンジを防ぐため
All Super Bot Fight Mode rulesはい、Pro プラン以上でSuper Bot Fight Mode はクローラーにチャレンジしたりブロックしたりすることがあるため
User Agent Blocking使用している場合user-agent ブロックルールを作成している場合にのみ関係します
All rate limiting rulesSecurity Events に Shoply をブロックした rate limiting rule が表示される場合のみShoply のリクエスト頻度は低いですが、厳しい制限では引っかかることがあります
All managed rulesSecurity Events に managed rule が Shoply をブロックしたと表示される場合のみCloudflare の攻撃パターン用ルールを他のすべての訪問者向けには有効なままにできます
All remaining custom rulesボットをブロックする他の custom rule がある場合後続の custom rule が Shoply をブロックするのを防ぎます

まずは「はい」の行から始めてください。それでも Cloudflare の Security Events に Shoply のリクエストがブロックまたはチャレンジされたと表示される場合、そのイベントでどの機能が作用したか分かります。その機能をスキップルールに追加してください。

ステップ 3: ルールを先頭に置く

Cloudflare は custom rule を上から順に評価します。あなたのルールより上にあるルールがリクエストをブロックまたはチャレンジすると、スキップルールは実行されません。Shoply のルールを custom rule 一覧の最上部に移動してください。

Bot Fight Mode を使用している場合(Cloudflare Free プラン)

Bot Fight Mode はスキップルールで回避できません。 Cloudflare はこれを custom rule とは別に実行するため、skip ルールや allow ルールは効果がありません。選択肢は 2 つあります。

  • Bot Fight Mode をオフにする: Security > Settings に移動し、Bot traffic で絞り込み、Bot fight mode をオフにします。
  • Pro プラン以上にアップグレードする そして Super Bot Fight Mode を使用します。こちらは skip ルールに対応しています。

Under Attack mode がオンの場合

Under Attack mode はすべての訪問者にチャレンジページを表示し、クローラーはそれを通過できません。Cloudflare はこれを実際に攻撃を受けている間のみ使用することを推奨しています。オフにするまで、Shoply はサイトを読み取れません。

user agent を許可するのは安全ですか?

どのクライアントでも ShoplyAIBot を名乗ることはできるため、このルールはその User-Agent を送る相手に対して一部のボットチェックをスキップします。リスクを小さく保つには、クローラーをブロックしている機能だけをスキップし、ログイン、チェックアウト、管理画面の保護はそのまま維持してください。Shoply がそれらの領域にアクセスする必要はありません。

その他のファイアウォールで Shoply を許可するにはどうすればよいですか?

どこでも原則は同じです。User-Agent に ShoplyAIBot を含むリクエストを許可します。 正確なメニューは製品ごとに異なるため、allow ルールまたは例外ルールの作成については、ご利用ベンダーのドキュメントに従ってください。よく確認すべき場所は次のとおりです。

  • クラウド型 Web アプリケーションファイアウォール(WAF) たとえば Sucuri、AWS WAF、Akamai: User-Agent ヘッダーに一致する allow ルールまたは例外ルールを追加します。
  • Wordfence などの WordPress セキュリティプラグイン: ボットブロック、レート制限、または user-agent ブロックの設定を探してください。
  • ModSecurity ルールなどのサーバーレベルのフィルター や、ホスティング会社が提供するボットブロッカー: user agent をホワイトリストに追加するか、ホストに依頼してください。

Magento ストア: ルールが /graphql への POST リクエスト も対象にしていることを確認してください。ファイアウォールによっては、API リクエストをページビューとは別に扱います。ページは許可されていても /graphql がブロックされていると、商品カタログは更新されません。

IP 許可リストに頼らないでください。Shoply のクローラーは固定 IP アドレスを使用しません。

正しく機能したかどうかはどう確認できますか?

  1. Shoply 管理画面で Recrawl Now をクリックします。
  2. クロールの完了を待ってから、ダッシュボードの 「Last updated」 が最近の時刻にリセットされていることを確認します。
  3. 最近変更した商品やページについてチャットボットに質問し、回答とリンクが公開中のサイトと一致していることを確認します。

自分のコンピューターから簡単な確認を行うこともできます。https://your-site.com/ をあなたのウェブサイトのアドレスに置き換えてください。

bash
curl -I -A "ShoplyAIBot/1.0 (https://shoplyai.ai; support@shoplyai.ai; For sites installed Shoply AI Search & Chatbot)" https://your-site.com/

HTTP/2 200(または HTTP/1.1 200 OK)という応答であれば、その user agent をルールが通していることを意味します。403 の場合は、まだ何かがそれをブロックしています。

このテストは Shoply のサーバーではなく、あなたのコンピューターの IP アドレスから実行されます。ファイアウォールによっては、送信元に応じてトラフィックの扱いを変えるため、最終確認は Shoply 管理画面での再クロールです。

サポートが必要ですか?

ウェブサイトのアドレス、使用しているファイアウォールまたはホスティング事業者、そしてファイアウォールのログにあるブロックされたリクエストのスクリーンショットを添えて、support@shoplyai.ai までメールしてください。パスワードや API キーは送らないでください。