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

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

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

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

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

Категории

Все категории
Loading categories
anubis-fetch — Как curl, но обходит бот-защиту Anubis и Cloudflare. | Kitploit
Инструменты/GitHubGitHub/fzakaria/anubis-fetch
Скриптинг и автоматизацияОбход WAFВеб-безопасностьУтилиты и фреймворкиАнти-БотПодмена Цифрового Отпечатка
GitHubfzakaria/anubis-fetch

anubis-fetch

Как curl, но обходит бот-защиту Anubis и Cloudflare.

Репозиторий
3015921 дней назадПроверено Kitploit

Популярное

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

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

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

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

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

anubis-fetch

Built with Nix CI License: MIT

$ nix run github:fzakaria/anubis-fetch -- --text https://lore.kernel.org/

CLI-утилита на Go для загрузки URL, защищённых proof-of-work-задачами Anubis. Она решает устаревшие задачи SHA-256 и WASM внутри процесса, а headless Chromium используется как резервный вариант.

Сайты вроде lore.kernel.org и kernel.org используют Anubis, чтобы требовать proof of work перед выдачей страницы. Обычный HTTP-клиент может получить страницу с задачей вместо запрошенного содержимого. anubis-fetch решает задачу, отправляет ответ и записывает полученную страницу в stdout.

Как это работает

  1. Повторно используется сохранённая cookie. После успешного прохождения задачи Anubis выдаёт auth-cookie. Инструмент сохраняет cookie для каждого хоста и отправляет их при последующих запросах.
  2. Proof of work решается внутри процесса. HTTP-клиент использует req для имитации TLS- и HTTP/2-отпечатка Chrome. Это может помочь при пассивных проверках на ботов, включая проверки Cloudflare. Для методов Anubis fast и slow инструмент вычисляет nonce и отправляет ответ напрямую. Для WASM-методов sha256, argon2id и hashx он скачивает модуль сайта и запускает его в Go с помощью wazero.
  3. Используется резервный вариант с браузером. Headless Chromium под управлением chromedp выполняет код задачи, отдаваемый сайтом.

Резервный вариант с браузером обрабатывает методы Anubis preact и metarefresh, а также страницы-задачи Cloudflare (ответы с cf-mitigated: challenge). Инструмент также переключается на браузер, когда сложность устаревшего SHA-256 превышает его лимит, выполнение WASM завершается ошибкой или по таймауту, либо Anubis отклоняет решение. Используйте --browser, чтобы сразу начать с Chromium, или --no-browser, чтобы требовать только HTTP-путь. Все три WASM-метода работают с --no-browser.

Почему бы не использовать браузер для всего?

Нативный решатель позволяет не запускать процесс браузера для каждой загрузки. Chromium всё равно включён в пакет Nix для задач, которым нужен резервный вариант.

Приблизительное время загрузки для исходного пути SHA-256:

ПутьРеальное времяНужен Chromium
Решатель SHA-256 внутри процесса~0.6sНет
Резервный вариант с браузером~2.0sДа

Время загрузки WASM против локального сервера Anubis со сложностью 2:

WASM-методМедианное реальное времяНужен Chromium
SHA-256~0.025sНет
Argon2id~0.55s-2.33sНет
HashX~0.041sНет

Кратко о proof-of-work в Anubis

Для методов fast и slow Anubis встраивает задачу в страницу:

{"rules":{"algorithm":"fast","difficulty":4},
 "challenge":{"id":"...","method":"fast","randomData":"6214bd88...","difficulty":4}}

Решатель ищет такой nonce, чтобы hex(sha256(randomData || nonce)) начинался с difficulty нулевых символов. Nonce кодируется как десятичная строка. Ответ отправляется в Anubis:

GET /.within.website/x/cmd/anubis/api/pass-challenge?id=...&response=<hash>&nonce=<n>&redir=<url>&elapsedTime=<ms>

Успешный ответ устанавливает auth-cookie и перенаправляет на запрошенную страницу. Сложность 4 требует в среднем около 65 536 хешей.

WASM-задачи

Для sha256, argon2id и hashx Anubis отдаёт модуль WebAssembly, реализующий proof of work. anubis-fetch скачивает модуль, декодирует hex-данные задачи в байты и передаёт данные и сложность модулю. Модуль ищет nonce и возвращает nonce и хеш для отправки на тот же endpoint, указанный выше.

Модуль выполняется внутри процесса Go с помощью wazero, поэтому эти методы работают с --no-browser. Выполнение ограничено по памяти и времени. Модуль определяет правила сложности; числа сложности WASM не сравнимы напрямую с устаревшим методом SHA-256.

Установка

Запуск напрямую:

$ nix run github:fzakaria/anubis-fetch -- <url>

Или добавьте input в ваш flake:

{
  inputs.anubis-fetch.url = "github:fzakaria/anubis-fetch";
}

Добавьте inputs.anubis-fetch.packages.${system}.default в home.packages или environment.systemPackages.

Использование

anubis-fetch [flags] URL
ФлагДействие
--textПреобразовать HTML в простой текст
--timeout MSЗадать таймаут на шаг в миллисекундах; по умолчанию 30000
--ua STRINGЗадать User-Agent
--browserИспользовать Chromium напрямую
--no-browserЗавершиться с кодом 3, если HTTP-решателю нужен резервный вариант с браузером
--no-cacheОтключить чтение и запись сохранённых cookie
--help, -hВывести справку и завершиться
# HTML в stdout
anubis-fetch https://lore.kernel.org/

# Простой текст
anubis-fetch --text https://lore.kernel.org/

# Требовать HTTP-путь; проверять код завершения 3
anubis-fetch --no-browser https://lore.kernel.org/

Сохранение cookie

Cookie сохраняются для каждого хоста в $XDG_CACHE_HOME/anubis-fetch/cookies/<host>.json или ~/.cache/anubis-fetch/cookies/<host>.json, если XDG_CACHE_HOME не задан. Действительная auth-cookie может позволить последующим запросам пропустить задачу. Cookie, полученные через Chromium, тоже сохраняются вместе с User-Agent Chromium. Cloudflare учитывает cf_clearance только при том User-Agent, с которым он был получен, поэтому последующие HTTP-запросы к этому хосту отправляют сохранённый User-Agent, если только его не переопределяет --ua.

Используйте --no-cache, чтобы загружать без сохранённых cookie, или удалите файл хоста, чтобы отбросить их. Просроченная или отклонённая cookie требует новой задачи.

Разработка

$ nix develop          # Go, gopls, Chromium, treefmt
$ go test ./...        # Go unit tests
$ nix build            # Packaged CLI
$ nix flake check      # Builds, tests, and formatting
$ nix fmt              # Format Go and Nix

Зависимости

  • TecharoHQ/anubis: сервер задач.
  • imroc/req: HTTP-клиент с имитацией Chrome.
  • chromedp/chromedp: драйвер Chromium.
  • tetratelabs/wazero: среда выполнения WebAssembly для Go.
Скачать инструмент