这是一个简易的轻量级的单文件搜索引擎(只需要准备Python,安装Flask。整个项目源码只有一个文件)
使用Python编写,SQLite数据库,Flask Web服务,支持爬取网页,记录网页信息,并根据关键信息搜索的功能。
准备Python3环境
克隆存储库并安装依赖:
git clone https://github.com/xhdndmm/one_file_search_engine && cd one_file_search_engine && pip install -r requirements.txt- 注:旧版本可以在这里下载
启动程序:
python3 src/main.py你可以使用tmux守护进程,或者gunicorn。
--debug参数可以启用调试模式
{
"db_path": "sites.db",
"max_fetch_bytes": 200 * 1024,
"fetch_timeout": 8,
"allowed_schemes": ["http", "https"],
"user_agent": "Mozilla/5.0 (compatible; one_file_search_engine_bot/1.0; +https://github.com/xhdndmm/one_file_search_engine)",
"robots_cache_ttl": 3600,
"admin_user": "admin",
"admin_password_hash": None,
"secret_key": None,
"disallow_private_networks": True
"log_dir": "logs",
"log_file": "one_file_search_engine.log"
} db_path
- SQLite 数据库文件路径(默认 sites.db)。
max_fetch_bytes
- 抓取单个页面时最多读取的字节数(示例为 200KB)。
fetch_timeout
- 抓取 HTTP 请求的超时时间(秒)。
allowed_schemes
- 允许抓取的 URL scheme 列表(通常是 http/https)。
user_agent
- 抓取时使用的 User-Agent 字符串。
robots_cache_ttl
- robots.txt 缓存有效期(秒),超过此时间会重新获取。
admin_user
- 管理员用户名(默认为admin)。
admin_password_hash
- 管理员密码的哈希值(不要放明文密码!生成方法在下面,默认随机生成)。
Important
生成密码哈希值的方法:
#运行下方代码
from werkzeug.security import generate_password_hash
print(generate_password_hash(input("输入要设置的管理员密码: ")))在这里输入你要设置的密码,复制输出的结果到配置文件中
secret_key
- Flask 会话/签名用的 secret key(应为随机且保密)。
disallow_private_networks
- 是否拒绝抓取私有/回环地址(用于基本 SSRF 防护;true 推荐)。
密码和密钥类文件请妥善保存!!!
log_dir"
- 日志目录
log_file
- 日志文件名
/主页
/admin/login登陆
/admin/dashboard管理面板
/admin/logout登出
你可以在这里反馈问题,欢迎你来提供宝贵的意见。
我们很欢迎你来为本程序添砖加瓦,但是请遵守以下规则:
- 在提交PR之前,请务必测试或审查!确保你提交的程序没有严重错误。
- 提交PR时,请提交到dev分支。
- 注意不要上传
admin_password_hash、secret_key等敏感信息! - 建议使用VSCode作为编辑器 不过不强求(VSCode有调试文件)
请遵守GPLV3开源协议



