dummy3ye/lostdock

GitHub: dummy3ye/lostdock

LostDock 是一款基于 PySide6 的跨平台 Google Dorking 桌面工具,通过可视化界面帮助 OSINT 研究者高效构建、执行和管理复杂搜索查询。

Stars: 0 | Forks: 0

# LostDock [![Python](https://img.shields.io/badge/Python-3.10+-3776AB.svg)](https://www.python.org) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey.svg)](#installation) **LostDock** 是一个使用 Python 构建的工业级、跨平台 Google-dorking 桌面工具。 它为每个搜索引擎操作符提供了一个可视化查询构建器,支持多引擎执行、 速率限制和代理轮换、结果持久化存储、URL 实时复查、定时 dork 任务、正则表达式高亮以及插件系统 —— 所有这些都集成在一个原生 PySide6 (Qt) UI 中, 可以在 **Windows、macOS 和 Linux** 上运行。 ## 目录 - [功能](#features) - [截图](#screenshot) - [架构](#architecture) - [安装说明](#installation) - [用法](#usage) - [支持的操作符](#supported-operators) - [搜索引擎](#search-engines) - [代理](#proxies) - [定时 Dorks](#scheduled-dorks) - [URL 复查](#url-re-checking) - [插件](#plugins) - [导出](#export) - [数据存储](#data-storage) - [打包](#packaging) - [开发](#development) - [免责声明](#disclaimer) - [许可证](#license) ## 功能 - **可视化 dork 构建器** — 通过关键词、精确短语、布尔逻辑 (`AND`/`OR`/`NOT`)、排除项、必选词、站点、文件类型以及所有 Google 操作符来构建查询, 并提供实时查询预览。 - **多引擎** — 在统一接口后集成了 Google、DuckDuckGo 和 Bing 适配器;可在 UI 中任选其一。 - **速率限制与防屏蔽** — 带有抖动机制的 token bucket 限制器、轮换的 User-Agents、 指数退避重试,以及 CAPTCHA/机器人检测。 - **代理轮换** — 代理池支持轮询 (round-robin) 轮换、故障冷却和验证。 - **持久化存储** — 每个任务和结果都存储在 SQLite 中,并跨引擎进行去重。 - **URL 实时复查** — 重新获取已存储的 URL,并标注状态码 / 内容类型 / 标题。 - **定时 dorks** — 在后台按设定的周期运行已保存的 dorks。 - **正则表达式高亮** — 立即高亮匹配特定模式的数据行。 - **过滤器** — 导出时应用域名白名单/黑名单和 URL 正则表达式保留过滤器。 - **导出** — 支持 JSON、CSV、Markdown 以及样式精美的独立 HTML 报告。 - **已保存的 dork 库** — 可对 dorks 进行命名、保存、加载和删除。 - **插件系统** — 将 Python 模块放入 `~/.lostdock/plugins/` 即可使用,支持 `setup`、`on_result` 和 `on_export` 钩子。 - **跨平台** — 单一代码库可打包为 Windows (`.exe`)、macOS (`.app`) 和 Linux 应用。 ## 架构 ``` ┌─ UI Layer (PySide6/Qt) ───────────────────────────────┐ │ Dork Builder │ Results Grid │ Scheduler │ Settings │ └───────────────┬────────────────────────────────────────┘ ┌───────────────▼────────────────────────────────────────┐ │ Service Layer │ │ Repository │ Executor │ Filter │ Crawler │ Scheduler │ │ Exporter │ Plugins │ └───────────────┬────────────────────────────────────────┘ ┌───────────────▼────────────────────────────────────────┐ │ Core Engine │ │ Adapters (Google / DuckDuckGo / Bing) │ │ Rate Limiter │ Proxy Pool │ Compiler │ Operators │ └───────────────┬────────────────────────────────────────┘ ┌───────────────▼────────────────────────────────────────┐ │ SQLite (jobs, results, saved dorks, schedules) │ └─────────────────────────────────────────────────────────┘ ``` ## 安装说明 ### 前置条件 - **Python 3.10+** — [python.org](https://www.python.org/downloads/) - **uv** (快速的包管理器) — [docs.astral.sh/uv](https://docs.astral.sh/uv/getting-started/installation/) ### 步骤 ``` # 1. Clone repository git clone https://github.com/your-user/lostdock.git cd lostdock # 2. 创建虚拟环境并安装 uv venv uv pip install -e ".[dev]" # 3. 运行 uv run lostdock ``` 如果没有安装 `uv`,可以直接使用 `pip`: ``` python3 -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -e ".[dev]" lostdock ``` ### 替代方案:不安装直接从仓库根目录运行 ``` cd src QT_QPA_PLATFORM=offscreen python -m lostdock.main # offscreen for headless testing ``` ## 用法 1. **构建查询** — 输入关键词,添加精确短语、排除项、`AND`/`OR` 词汇、 站点 (`site:`)、文件类型以及内联操作符。编译后的查询将实时更新。 2. **选择引擎** (Google / DuckDuckGo / Bing) 和页数。 3. 点击 **Run Search**。结果将流式传输到表格中;每个结果都会持久化到 SQLite。 4. 使用 **Re-check URLs** 获取每个结果并标注其最新状态。 5. 设置 **Highlight** 正则表达式以突出显示感兴趣的行。 6. 点击 **Export...** 存为 JSON、CSV、Markdown 或 HTML 报告。 ## 支持的操作符 构建器支持完整的 Google 操作符集合: | 操作符 | 含义 | |----------|---------| | `site:` | 将结果限制在特定域名内 | | `inurl:` / `allinurl:` | URL 中包含特定词汇 | | `intitle:` / `allintitle:` | 标题中包含特定词汇 | | `intext:` / `allintext:` | 正文文本中包含特定词汇 | | `inanchor:` | 链接锚文本中包含特定词汇 | | `filetype:` / `ext:` | 限制为特定文件类型 | | `cache:` | Google 的缓存版本 | | `link:` | 链接到特定 URL 的页面 | | `related:` | 相似的页面 | | `info:` | 页面概览 | | `define:` | 某个词汇的定义 | | `author:` | 结果的作者 | | `daterange:` / `numrange:` | 数值范围 | | `loc:` | 位置 | | `after:` / `before:` | 日期过滤器 (`YYYY-MM-DD`) | | `lang:` | 语言限制 | | `"phrase"` | 精确短语 | | `-term` | 排除特定词汇 | | `~term` | 包含同义词 | | `*` | 通配符 | | `term1 OR term2` | 任一词汇 | ## 搜索引擎 所有引擎都共享相同的接口(位于 `adapters/base.py` 的 `SearchEngine`),并且默认进行速率限制。通过继承 `SearchEngine` 并在 `adapters/__init__.py` 中注册,即可添加新的引擎。 ## 代理 在 **Tools → Settings** 中设置代理。每行一个: ``` http://127.0.0.1:8080 socks5://127.0.0.1:1080 ``` 代理会根据每个请求进行轮换;失败的代理会进入冷却期。运行 "validate" 路径(在代码中为 `ProxyPool.validate()`)可剔除失效代理。 ## 定时 Dorks 1. 保存一个 dork(在 "Dork name" 字段中命名)。 2. 在 **Tools → Settings** 中,选择该 dork,设定间隔时间(以分钟为单位),然后保存。 3. 后台调度器将运行到期的 dorks,将结果存储为新任务,并更新下一次运行时间。 ## URL 复查 **Re-check URLs** 按钮会以礼貌的延迟时间获取当前结果中的每个 URL, 并使用 `状态码`、`内容类型` 以及实时的 `` 标注每一行。失败情况会进行内联标注, 绝不会导致 UI 崩溃。 ## 插件 将 `*.py` 文件放入 `~/.lostdock/plugins/`(或打包的 `plugins/` 目录)中。 插件模块可以导出以下任意子集: ``` NAME = "my_plugin" def setup(app): ... # once at startup def on_result(result): return result # return None to drop the result def on_export(results, fmt, path): ... # before export ``` 有关具体示例,请参阅 `plugins/example_skip_tracking.py`。 ## 导出 | 格式 | 扩展名 | 备注 | |--------|-----------|-------| | JSON | `.json` | 完整的结构化结果 | | CSV | `.csv` | 适配电子表格 (UTF-8 BOM) | | Markdown | `.md` | 易于人类阅读 | | HTML | `.html` | 独立报告,包含可点击的链接 | ## 数据存储 - **数据库:** `~/.lostdock/lostdock.db` (SQLite) - **插件:** `~/.lostdock/plugins/` - 数据表: `jobs`, `results`, `saved_dorks`, `schedules`。旧版数据库会自动迁移。 ## 打包 本项目包含一个用于 PyInstaller 的 `lostdock.spec` 文件。可针对不同平台进行构建: ``` uv pip install pyinstaller pyinstaller lostdock.spec # creates dist/lostdock ``` - **Windows:** `dist/lostdock.exe` (或使用 `--onefile`) - **macOS:** 打包至 `dist/lostdock.app` (发布时使用 `codesign` 签名) - **Linux:** `dist/lostdock` 二进制文件,或封装为 AppImage/Flatpak ## 开发 ``` uv run pytest # run the test suite uv run python -m compileall -q src # sanity-check imports ``` 项目结构: ``` src/lostdock/ ├── core/ Dork model, operators, query compiler, rate limiter, proxy pool ├── adapters/ Google / DuckDuckGo / Bing engine adapters ├── services/ repository, executor, filter, crawler, scheduler, exporter, plugins ├── ui/ PySide6 widgets: dork builder, results grid, worker, settings, main window └── main.py entry point tests/ pytest suite (compiler, engines, services, proxy, scheduler, plugins) ``` ## 免责声明 LostDock 是一款用于 **安全研究和 OSINT** 的工具。请仅针对您拥有或 获得明确授权测试的系统使用。请尊重搜索引擎的服务条款:保持较低的速率限制, 负责任地使用代理,切勿将此工具用于未经授权的访问、抓取 个人数据或任何非法活动。对于滥用行为,作者概不负责。 ## 许可证 MIT — 详见 [LICENSE](LICENSE)。</div><div><strong>标签:</strong>ESC4, Google Dorking, OSINT, PySide6, 命令控制, 实时处理, 数据采集, 桌面应用, 漏洞挖掘, 特征识别, 逆向工具</div></article></div> <!-- 人机验证 --> <script> (function () { var base = (document.querySelector('base') && document.querySelector('base').getAttribute('href')) || ''; var path = base.replace(/\/?$/, '') + '/cap-wasm/cap_wasm.min.js'; window.CAP_CUSTOM_WASM_URL = new URL(path, window.location.href).href; })(); </script> </body> </html>