Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
darc — 暗网爬虫,使用 requests 和 Selenium 工作线程抓取页面、捕获请求头和 Cookie、提取链接,并保存渲染后的截图,用于 OSINT 情报收集。 | Kitploit
工具/GitHubGitHub/jarryshaw/darc
OSINT (开源情报)侦察脚本与自动化信息收集Web安全隐私保护网络爬虫
GitHubjarryshaw/darc

darc

暗网爬虫,使用 requests 和 Selenium 工作线程抓取页面、捕获请求头和 Cookie、提取链接,并保存渲染后的截图,用于 OSINT 情报收集。

查看仓库
239395919天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

darc - 暗网爬虫项目

如需任何技术和/或维护信息, 请参阅 |docs|_。

.. |docs| replace:: 官方文档 .. _docs: https://darc.jarryshaw.me

注意:从 1.0.0 版本开始,本项目的新功能将不再 在此公开仓库中开发。更新和新版本中仅会应用 缺陷修复和安全补丁。

darc 被设计为暗网爬取的瑞士军刀。 它集成了 requests 以收集 HTTP 请求和响应 信息,例如 cookie、头字段等。它还捆绑了 selenium 以提供完整渲染的网页及该视图的 截图。

.. image:: https://darc.jarryshaw.me/en/latest/_images/darc.jpeg

darc 的总体流程可描述如下:

worker 有两种类型:

  • crawler -- 运行 darc.crawl.crawler 以提供 链接的最新视图并测试其可连接性

  • loader -- 运行 darc.crawl.loader 以提供 链接的深入视图并提供更多可视化信息

对于 crawler 类型的 worker,总体流程可描述如下:

  1. darc.process.process_crawler:从 requests 链接数据库获取 URL(参见 darc.db.load_requests),并将这些 URL 提供给 darc.crawl.crawler。

    注意:

    如果 darc.const.FLAG_MP 为 True,该函数将以 多进程 支持方式调用;如果 darc.const.FLAG_TH 为 True,该函数将以 多线程 支持方式调用;若两者皆否,该函数将以单线程方式调用。

  2. darc.crawl.crawler:使用 darc.link.parse_link 解析 URL,并检查是否需要爬取 该 URL(参见 darc.const.PROXY_WHITE_LIST、darc.const.PROXY_BLACK_LIST、 darc.const.LINK_WHITE_LIST 和 darc.const.LINK_BLACK_LIST); 若需要,则使用 requests 爬取该 URL。

    如果该 URL 来自一个全新的主机,darc 将首先尝试 获取并保存该主机的 robots.txt 和站点地图 (参见 darc.proxy.null.save_robots 和 darc.proxy.null.save_sitemap), 然后从站点地图中提取链接并保存(参见 darc.proxy.null.read_sitemap) 到链接数据库中,以供后续爬取(参见 darc.db.save_requests)。 此外,如果提供了提交 API,将调用 darc.submit.submit_new_host 并提交刚刚获取的文档。

    如果存在 robots.txt,且 darc.const.FORCE 为 False,darc 将检查是否允许爬取该 URL。

    注意:

    根路径(例如 https://www.example.com/ 中的 /)将始终 被爬取,忽略 robots.txt。

    此时,darc 将调用 darc.sites 中的自定义钩子函数 进行爬取并获取最终响应对象。 darc 将使用 darc.save.save_headers 保存会话 cookie 和 头信息。

    注意:

    如果引发 requests.exceptions.InvalidSchema,该链接 将由 darc.proxy.null.save_invalid 保存。后续 处理将被放弃。

    如果响应文档的内容类型未被忽略(参见 darc.const.MIME_WHITE_LIST 和 darc.const.MIME_BLACK_LIST), 将调用 darc.submit.submit_requests 并提交刚刚获取的 文档。

    如果响应文档为 HTML(text/html 和 application/xhtml+xml), 将调用 darc.parse.extract_links 以从 HTML 文档中提取所有可能的 链接,并将这些链接保存到数据库 (参见 darc.db.save_requests)。

    并且如果响应状态码介于 400 和 600 之间, 该 URL 将被保存回链接数据库 (参见 darc.db.save_requests)。如果不是,该 URL 将被 保存到 selenium 链接数据库以继续后续步骤 (参见 darc.db.save_selenium)。

对于 loader 类型的 workers,一般流程可以描述如下:

  1. darc.process.process_loader:与此同时,darc 会 从 selenium 链接数据库(参见 darc.db.load_selenium)中 获取 URL,并将这些 URL 提供给 darc.crawl.loader。

    注意:

    如果 darc.const.FLAG_MP 为 True,该函数将以 多进程 支持方式调用;如果 darc.const.FLAG_TH 为 True,该函数将以 多线程 支持方式调用;如果两者均未启用,该函数将以单线程方式调用。

  2. darc.crawl.loader:使用 darc.link.parse_link 解析 URL,并使用 selenium 配合 Google Chrome 开始加载该 URL。

    此时,darc 会调用 darc.sites 中的自定义钩子函数, 以加载并返回原始的 selenium.webdriver.chrome.webdriver.WebDriver 对象。

    如果成功,渲染后的源 HTML 文档将被保存,并且会截取 整页截图并保存。

    如果提供了提交 API,则会调用 darc.submit.submit_selenium 并提交刚刚加载的文档。

    随后,将调用 darc.parse.extract_links, 从 HTML 文档中提取所有可能的链接,并将这些 链接保存到 requests 数据库(参见 darc.db.save_requests)。


安装

注意:

darc 支持 3.6 及以上的所有 Python 版本。 目前,它仅支持并在 Linux(Ubuntu 18.04) 和 macOS(Catalina)上经过测试。

在低于 3.8 的 Python 版本中安装时,darc 会 使用 |walrus|_ 自行编译,以保持向后兼容。

.. |walrus| replace:: walrus .. _walrus: https://github.com/pybpc/walrus

.. code-block:: shell

pip install python-darc

请确保你的系统上已安装 Google Chrome 及对应版本的 Chrome Driver。

从 0.3.0 版本开始,我们引入了 Redis_ 作为任务 队列数据库后端。

.. _Redis: https://redis.io

自 0.6.0 版本起,除了 Redis_ 数据库之外,我们还引入了关系型数据库存储 (例如 MySQL、SQLite、PostgreSQL_ 等)作为任务队列数据库 后端,因为当任务队列变得非常大时,Redis_ 数据库的内存开销可能过高。

.. _MySQL: https://mysql.com/ .. _SQLite: https://www.sqlite.org/ .. _PostgreSQL: https://www.postgresql.org/

使用 darc 项目时,请确保已安装、配置并 运行其中一种后端数据库。

不过,darc 项目附带 Docker 和 Compose 支持。 请参阅项目根目录以获取相关文件和更多信息。

或者,你可以参考和/或从 Docker Hub_ 仓库安装:

.. code-block:: shell

docker pull jsnbzh/darc[:TAGNAME]

.. _Docker Hub: https://hub.docker.com/r/jsnbzh/darc

或从 GitHub Container Registry 获取更新、更全面的镜像:

.. code-block:: shell

docker pull ghcr.io/jarryshaw/darc[:TAGNAME]

或调试镜像

docker pull ghcr.io/jarryshaw/darc-debug[:TAGNAME]


用法

darc 项目提供了一个简单的 CLI::

usage: darc [-h] [-v] -t {crawler,loader} [-f FILE] ...

the darkweb crawling swiss army knife

positional arguments: link links to craw

optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -t {crawler,loader}, --type {crawler,loader} type of worker process -f FILE, --file FILE read links from file

也可以通过模块入口点调用::

python -m darc ...

注意:

链接文件可以包含 注释 行,注释行应以 # 开头。 加载时会忽略空行和注释行。

下载工具