
本项目 fork 自原 Gophish 项目,并在原有功能基础上增加了以下增强特性:
Sec-CH-UA-Platform-Version 等高熵客户端提示获取精确的操作系统版本,参考 Microsoft 官方文档根据 Microsoft 官方文档,Sec-CH-UA-Platform-Version 中的 Windows 版本号对应关系如下:
| Windows 版本 | Sec-CH-UA-Platform-Version | 说明 |
|---|---|---|
| Windows 11 | "13.0.0" 或更高 | Windows 11 21H2 及后续版本 |
| Windows 10 | "10.0.0" - "10.0.22000" | Windows 10 各版本 |
| Windows 8.1 | "6.3.0" | Windows 8.1 |
| Windows 8 | "6.2.0" | Windows 8 |
| Windows 7 | "6.1.0" | Windows 7 |
✅ Client Hints 支持 - 更准确的浏览器指纹识别
✅ 增强的设备信息 - 包含操作系统版本等详细信息
✅ 可视化增强
⚠️ 重要:Sec-CH-UA-Platform-Version 等详细系统信息属于高熵(high-entropy)客户端提示,具有以下特点:
Accept-CH 头部明确请求后,才会在后续请求中发送这些信息本项目通过以下方式确保高熵 Client Hints 的正确收集:
Accept-CH 头部请求高熵值信息Critical-CH 头部标记重要的 Client Hints<meta http-equiv="Accept-CH"> 标签提示:为获得最佳效果,建议目标用户在访问钓鱼页面时刷新一次页面,以确保收集到完整的设备信息。
controllers/phish.go)HTTP 头部设置: 在关键的处理函数中设置 Client Hints 请求头部:
// 请求高熵 Client Hints
w.Header().Set("Accept-CH", "Sec-CH-UA-Platform-Version, Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Model, Sec-CH-UA-Full-Version")
w.Header().Set("Critical-CH", "Sec-CH-UA-Platform-Version")
Client Hints 数据收集:
在 setupContext 函数中收集所有 Client Hints 头部:
// 收集 Client Hints 头部信息
d.Browser["sec-ch-ua"] = r.Header.Get("Sec-CH-UA")
d.Browser["sec-ch-ua-mobile"] = r.Header.Get("Sec-CH-UA-Mobile")
d.Browser["sec-ch-ua-platform"] = r.Header.Get("Sec-CH-UA-Platform")
d.Browser["sec-ch-ua-platform-version"] = r.Header.Get("Sec-CH-UA-Platform-Version")
d.Browser["sec-ch-ua-arch"] = r.Header.Get("Sec-CH-UA-Arch")
d.Browser["sec-ch-ua-bitness"] = r.Header.Get("Sec-CH-UA-Bitness")
d.Browser["sec-ch-ua-model"] = r.Header.Get("Sec-CH-UA-Model")
static/js/src/app/campaign_results.js)parseClientHints 函数:
browser 对象中的 Client Hints 数据renderDevice 函数增强:
Client Hints 数据存储在 EventDetails 结构的 Browser 字段中:
type EventDetails struct {
Payload url.Values `json:"payload"`
Browser map[string]string `json:"browser"` // Client Hints 存储在这里
}
Accept-CH 和 Critical-CH 头部✅ 重要保证:Client Hints 功能不会影响点击数统计的准确性
潜在注意事项:
Critical-CH 头部在极少数情况下可能导致浏览器重新请求页面Critical-CH 头部解决| Client Hint | 描述 | 示例值 |
|---|---|---|
Sec-CH-UA | 浏览器品牌和版本 | "Chromium";v="118", "Google Chrome";v="118" |
Sec-CH-UA-Mobile | 移动设备指示器 | ?0 (桌面) / ?1 (移动) |
Sec-CH-UA-Platform | 操作系统平台 | "Windows", "macOS", "Linux" |
Sec-CH-UA-Platform-Version | 操作系统版本 | "15.0.0", "13.0.1" |
Sec-CH-UA-Arch | 处理器架构 | "x86", "arm" |
Sec-CH-UA-Bitness | 系统位数 | "64", "32" |
Sec-CH-UA-Model | 设备型号 | "Pixel 6", "iPhone14,2" |
注意:
- 不支持 Client Hints 的浏览器会自动回退到传统的 User-Agent 解析,确保完全兼容性
- 即使在支持的浏览器中,高熵 Client Hints 也需要用户交互或页面刷新才能完整收集
本项目提供了增强版的 Docker 镜像,完整支持 Client Hints 功能:
🐳 Docker Hub 镜像:loadingi/gophish_custom
我们提供了完全自动化的部署脚本,无需手动配置任何文件:
# 方法1: 直接下载运行
curl -O https://raw.githubusercontent.com/your-repo/gophish_cstm/main/setup-gophish-custom.sh
chmod +x setup-gophish-custom.sh
./setup-gophish-custom.sh
# 方法2: 克隆项目后运行
git clone https://github.com/your-repo/gophish_cstm.git
cd gophish_cstm
chmod +x setup-gophish-custom.sh
./setup-gophish-custom.sh
| 步骤 | 说明 | 传统方式 | 脚本方式 |
|---|---|---|---|
| 环境清理 | 清理旧容器和数据 | 手动执行多个命令 | ✅ 自动完成 |
| 镜像管理 | 拉取最新镜像 | docker pull | ✅ 自动完成 |
| 目录创建 | 创建持久化目录 | 手动 mkdir | ✅ 自动完成 |
| 配置生成 | 生成 gophish.db 和 config.json | 复杂的临时容器操作 | ✅ 自动完成 |
| 权限设置 | 设置正确的文件权限 | 手动 chmod/chown | ✅ 自动完成 |
| 服务配置 | 创建 docker-compose.yml | 手动编写或复制 | ✅ 自动生成 |
| 服务启动 | 启动 Gophish 服务 | docker-compose up -d | ✅ 自动完成 |
| 密码获取 | 获取初始管理员密码 | 手动查看日志 | ✅ 自动显示 |
脚本执行完成后,您将看到:
🎉 Gophish Custom 部署完成!
==========================================
📋 服务信息:
- 管理界面: http://localhost:3333
- 钓鱼服务器: http://localhost:80
- HTTPS 钓鱼服务器: https://localhost:443
🔑 初始管理员密码:
Please login with the username admin and the password **********
🚀 Client Hints 功能已启用:
- 支持现代浏览器的高精度设备指纹识别
- 自动收集操作系统版本、架构、设备型号等信息
- 智能回退到传统 User-Agent 解析
📖 详细文档:完整的脚本说明和故障排除请参考 部署脚本文档
如果您需要自定义配置或了解部署细节,可以选择手动部署:
⚠️ 重要:手动部署需要先准备 gophish.db 和 config.json 文件,这是持久化的关键!
# 创建目录
mkdir -p gophish_data data logs
# 启动临时容器生成初始文件
docker run --name temp_gophish -d loadingi/gophish_custom:latest
sleep 15 # 等待文件生成
# 复制文件
docker cp temp_gophish:/opt/gophish/gophish.db ./gophish_data/
docker cp temp_gophish:/opt/gophish/config.json ./gophish_data/
# 清理临时容器
docker stop temp_gophish && docker rm temp_gophish
# 设置权限
chmod 666 ./gophish_data/*
# 克隆项目获取配置文件
git clone https://github.com/your-repo/gophish_cstm.git
cd gophish_cstm
# 确保配置文件已准备好
ls -la gophish_data/
# 启动服务
docker-compose up -d
# 查看初始密码
docker-compose logs gophish | grep "Please login with"
项目包含的 docker-compose.yml 提供了完整的持久化配置:
services:
gophish:
image: loadingi/gophish_custom:latest
container_name: gophish_custom
ports:
- "3333:3333" # 管理界面
- "80:80" # HTTP 钓鱼服务器
- "443:443" # HTTPS 钓鱼服务器
volumes:
- ./data:/opt/gophish/data # 应用数据
- ./logs:/opt/gophish/logs # 日志文件
- ./gophish_data/gophish.db:/opt/gophish/gophish.db # 数据库
- ./gophish_data/config.json:/opt/gophish/config.json # 配置
environment:
- ADMIN_LISTEN_URL=0.0.0.0:3333
- PHISH_LISTEN_URL=0.0.0.0:80
- TZ=Asia/Shanghai
restart: unless-stopped
user: "root:root"
networks:
- gophish_network
部署完成后的目录结构:
./
├── docker-compose.yml # Docker Compose 配置
├── setup-gophish-custom.sh # 一键部署脚本
├── gophish_data/ # 核心数据(必须备份)
│ ├── gophish.db # SQLite 数据库文件
│ └── config.json # 服务器配置文件
├── data/ # 应用数据目录
│ ├── uploads/ # 上传的文件
│ └── templates/ # 模板文件
└── logs/ # 日志目录
├── gophish.log # 应用日志
└── error.log # 错误日志
| 组件 | 路径 | 用途 | 备份重要性 |
|---|---|---|---|
| 数据库 | gophish_data/gophish.db | 存储活动、模板、用户、结果等所有数据 | 🔴 极其重要 |
| 配置文件 | gophish_data/config.json | 服务器配置、端口、SSL 设置等 | 🟡 重要 |
| 应用数据 | data/ | 上传的文件、附件、静态资源等 | 🟡 重要 |
| 日志文件 | logs/ | 应用程序运行日志 | 🟢 可选 |
# 完整备份(推荐)
tar -czf gophish_backup_$(date +%Y%m%d_%H%M%S).tar.gz gophish_data/ data/ logs/
# 核心数据备份(最小化)
tar -czf gophish_core_$(date +%Y%m%d_%H%M%S).tar.gz gophish_data/
# 定期备份脚本
echo "0 2 * * * cd /path/to/gophish && tar -czf backup/gophish_\$(date +\%Y\%m\%d).tar.gz gophish_data/" | crontab -
# 查看服务状态
docker-compose ps
# 查看实时日志
docker-compose logs -f gophish
# 重启服务
docker-compose restart
# 停止服务
docker-compose down
# 更新到最新版本
docker-compose pull && docker-compose up -d
# 进入容器调试
docker-compose exec gophish /bin/bash
# 备份数据
docker-compose exec gophish tar -czf /tmp/backup.tar.gz /opt/gophish/gophish.db
docker cp gophish_custom:/tmp/backup.tar.gz ./
After running the Gophish binary, open an Internet browser to https://localhost:3333 and login with the default username and password listed in the log output. e.g.
time="2020-07-29T01:24:08Z" level=info msg="Please login with the username admin and the password 4304d5255378177d"
Releases of Gophish prior to v0.10.1 have a default username of admin and password of gophish.
Documentation can be found on our site. Find something missing? Let us know by filing an issue!
Content type
Image
Digest
sha256:aa58b8cd1…
Size
80.3 MB
Last updated
about 1 year ago
docker pull loadingi/gophish_custom