RevealTheme logo

RevealTheme 탐지기의 작동 원리

저희 탐지기 중 하나에 URL을 입력하면, 결과를 보기까지 2초 동안 많은 일이 일어납니다. 호기심 많은 분들을 위한 기술적 안내이며, 엔지니어링으로 해결할 수 없는 한계도 포함되어 있습니다.

1단계: 공개 HTML 가져오기

귀하가 URL을 제출하면, 저희 서버는 표준 브라우저 User-Agent를 사용하여 해당 URL의 공개 웹페이지를 가져옵니다. 이는 귀하가 사이트를 직접 방문했을 때 브라우저가 받게 될 것과 동일한 HTML입니다. 저희는 유료 장벽을 우회하지 않고, 로그인으로 보호된 콘텐츠를 추출하지 않으며, 어떠한 인증도 사용하지 않습니다.

가져오기는 20초의 타임아웃을 사용합니다. 저희는 최대 10개의 리디렉션을 따릅니다(HTTP → HTTPS, www → non-www, 국가별 리디렉션을 포함). 사이트가 4xx 또는 5xx 응답을 반환하거나 타임아웃 시간 내에 응답하지 않으면, 추측하는 대신 명확한 «접근할 수 없음» 오류를 반환합니다.

2단계: 플랫폼 탐지

특정 테마를 식별하기 전에, 사이트가 어떤 CMS로 실행되는지 확인합니다. 저희는 지원하는 7개 플랫폼(WordPress, Shopify, Magento, Joomla, Drupal, Moodle, PrestaShop)의 흔적을 찾고 가장 강력한 일치를 선택합니다.

Shopify URL을 저희 WordPress 탐지기에 제출하면(또는 그 반대), 저희가 이를 알려드리고 올바른 탐지기로 연결합니다. 추측 없음, 오탐 없음.

3단계: 테마 탐지

WordPress의 경우, 테마 참조는 보통 wp-content/themes/테마_이름/style.css와 같은 경로로 페이지의 HTML에 나타납니다. 저희는 문서의 어느 부분에서든 이러한 참조를 모두 추출합니다: link 태그, script 태그, 인라인 JavaScript, JSON-LD 블록, 심지어 텍스트 콘텐츠까지. 이는 고도로 최적화된 사이트가 표준 탐지 도구로부터 숨긴 테마를 탐지합니다.

탐지된 각 테마에 대해, 저희는 테마의 style.css 파일을 가져오려고 시도합니다. 그 파일의 헤더에는 테마 개발자가 직접 작성한 공식 테마 이름, 작성자, 버전, URI, 설명이 들어 있습니다. 이것이 저희가 탐지 결과와 함께 표시하는 풍부한 테마 정보의 출처입니다.

4단계: 플러그인 탐지

플러그인 탐지는 두 가지 병렬 접근 방식을 사용합니다. 첫째, wp-content/plugins/플러그인_이름/과 일치하는 모든 파일 경로를 추출합니다. 둘째, 수십 가지 서명 기반 점검을 실행합니다: Elementor, Yoast SEO, WPForms, WooCommerce, Wordfence 등 인기 플러그인을 고유하게 식별하는 특정 HTML 구조, CSS 클래스 이름, 인라인 JavaScript 변수, HTTP 응답 헤더를 찾습니다.

이중 접근 방식 설계는 (캐싱이나 리소스 번들링을 통해) 파일 경로를 숨기지만 여전히 독특한 서명을 남기는 플러그인을 탐지합니다. 탐지된 각 플러그인에 대해, 저희는 WordPress.org 플러그인 디렉터리에서 이를 조회하여 공식 플러그인 이름, 설명, 작성자, 스크린샷으로 결과를 보강합니다.

5단계: 호스팅 + DNS 조회

호스팅 제공업체를 식별하기 위해, 저희는 도메인에 대해 DNS 조회를 수행하고 IP 주소, ASN, 역방향 DNS를 검사합니다. 저희는 이를 알려진 호스팅 제공업체 IP 범위 데이터베이스와 대조하여 제공업체를 식별합니다. 주요 호스팅(AWS, Cloudflare, Hostinger, SiteGround 등)에 대해서는 정확도가 높고, 틈새 제공업체에 대해서는 낮습니다.

저희가 할 수 없는 것

코드가 아무리 뛰어나도 탐지가 작동하지 않는 몇 가지 경우:

  • Cloudflare 봇 챌린지. 엄격한 Cloudflare 봇 차단 보호(«보안 확인을 수행하는 중...» 화면)가 있는 사이트는 모든 자동화된 요청을 차단하듯이 저희 가져오기 도구를 차단합니다. 이를 우회하는 깔끔한 방법은 없습니다.
  • 고도로 맞춤화된 테마. 테마가 너무 많이 수정되어 HTML에서 원래 테마 이름에 대한 모든 참조가 제거되었다면, 탐지할 것이 없습니다.
  • 리소스 경로를 다시 작성하는 공격적인 캐싱. LiteSpeed Cache, WP Rocket, Cloudflare의 Rocket Loader 같은 플러그인은 때때로 출처를 숨기기 위해 리소스 URL을 다시 작성합니다. 저희의 서명 기반 탐지는 이들 대부분을 잡아내지만 전부는 아닙니다.
  • 정적 내보내기 사이트. 정적 HTML로 내보낸 WordPress 사이트는 탐지를 가능하게 하는 대부분의 런타임 서명을 잃습니다.

저희가 하지 않는 것

이런 질문을 받았습니다. 답은 «아니요»입니다:

  • 저희는 귀하가 제출하는 URL을 저장하지 않습니다
  • 저희는 마케팅 목적으로 IP 주소를 기록하지 않습니다
  • 저희는 탐지 데이터를 제공업체와 공유하지 않습니다
  • 저희는 인증, robots.txt 또는 기타 접근 제어를 우회하지 않습니다
  • 저희는 보안상의 이유로 내부/사설 IP(127.0.0.1, 10.x.x.x 등)에서 탐지기를 실행하지 않습니다

전체 개인정보 보호 세부 사항은 저희의 개인정보 처리방침에 있습니다.

API 접근

현재 공개 API를 제공하지 않지만, 에이전시와 연구자를 위해 요청 시 제한된 프로그래밍 방식 접근이 가능합니다. 귀하의 사용 사례와 예상 요청량을 적어 hello@revealtheme.com으로 보내주세요.

왜 오픈 소스가 아닌가요?

탐지 규칙은 제품의 핵심이며, 테마와 플러그인이 진화함에 따라 저희는 이를 자주 업데이트합니다. 그 코드를 공개하면 업데이트 속도가 느려질 것입니다. 그렇긴 하지만, 저희는 탐지 기법에 대한 상세한 글을 저희 블로그에 게시합니다: «탐지»로 검색하여 찾으세요.

사용해 볼 준비가 되셨나요?

검사하려는 사이트에 맞는 탐지기를 사용하세요: