Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
crawlergo — Мощный браузерный краулер для сканеров веб-уязвимостей | Kitploit
Инструменты/GitHubGitHub/qianlitp/crawlergo
РазведкаСканеры уязвимостейСбор информацииВеб-безопасностьКраулер
GitHubqianlitp/crawlergo

crawlergo

Мощный браузерный краулер для сканеров веб-уязвимостей

Репозиторий
3.0k4931 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

crawlergo

chromedp BlackHat EU Arsenal

Мощный браузерный краулер для сканеров уязвимостей веб-приложений

Английская документация | 中文文档

crawlergo — это браузерный краулер, использующий режим chrome headless для сбора URL. Он перехватывает ключевые позиции всей веб-страницы на этапе рендеринга DOM, автоматически заполняет и отправляет формы, интеллектуально инициирует события JavaScript и собирает как можно больше точек входа, доступных на веб-сайте. Встроенный модуль дедупликации URL отфильтровывает большое количество псевдостатических URL, сохраняя при этом высокую скорость анализа и сканирования для крупных веб-сайтов, и в итоге предоставляет высококачественный набор результатов запросов.

В настоящее время crawlergo поддерживает следующие возможности:

  • Рендеринг в среде браузера Chrome
  • Интеллектуальное заполнение форм с автоматической отправкой
  • Сбор всех событий DOM с автоматической инициацией
  • Умная дедупликация URL, удаляющая большинство дублирующихся запросов
  • Интеллектуальный анализ веб-страниц и сбор URL, включая содержимое JavaScript-файлов, комментарии на странице, файлы robots.txt и автоматический Fuzz распространенных путей
  • Поддержка привязки хоста, автоматическое исправление и добавление Referer
  • Поддержка прокси для браузерных запросов
  • Поддержка отправки результатов пассивным сканерам уязвимостей веб-приложений

Скриншот

Установка

Пожалуйста, внимательно прочитайте и подтвердите отказ от ответственности перед установкой и использованием.

Сборка

  • Сборка для текущей платформы
root@kitploit:~
make build
  • Сборка для всех платформ
root@kitploit:~
make build_all
  1. crawlergo зависит только от среды Chrome для работы; перейдите по ссылке download, чтобы загрузить новую версию 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/

Вызов crawlergo из Python

По умолчанию 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/

  • Привязка хоста (недоступна для высоких версий Chrome) (пример)

  • Пользовательские Cookies (пример)

  • Регулярная очистка зомби-процессов, порождаемых 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 запускается с пропущенными зависимостями, такими как 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)

Расширение входного URL

  • --fuzz-path — использовать встроенный словарь для фаззинга путей. (По умолчанию: false)
  • --fuzz-path-dict — пользовательский словарь для фаззинга путей. Передайте путь к файлу словаря, например /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 тега input. Например, для автоматического заполнения поля ввода почты значением A, а поля пароля — B, используйте -fv mail=A -fv password=B. Параметр default задает значение заполнения, когда тип текста не распознан, по умолчанию "Cralwergo". (По умолчанию: Cralwergo)
  • --form-keyword-values, -fkv — настройка значений автозаполнения форм по нечеткому совпадению ключевых слов. Ключевое слово сопоставляется с четырьмя атрибутами id, name, , тега input. Например, для нечеткого совпадения ключевого слова 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, для случаев пропуска URL из-за конфликтов обновления DOM. (По умолчанию: 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 — отключить headless-режим Chrome для визуализации процесса сканирования. (По умолчанию: false)

Следите за мной

Weibo:@9ian1i Twitter: @9ian1i

Связанные статьи:Практика браузерного краулера для сканирования уязвимостей веб-приложений

Скачать инструмент
  • --output-json filepath — запись результата в указанный файл после сериализации в JSON. (По умолчанию: null)
  • --request-proxy proxyAddress — адрес прокси socks5, через который отправляются все сетевые запросы от crawlergo и браузера Chrome. (По умолчанию: null)
  • class
    type
    -fkv user=admin -fkv pass=123456