
DorX следующего поколения. Создано Dorks для Dorks. 🤓
DorXNG — это современное решение для сбора данных OSINT с использованием расширенных операторов поисковых систем через несколько внешних поисковых провайдеров. В его основе лежит специально созданный контейнеризированный образ SearXNG, самостоятельной, настраиваемой, ориентированной на конфиденциальность мета-поисковой системы.
Наша реализация SearXNG направляет все поисковые запросы через сеть Tor, обновляя цепи каждые десять секунд с помощью директивы конфигурации Tor MaxCircuitDirtiness. Мы также отключили все тайм-ауты на стороне клиента SearXNG. Эти настройки позволяют избежать ограничений поисковых систем, которые часто возникают при большом количестве повторяющихся запросов.
Клиентское приложение DorXNG написано на Python3 и взаимодействует с API SearXNG для одновременной отправки поисковых запросов. Оно даже может отправлять запросы через несколько экземпляров SearXNG. Полученные результаты поиска сохраняются в базе данных SQLite3.

Мы включили все поддерживаемые внешние поисковые системы, которые допускают запросы с расширенными операторами:
GoogleDuckDuckGoQwantBingBraveStartpageYahooДля получения дополнительной информации о том, какие поисковые системы поддерживает SearXNG, смотрите: Настроенные движки
Благодарность разработчикам Tor и SearXNG за то, что сделали это возможным. Пожертвуйте обоим проектам!
Благодарность разработчику pagodo за вдохновение и тот замечательный скрипт ghdb_scraper.py!
И последнее, но не менее важное: благодарность j0hnny. Оригинальный Дорк. 🧠🏴☠
Install DorXNG
git clone https://github.com/researchanddestroy/dorxng
cd dorxng
pip install -r requirements.txt
./DorXNG.py -h
Загрузите и запустите наш кастомный Docker-контейнер SearXNG (как минимум один). Можно использовать несколько экземпляров SearXNG. Используйте опцию --serverlist с DorXNG. См.: server.lst
docker run researchanddestroy/searxng:latest
Если вы хотите собрать контейнер самостоятельно:
git clone https://github.com/researchanddestroy/searxng # The URL must be all lowercase for the build process to complete
cd searxng
DOCKER_BUILDKIT=1 make docker.build
docker images
docker run <image-id>
По умолчанию DorXNG имеет жёстко закодированную переменную server в parse_args.py, которая установлена на IP-адрес, который Docker назначит первому контейнеру, запущенному на вашем компьютере: 172.17.0.2. Это можно изменить или переопределить с помощью --server или --serverlist.
Начать отправку поисковых запросов
./DorXNG.py -q 'search query'
Запросить базу данных DorXNG
./DorXNG.py -D 'regex search string'
-h, --help show this help message and exit
-s SERVER, --server SERVER
DorXNG Server Instance - Example: 'https://172.17.0.2/search'
-S SERVERLIST, --serverlist SERVERLIST
Issue Search Queries Across a List of Servers - Format: Newline Delimited
-q QUERY, --query QUERY
Issue a Search Query - Examples: 'search query' | '!tch search query' | 'site:example.com intext:example'
-Q QUERYLIST, --querylist QUERYLIST
Iterate Through a Search Query List - Format: Newline Delimited
-n NUMBER, --number NUMBER
Define the Number of Page Result Iterations
-c CONCURRENT, --concurrent CONCURRENT
Define the Number of Concurrent Page Requests
-l LIMITDATABASE, --limitdatabase LIMITDATABASE
Set Maximum Database Size Limit - Starts New Database After Exceeded - Example: --limitdatabase 10 (10k Database Entries) - Suggested Maximum Database Size is 50k
when doing Deep Recursion
-L LOOP, --loop LOOP Define the Number of Main Function Loop Iterations - Infinite Loop with 0
-d DATABASE, --database DATABASE
Specify SQL Database File - Default: 'dorxng.db'
-D DATABASEQUERY, --databasequery DATABASEQUERY
Issue Database Query - Format: Regex
-m MERGEDATABASE, --mergedatabase MERGEDATABASE
Merge SQL Database File - Example: --mergedatabase database.db
-t TIMEOUT, --timeout TIMEOUT
Specify Timeout Interval Between Requests - Default: 4 Seconds - Disable with 0
-r NONEWRESULTS, --nonewresults NONEWRESULTS
Specify Number of Iterations with No New Results - Default: 4 (3 Attempts) - Disable with 0
-v, --verbose Enable Verbose Output
-vv, --veryverbose Enable Very Verbose Output - Displays Raw JSON Output
Иногда вы можете попасть на выходной узел Tor, который уже заблокирован внешними поисковыми провайдерами, что приведёт к минимальному количеству результатов. Не волнуйтесь... Просто продолжайте отправлять запросы. 😉
Сохраните файл базы данных SQL DorXNG и повторно запустите команду, или используйте ключ --loop для многократного повторения основной функции. 🔁
Чаще всего, чем больше проходов вы делаете по поисковому запросу, тем больше результатов вы найдёте. 🍻
Также имейте в виду, что мы пожертвовали скоростью ради большего объёма данных. В конце концов, это проект OSINT. 🔎🌎
Каждый ваш поисковый запрос отправляется к 7 внешним поисковым провайдерам... Особенно с запросами --concurrent это создаёт много запросов... Поэтому наберитесь терпения.
Имейте в виду, что DorXNG будет продолжать добавлять новые результаты в ваш файл базы данных. Используйте ключ --database, чтобы указать имя файла базы данных; по умолчанию имя файла — dorxng.db. Возможно, для большинства это не важно, но если вы хотите разделять свои расследования OSINT, эта функция для вас.
Четыре одновременных запроса кажутся оптимальным количеством. Вы можете отправлять больше, но чем больше запросов одновременно, тем дольше ждать результаты. Также возрастает вероятность получения ответов HTTP/429 Too Many Requests от внешних поисковых провайдеров на данной цепи Tor.
Если вы запускаете несколько Docker-контейнеров SearXNG слишком быстро, соединения Tor могут не установиться. При инициализации контейнера правильный ответ от функции проверки подключения Tor выглядит так:
Checking Tor Connectivity..
{"IsTor":true,"IP":"<tor-exit-node>"}
Если вы видите что-то другое или начинаете получать коды ответа HTTP/500 от скрипта мониторинга SearXNG (STDOUT в контейнере), убейте Docker-контейнер и создайте новый.
Коды ответа HTTP/504 Gateway Time-out внутри DorXNG иногда ожидаемы. Это означает, что экземпляр SearXNG не получил ответа в течение минуты. Эта конкретная цепь Tor, вероятно, слишком медленная. Просто продолжайте!
На самом деле нет причин запускать кучу этих контейнеров... Пока... 😉 Сколько их запускать, действительно зависит от того, что вы делаете. Каждый контейнер использует примерно 1.25 ГБ оперативной памяти.
Запуск одного контейнера работает отлично, за исключением того, что вы, вероятно, пропустите результаты поиска. Поэтому используйте --loop и не отключайте --timeout.