방화벽에서 Shoply AI의 크롤러를 허용하는 방법

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

Shoply AI는 정기적으로 귀하의 웹사이트를 읽어 답변의 정확성을 유지합니다. 사이트에서 Cloudflare 또는 다른 방화벽이나 봇 보호 서비스를 사용하고 있다면, 해당 서비스가 Shoply의 크롤러를 차단할 수 있습니다. 이런 경우 챗봇은 사이트의 오래된 복사본을 바탕으로 계속 답변하게 됩니다.

해결 방법은 보통 규칙 하나면 충분합니다: User-Agent에 ShoplyAIBot이 포함된 요청을 허용하세요. 이 가이드는 왜 크롤러가 필요한지, 이를 어떻게 식별하는지, 그리고 Cloudflare 및 기타 방화벽에서 어떻게 허용하는지를 설명합니다.

누가 이 작업을 해야 하나요?

  • SiteChat 웹사이트 소유자. SiteChat은 Shopify 스토어가 아닌 모든 웹사이트(예: Magento 스토어)를 위한 Shoply의 채팅 및 검색 기능입니다.
  • 해당 웹사이트의 호스팅, 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 contains 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을 만드세요. skip 규칙은 일치하는 요청이 원래 차단되거나 챌린지 대상이 되었을 보안 검사를 우회하도록 해줍니다.

1단계: skip 규칙 만들기

  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

    표현식 편집기를 선호한다면 다음을 사용하세요:

    text
    (http.user_agent contains "ShoplyAIBot")
  5. Then take action > Choose action에서 Skip을 선택합니다.

  6. 무엇을 skip할지 선택합니다(아래 표 참조).

  7. Log matching requests는 켜 둡니다. 그러면 Shoply의 요청이 Cloudflare의 Security Events에 표시되어 문제 해결에 도움이 됩니다.

  8. Deploy를 선택합니다.

2단계: 무엇을 skip할지 선택하기

Cloudflare의 Skip 옵션Skip할까요?이유
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에서 rate limiting 규칙이 Shoply를 차단하는 것으로 보일 때만Shoply의 요청 속도는 낮지만 엄격한 제한에 걸릴 수 있음
All managed rulesSecurity Events에서 managed rule이 Shoply를 차단하는 것으로 보일 때만다른 모든 사용자에게는 Cloudflare의 공격 패턴 규칙을 계속 활성 상태로 유지함
All remaining custom rules봇을 차단하는 다른 custom rule이 있는 경우뒤에 있는 custom rule이 Shoply를 차단하지 못하게 함

먼저 “예”로 표시된 항목부터 시작하세요. Cloudflare의 Security Events에서 여전히 Shoply의 요청이 차단되거나 챌린지되는 것으로 표시된다면, 이벤트에 어떤 기능이 작동했는지가 나옵니다. 해당 기능을 skip 규칙에 추가하세요.

3단계: 규칙을 맨 위에 두기

Cloudflare는 custom rule을 위에서 아래 순서로 평가합니다. 귀하의 규칙보다 위에 있는 다른 규칙이 요청을 차단하거나 챌린지하면, Shoply용 skip 규칙은 실행되지 않습니다. Shoply 규칙을 custom rule 목록의 맨 위로 이동하세요.

Bot Fight Mode를 사용하는 경우(Cloudflare Free 요금제)

Bot Fight Mode는 skip 규칙으로 우회할 수 없습니다. Cloudflare는 이를 custom rule과 별도로 실행하므로 skip 및 allow 규칙이 영향을 주지 않습니다. 선택지는 두 가지입니다:

  • 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를 보내는 모든 대상에게 일부 봇 검사를 건너뛰게 합니다. 위험을 작게 유지하려면 크롤러를 막는 기능만 skip하고, 로그인, 결제, 관리자 영역에 대한 보호는 그대로 유지하세요. Shoply는 이런 영역에 접근할 필요가 없습니다.

다른 방화벽에서는 Shoply를 어떻게 허용하나요?

원리는 어디서나 같습니다: User-Agent에 ShoplyAIBot이 포함된 요청을 허용하세요. 정확한 메뉴는 제품마다 다르므로, allow 또는 exception 규칙을 만드는 방법은 사용 중인 벤더의 문서를 따르세요. 일반적으로 확인해야 할 위치는 다음과 같습니다:

  • Sucuri, AWS WAF, Akamai 같은 클라우드 웹 애플리케이션 방화벽(WAF): User-Agent 헤더와 일치하는 allow 또는 exception 규칙을 추가하세요.
  • Wordfence 같은 WordPress 보안 플러그인: 봇 차단, rate limiting, 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 키는 보내지 마세요.