Skip to content

Commit c3bffd0

Browse files
authored
Merge pull request #1 from GakkiNoOne/dev
优化抓取效率
2 parents f9ae5a9 + 5660268 commit c3bffd0

File tree

9 files changed

+1018
-308
lines changed

9 files changed

+1018
-308
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: Docker Build and Publish
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- dev
8+
tags:
9+
- 'v*'
10+
workflow_dispatch:
11+
12+
env:
13+
REGISTRY: ghcr.io
14+
IMAGE_NAME: hajimi-king
15+
16+
jobs:
17+
build-and-push:
18+
runs-on: ubuntu-latest
19+
permissions:
20+
contents: read
21+
packages: write
22+
23+
steps:
24+
- name: Checkout code
25+
uses: actions/checkout@v4
26+
27+
- name: Set up Docker Buildx
28+
uses: docker/setup-buildx-action@v3
29+
30+
- name: Log in to GitHub Container Registry
31+
uses: docker/login-action@v3
32+
with:
33+
registry: ${{ env.REGISTRY }}
34+
username: ${{ github.actor }}
35+
password: ${{ secrets.GITHUB_TOKEN }}
36+
37+
- name: Extract metadata
38+
id: meta
39+
uses: docker/metadata-action@v5
40+
with:
41+
images: ${{ env.REGISTRY }}/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}
42+
tags: |
43+
type=ref,event=branch
44+
type=ref,event=tag
45+
type=raw,value=latest,enable={{is_default_branch}}
46+
type=sha,prefix={{branch}}-
47+
48+
- name: Build and push Docker image
49+
uses: docker/build-push-action@v5
50+
with:
51+
context: .
52+
file: ./Dockerfile
53+
push: true
54+
tags: ${{ steps.meta.outputs.tags }}
55+
labels: ${{ steps.meta.outputs.labels }}
56+
platforms: linux/amd64,linux/arm64
57+
cache-from: type=gha
58+
cache-to: type=gha,mode=max
59+
60+
- name: Image digest
61+
run: echo ${{ steps.build.outputs.digest }}

README.md

Lines changed: 103 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
# 🎪 Hajimi King 🏆
22

3-
人人都是哈基米大王 👑,注意项目核心的核心是query.txt的表达式 ✨
3+
人人都是哈基米大王 👑
4+
5+
## 🚀 核心功能
6+
7+
1. **GitHub搜索Gemini Key** 🔍 - 基于自定义查询表达式搜索GitHub代码中的API密钥
8+
2. **代理支持** 🌐 - 支持多代理轮换,提高访问稳定性和成功率
9+
3. **增量扫描** 📊 - 支持断点续传,避免重复扫描已处理的文件
10+
4. **智能过滤** 🚫 - 自动过滤文档、示例、测试文件,专注有效代码
11+
5. **外部同步** 🔄 - 支持向Gemini-Balancer和GPT-Load 同步发现的密钥
412

513
## 📋 目录 🗂️
614

@@ -79,73 +87,72 @@ Ctrl + C
7987

8088
## 🐳 Docker部署 🌊
8189

82-
### 1. 准备部署脚本 📜
83-
84-
```bash
85-
# 将deploy.sh复制到父目录
86-
cd ${deploy_directory}
87-
88-
git clone <repository-url>
89-
90-
cp hajimi-king/first_deploy.sh ./
91-
92-
# 或者直接下载项目到某个目录,确保目录结构如下:
93-
# deploy_directory/
94-
# ├── first_deploy.sh
95-
# └── hajimi-king/
96-
# ├── app
97-
# └── ...
90+
### 方式一:使用环境变量
91+
92+
```yaml
93+
version: '3.8'
94+
services:
95+
hajimi-king:
96+
image: ghcr.io/gakkinoone/hajimi-king:latest
97+
container_name: hajimi-king
98+
restart: unless-stopped
99+
environment:
100+
# 必填:GitHub访问令牌
101+
- GITHUB_TOKENS=ghp_your_token_here_1,ghp_your_token_here_2
102+
# 可选配置
103+
- HAJIMI_CHECK_MODEL=gemini-2.5-flash
104+
- QUERIES_FILE=queries.txt
105+
volumes:
106+
- ./data:/app/data
107+
working_dir: /app
98108
```
99109
100-
### 2. 一键部署 🚀
110+
### 方式二:使用.env文件
111+
112+
```yaml
113+
version: '3.8'
114+
services:
115+
hajimi-king:
116+
image: ghcr.io/gakkinoone/hajimi-king:latest
117+
container_name: hajimi-king
118+
restart: unless-stopped
119+
env_file:
120+
- .env
121+
volumes:
122+
- ./data:/app/data
123+
working_dir: /app
124+
```
101125
126+
创建 `.env` 文件(参考 `env.example`):
102127
```bash
103-
# 运行部署脚本
104-
chmod +x first_deploy.sh
105-
106-
./first_deploy.sh
128+
# 复制示例配置文件
129+
cp env.example .env
130+
# 编辑配置文件,填入你的GitHub Token
107131
```
108132

109-
部署脚本会自动完成以下步骤:
110-
1. ✅ 检查Docker环境 🔍
111-
2. ✅ 创建data目录 📁
112-
3. ✅ 复制配置文件(.env, queries.txt)📄
113-
4. ✅ 交互式配置GitHub Token 🎛️
114-
5. ✅ 构建Docker镜像 🏗️
115-
6. ✅ 启动服务 🎉
116-
117-
### 3. Docker服务管理 🎛️
133+
### 启动服务
118134

119135
```bash
120-
# 查看服务状态
121-
docker-compose ps
122-
123-
# 查看实时日志
124-
docker-compose logs -f
125-
126-
# 停止服务
127-
docker-compose down
136+
# 创建数据目录和查询文件
137+
mkdir -p data
138+
echo "AIzaSy in:file" > data/queries.txt
128139
129-
# 重启服务
140+
# 启动服务
130141
docker-compose up -d
131142
132-
# 进入容器调试
133-
docker-compose exec hajimi-king /bin/bash
143+
# 查看日志
144+
docker-compose logs -f
134145
```
135146

136-
### 4. 文件位置 🗺️
147+
### 代理配置
137148

138-
部署后的文件结构:
139-
```
140-
deploy_directory/
141-
├── .env # 环境配置
142-
├── docker-compose.yml # Docker编排配置
143-
├── data/ # 数据目录
144-
│ ├── queries.txt # 搜索查询配置
145-
│ ├── keys_valid_*.txt # 发现的有效密钥
146-
│ ├── keys_valid_detail_*.log # 详细日志
147-
│ └── scanned_shas.txt # 已扫描文件记录
148-
└── hajimi-king/ # 源码目录
149+
如果需要使用代理访问GitHub或Gemini API,推荐使用本地WARP代理:
150+
151+
> 🌐 **代理方案**:[warp-docker](https://github.com/cmj2002/warp-docker) - 本地WARP代理解决方案
152+
153+
在 `.env` 文件中配置:
154+
```bash
155+
PROXY=http://localhost:1080
149156
```
150157

151158
---
@@ -162,24 +169,33 @@ deploy_directory/
162169

163170
### 🟡 重要配置(建议了解)🤓
164171

165-
| 变量名 | 默认值 | 说明 |
166-
|--------|--------------------|---------------------------|
167-
| `DATA_PATH` | `./data` | 数据存储目录路径 📂 |
168-
| `DATE_RANGE_DAYS` | `730` | 仓库年龄过滤(天数),只扫描指定天数内的仓库 📅 |
169-
| `QUERIES_FILE` | `queries.txt` | 搜索查询配置文件路径(表达式严重影响搜索的高效性) 🎯 |
170-
| `HAJIMI_CHECK_MODEL` | `gemini-2.5-flash` | 用于验证key有效的模型 🤖 |
172+
| 变量名 | 默认值 | 说明 |
173+
|--------|--------------------|-------------------------------------------------|
174+
| `DATA_PATH` | `/app/data` | 数据存储目录路径 📂 |
175+
| `DATE_RANGE_DAYS` | `730` | 仓库年龄过滤(天数),只扫描指定天数内的仓库 📅 |
176+
| `QUERIES_FILE` | `queries.txt` | 搜索查询配置文件路径(表达式严重影响搜索的高效性) 🎯 |
177+
| `HAJIMI_CHECK_MODEL` | `gemini-2.5-flash` | 用于验证key有效的模型 🤖 |
178+
| `GEMINI_BALANCER_SYNC_ENABLED` | `false` | 是否启用Gemini Balancer同步 🔗 |
179+
| `GEMINI_BALANCER_URL` | 空 | Gemini Balancer服务地址(http://your-gemini-balancer.com) 🌐 |
180+
| `GEMINI_BALANCER_AUTH` | 空 | Gemini Balancer认证信息(密码) 🔐 |
181+
| `GPT_LOAD_SYNC_ENABLED` | `false` | 是否启用GPT Load Balancer同步 🔗 |
182+
| `GPT_LOAD_URL` | 空 | GPT Load 服务地址(http://your-gpt-load.com) 🌐 |
183+
| `GPT_LOAD_AUTH` | 空 | GPT Load 认证Token(页面密码) 🔐 |
184+
| `GPT_LOAD_GROUP_NAME` | 空 | GPT Load 组名,多个用逗号分隔(group1,group2) 👥 |
171185

172186
### 🟢 可选配置(不懂就别动)😅
173187

174-
| 变量名 | 默认值 | 说明 |
175-
|--------|--------------------------------------------------------------------|------|
176-
| `PROXY` || 代理服务器地址,格式:`http://proxy:port` 🌐 |
177-
| `VALID_KEY_DETAIL_PREFIX` | `logs/keys_valid_detail_` | 详细日志文件名前缀 📝 |
178-
| `VALID_KEY_PREFIX` | `keys/keys_valid_` | 有效密钥文件名前缀 🗝️ |
179-
| `RATE_LIMITED_KEY_PREFIX` | `keys/key_429_` | 频率限制密钥文件名前缀 ⏰ |
180-
| `RATE_LIMITED_KEY_DETAIL_PREFIX` | `logs/key_429_detail_` | 频率限制详细日志文件名前缀 📊 |
181-
| `SCANNED_SHAS_FILE` | `scanned_shas.txt` | 已扫描文件SHA记录文件名 📋 |
182-
| `FILE_PATH_BLACKLIST` | `readme,docs,doc/,.md,example,sample,tutorial,test,spec,demo,mock` | 文件路径黑名单,逗号分隔 🚫 |
188+
| 变量名 | 默认值 | 说明 |
189+
|----------------------------------|------------------------------------|------|
190+
| `PROXY` | 空 | 代理服务器地址,格式:`http://proxy:port` 🌐 |
191+
| `VALID_KEY_PREFIX` | `keys/keys_valid_` | 有效密钥文件名前缀 🗝️ |
192+
| `RATE_LIMITED_KEY_PREFIX` | `keys/key_429_` | 频率限制密钥文件名前缀 ⏰ |
193+
| `KEYS_SEND_PREFIX` | `keys/keys_send_` | 发送到外部应用的密钥文件名前缀 🚀 |
194+
| `VALID_KEY_DETAIL_PREFIX` | `logs/keys_valid_detail_` | 详细日志文件名前缀 📝 |
195+
| `RATE_LIMITED_KEY_DETAIL_PREFIX` | `logs/key_429_detail_` | 频率限制详细日志文件名前缀 📊 |
196+
| `VALID_KEY_DETAIL_PREFIX` | `logs/keys_valid_detail_` | 有效密钥文件名前缀 🗝️ |
197+
| `SCANNED_SHAS_FILE` | `scanned_shas.txt` | 已扫描文件SHA记录文件名 📋 |
198+
| `FILE_PATH_BLACKLIST` | `readme,docs,doc/,.md,example,...` | 文件路径黑名单,逗号分隔 🚫 |
183199

184200
### 配置文件示例 💫
185201

@@ -190,17 +206,30 @@ deploy_directory/
190206
GITHUB_TOKENS=ghp_your_token_here_1,ghp_your_token_here_2
191207
192208
# 重要配置(可选修改)
193-
DATA_PATH=./data
209+
DATA_PATH=/app/data
194210
DATE_RANGE_DAYS=730
195211
QUERIES_FILE=queries.txt
196-
HAJIMI_CHECK_MODEL=gemini-2.5-flash-preview-05-20
212+
HAJIMI_CHECK_MODEL=gemini-2.5-flash
213+
PROXY=
214+
215+
# Gemini Balancer同步配置
216+
GEMINI_BALANCER_SYNC_ENABLED=false
217+
GEMINI_BALANCER_URL=
218+
GEMINI_BALANCER_AUTH=
219+
220+
# GPT Load Balancer同步配置
221+
GPT_LOAD_SYNC_ENABLED=false
222+
GPT_LOAD_URL=
223+
GPT_LOAD_AUTH=
224+
GPT_LOAD_GROUP_NAME=group1,group2,group3
197225
198226
# 高级配置(建议保持默认)
199-
PROXY=
200-
VALID_KEY_DETAIL_PREFIX=logs/keys_valid_detail_
201227
VALID_KEY_PREFIX=keys/keys_valid_
202228
RATE_LIMITED_KEY_PREFIX=keys/key_429_
229+
KEYS_SEND_PREFIX=keys/keys_send_
230+
VALID_KEY_DETAIL_PREFIX=logs/keys_valid_detail_
203231
RATE_LIMITED_KEY_DETAIL_PREFIX=logs/key_429_detail_
232+
KEYS_SEND_DETAIL_PREFIX=logs/keys_send_detail_
204233
SCANNED_SHAS_FILE=scanned_shas.txt
205234
FILE_PATH_BLACKLIST=readme,docs,doc/,.md,example,sample,tutorial,test,spec,demo,mock
206235
```
@@ -218,6 +247,7 @@ FILE_PATH_BLACKLIST=readme,docs,doc/,.md,example,sample,tutorial,test,spec,demo,
218247
219248
# 基础搜索
220249
AIzaSy in:file
250+
AizaSy in:file filename:.env
221251
```
222252

223253
> 📖 **搜索语法参考**:[GitHub Code Search Syntax](https://docs.github.com/en/search-github/searching-on-github/searching-code) 📚
@@ -231,18 +261,6 @@ AIzaSy in:file
231261
- ✅ 定期轮换GitHub Token 🔄
232262
- ✅ 不要将真实的API密钥提交到版本控制 🙈
233263
- ✅ 定期检查和清理发现的密钥文件 🧹
234-
- ✅ 运行在安全的网络环境中 🏠
235-
236-
## 📞 故障排除 🩺
237-
238-
| 问题 | 解决方案 |
239-
|------|----------|
240-
| GitHub API限流 ⏰ | 添加更多GitHub Token或减少并发数 🔧 |
241-
| Docker构建失败 💥 | 检查网络连接,清理Docker缓存 🧽 |
242-
| 找不到密钥 🔍 | 检查queries.txt配置,调整搜索关键词 🎯 |
243-
| 容器启动失败 🚫 | 检查.env文件配置,确保GitHub Token有效 ✅ |
244-
245-
---
246264

247265
💖 **享受使用 Hajimi King 的快乐时光!** 🎉✨🎊
248266

0 commit comments

Comments
 (0)