Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
crawlergo — 강력한 웹 취약점 스캐너용 브라우저 크롤러 | Kitploit
도구/GitHubGitHub/qianlitp/crawlergo
ReconnaissanceVulnerability ScannersInformation GatheringWeb SecurityCrawler
GitHubqianlitp/crawlergo

crawlergo

강력한 웹 취약점 스캐너용 브라우저 크롤러

저장소 보기
3.0k4931년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

crawlergo

chromedp BlackHat EU Arsenal

웹 취약점 스캐너를 위한 강력한 브라우저 크롤러

영어 문서 | 중국어 문서

crawlergo는 chrome headless 모드를 사용하여 URL을 수집하는 브라우저 크롤러입니다. DOM 렌더링 단계에서 웹 페이지의 주요 지점을 후킹하고, 자동으로 폼을 채우고 제출하며, 지능적인 JS 이벤트 트리거를 통해 웹사이트가 노출하는 가능한 많은 항목을 수집합니다. 내장된 URL 중복 제거 모듈은 많은 의사 정적 URL을 필터링하면서도 대규모 웹사이트에 대해 빠른 파싱 및 크롤링 속도를 유지하며, 최종적으로 고품질의 요청 결과 컬렉션을 얻습니다.

crawlergo는 현재 다음 기능을 지원합니다:

  • Chrome 브라우저 환경 렌더링
  • 지능적인 폼 작성, 자동 제출
  • 전체 DOM 이벤트 수집 및 자동 트리거
  • 스마트 URL 중복 제거로 대부분의 중복 요청 제거
  • 웹 페이지 지능적 분석 및 URL 수집 (JavaScript 파일 내용, 페이지 주석, robots.txt 파일 및 일반 경로의 자동 퍼징 포함)
  • Host 바인딩 지원, Referer 자동 수정 및 추가
  • 브라우저 요청 프록시 지원
  • 결과를 수동형 웹 취약점 스캐너로 푸시 지원

스크린샷

설치

설치 및 사용 전에 면책 조항을 주의 깊게 읽고 확인하십시오.

빌드

  • 현재 플랫폼용 컴파일
root@kitploit:~
make build
  • 모든 플랫폼용 컴파일
root@kitploit:~
make build_all
  1. crawlergo는 실행을 위해 Chrome 환경만 필요합니다. 새 버전의 Chromium을 다운로드하세요.
  2. 최신 버전의 crawlergo를 릴리스 페이지에서 다운로드하여 원하는 디렉터리에 압축을 해제하세요. Linux 또는 macOS를 사용하는 경우 crawlergo에 **실행 권한 (+x)**을 부여하십시오.
  3. 또는 코드를 수정하여 직접 빌드할 수 있습니다.

Linux 시스템을 사용 중이고 Chrome이 종속성 누락을 알리는 경우 아래 TroubleShooting을 참조하십시오.

빠른 시작

실행!

Chromium 설치 디렉터리가 /tmp/chromium/이고 동시에 10개의 탭을 열어 testphp.vulnweb.com을 크롤링한다고 가정합니다:

root@kitploit:~
bin/crawlergo -c /tmp/chromium/chrome -t 10 http://testphp.vulnweb.com/

Docker 사용

Docker를 사용하여 번거로움 없이 사용할 수도 있습니다:

root@kitploit:~
git clone https://github.com/Qianlitp/crawlergo
docker build . -t crawlergo
docker run crawlergo http://testphp.vulnweb.com/

프록시 사용

root@kitploit:~
bin/crawlergo -c /tmp/chromium/chrome -t 10 --request-proxy socks5://127.0.0.1:7891 http://testphp.vulnweb.com/

Python으로 crawlergo 호출

기본적으로 crawlergo는 결과를 화면에 직접 출력합니다. 다음으로 출력 모드를 json으로 설정하고, Python을 사용하여 호출하는 샘플 코드는 다음과 같습니다:

root@kitploit:~
#!/usr/bin/python3
# coding: utf-8

import simplejson
import subprocess


def main():
    target = "http://testphp.vulnweb.com/"
    cmd = ["bin/crawlergo", "-c", "/tmp/chromium/chrome", "-o", "json", target]
    rsp = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, error = rsp.communicate()
	#  "--[Mission Complete]--"  은 작업 완료 구분 문자열입니다
    result = simplejson.loads(output.decode().split("--[Mission Complete]--")[1])
    req_list = result["req_list"]
    print(req_list[0])


if __name__ == '__main__':
    main()

크롤 결과

출력 모드가 json으로 설정되면, JSON 역직렬화 후 반환된 결과는 네 부분으로 구성됩니다:

  • all_req_list : 이 크롤 작업 중 발견된 모든 요청으로, 다른 도메인의 모든 리소스 유형을 포함합니다.
  • req_list : 이 크롤 작업의 현재 도메인 결과를 반환하며, 의사 정적 중복 제거가 적용되었고 정적 리소스 링크는 제외됩니다. all_req_list의 하위 집합입니다.
  • all_domain_list : 발견된 모든 도메인 목록입니다.
  • sub_domain_list : 발견된 서브도메인 목록입니다.

예제

crawlergo는 전체 요청과 URL을 반환하며, 이는 다양한 방식으로 사용될 수 있습니다:

  • 다른 수동형 웹 취약점 스캐너와 함께 사용

    먼저 수동형 스캐너를 시작하고 수신 주소를 http://127.0.0.1:1234/로 설정합니다.

    그런 다음 crawlergo가 스캐너와 같은 시스템에 있다고 가정하고, crawlergo를 시작하여 매개변수를 설정합니다:

    --push-to-proxy http://127.0.0.1:1234/

  • Host 바인딩 (높은 버전의 Chrome에서는 사용 불가) (예제)

  • 사용자 정의 쿠키 (예제)

  • crawlergo가 생성한 좀비 프로세스를 정기적으로 정리 (예제) , @ring04h 제공

Headless 감지 우회

crawlergo는 기본적으로 headless 모드 감지를 우회할 수 있습니다.

https://intoli.com/blog/not-possible-to-block-chrome-headless/chrome-headless-test.html

문제 해결

  • 'Fetch.enable'을 찾을 수 없음

    Fetch는 새 버전의 Chrome에서 지원하는 기능입니다. 이 오류가 발생하면 Chrome 버전이 너무 낮다는 의미이므로 Chrome 버전을 업그레이드하십시오.

  • Chrome 실행 시 xxx.so와 같은 종속성 누락

    root@kitploit:~
    // Ubuntu
    apt-get install -yq --no-install-recommends \
         libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
         libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \
         libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libgbm1 \
         libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 libnss3
         
    // CentOS 7
    sudo yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 \
         libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 \
         ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y
    
    sudo yum update nss -y
    
  • 실행 시 Navigation timeout / 브라우저를 찾을 수 없음 / 올바른 브라우저 실행 파일 경로를 모름

    브라우저 실행 파일 경로가 올바르게 설정되었는지 확인하십시오. 주소 표시줄에 chrome://version을 입력하고 실행 파일 경로를 찾으십시오:

매개변수

필수 매개변수

  • --chromium-path Path, -c Path Chrome 실행 파일의 경로입니다. (필수)

기본 매개변수

  • --custom-headers Headers 사용자 정의 HTTP 헤더입니다. JSON 직렬화된 데이터를 전달하십시오. 이는 전역적으로 정의되며 모든 요청에 사용됩니다. (기본값: null)
  • --post-data PostData, -d PostData POST 데이터입니다. (기본값: null)
  • --max-crawled-count Number, -m Number 크롤러의 최대 작업 수로, 의사 정적으로 인한 긴 크롤링 시간을 방지합니다. (기본값: 200)
  • --filter-mode Mode, -f Mode 필터링 모드, simple: 정적 리소스 및 중복 요청만 필터링합니다. smart: 의사 정적 필터링 가능. strict: 더 엄격한 의사 정적 필터링 규칙. (기본값: smart)
  • --output-mode value, -o value 결과 출력 모드, console: 보기 좋은 결과를 화면에 직접 출력합니다. json: 모든 결과의 JSON 직렬화 문자열을 출력합니다. none: 출력하지 않습니다. (기본값: console)
  • --output-json filepath JSON 직렬화 후 결과를 지정된 파일에 기록합니다. (기본값: null)
  • socks5 프록시 주소, crawlergo 및 Chrome 브라우저의 모든 네트워크 요청이 프록시를 통해 전송됩니다. (기본값: null)

입력 URL 확장

  • --fuzz-path 내장 사전을 사용한 경로 퍼징입니다. (기본값: false)
  • --fuzz-path-dict 사용자 정의 Fuzz 경로, 사전 파일 경로를 전달합니다(예: /home/user/fuzz_dir.txt). 파일의 각 줄은 퍼징할 경로를 나타냅니다. (기본값: null)
  • --robots-path /robots.txt 파일에서 경로를 해석합니다. (기본값: false)

폼 자동 채우기

  • --ignore-url-keywords, -iuk 방문하고 싶지 않은 URL 키워드로, 일반적으로 쿠키를 사용자 정의할 때 로그아웃 링크를 제외하는 데 사용됩니다. 사용법: -iuk logout -iuk exit. (기본값: "logout", "quit", "exit")
  • --form-values, -fv 폼 채우기 값을 텍스트 유형별로 사용자 정의합니다. 지원되는 정의 유형: default, mail, code, phone, username, password, qq, id_card, url, date 및 number. 텍스트 유형은 입력 상자 레이블의 id, name, class, type 네 가지 속성 값 키워드로 식별됩니다. 예를 들어, 메일 입력 상자에 A를 자동으로 채우고 비밀번호 입력 상자에 B를 자동으로 채우도록 정의하려면 -fv mail=A -fv password=B를 사용합니다. 여기서 default는 텍스트 유형이 인식되지 않을 때의 채우기 값으로, "Cralwergo"입니다. (기본값: Cralwergo)
  • --form-keyword-values, -fkv 폼 채우기 값을 키워드 퍼지 일치로 사용자 정의합니다. 키워드는 입력 상자 레이블의 id, name, class, type 네 가지 속성 값과 일치합니다. 예를 들어, pass 키워드를 퍼지 일치하여 123456을 채우고 user 키워드를 퍼지 일치하여 admin을 채우려면 을 사용합니다. (기본값: Cralwergo)

크롤링 프로세스의 고급 설정

  • --max-tab-count Number, -t Number 크롤러가 동시에 열 수 있는 최대 탭 수입니다. (기본값: 8)
  • --tab-run-timeout Timeout 단일 탭 페이지의 최대 실행 시간입니다. (기본값: 20s)
  • --wait-dom-content-loaded-timeout Timeout 페이지 로딩 완료를 기다리는 최대 시간 제한입니다. (기본값: 5s)
  • --event-trigger-interval Interval 이벤트가 자동으로 트리거되는 간격으로, 일반적으로 대상 네트워크가 느리거나 DOM 업데이트 충돌로 인해 URL이 누락되는 경우에 사용됩니다. (기본값: 100ms)
  • --event-trigger-mode Value DOM 이벤트 자동 트리거 모드로, async와 sync가 있으며, DOM 업데이트 충돌로 인한 URL 누락을 방지합니다. (기본값: async)
  • --before-exit-delay 단일 탭 작업 종료 시 Chrome을 닫기 전 지연 시간입니다. 부분적인 DOM 업데이트 및 XHR 요청이 캡처되도록 기다리는 데 사용됩니다. (기본값: 1s)

기타

  • --push-to-proxy 크롤러 결과를 수신할 리스너 주소로, 일반적으로 수동형 스캐너의 리스너 주소입니다. (기본값: null)
  • --push-pool-max 리스너 주소로 크롤러 결과를 보낼 때의 최대 동시 전송 수입니다. (기본값: 10)
  • --log-level 로깅 레벨, debug, info, warn, error 및 fatal. (기본값: info)
  • --no-headless Chrome headless 모드를 끄고 크롤링 과정을 시각화합니다. (기본값: false)

팔로우 미

Weibo: @9ian1i Twitter: @9ian1i

관련 기사: 웹 취약점 스캐닝을 위한 브라우저 크롤러 실습

도구 다운로드
--request-proxy proxyAddress
-fkv user=admin -fkv pass=123456