Skip to content

xhdndmm/one_file_search_engine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stars License Python Version Downloads

  • v1.1效果图

这是什么?

这是一个简易的轻量级的单文件搜索引擎(只需要准备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_hashsecret_key等敏感信息!
  • 建议使用VSCode作为编辑器 不过不强求(VSCode有调试文件)

其他

请遵守GPLV3开源协议