dummy3ye/lostdock
GitHub: dummy3ye/lostdock
LostDock 是一款基于 PySide6 的跨平台 Google Dorking 桌面工具,通过可视化界面帮助 OSINT 研究者高效构建、执行和管理复杂搜索查询。
Stars: 0 | Forks: 0
# LostDock
[](https://www.python.org)
[](LICENSE)
[](#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)。
标签:ESC4, Google Dorking, OSINT, PySide6, 命令控制, 实时处理, 数据采集, 桌面应用, 漏洞挖掘, 特征识别, 逆向工具