{"id":26562632,"url":"https://github.com/ravizhan/powcaptcha","last_synced_at":"2026-05-06T22:31:11.040Z","repository":{"id":282531013,"uuid":"948445513","full_name":"ravizhan/powcaptcha","owner":"ravizhan","description":"基于工作量证明PoW的验证码系统","archived":false,"fork":false,"pushed_at":"2025-03-22T17:27:57.000Z","size":38,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-19T00:22:46.588Z","etag":null,"topics":["fastapi","pow","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ravizhan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-AGPLv3","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-14T10:55:44.000Z","updated_at":"2025-03-28T04:59:16.000Z","dependencies_parsed_at":"2025-03-15T08:27:21.818Z","dependency_job_id":"7239b744-f778-4212-a127-8d66ee9159af","html_url":"https://github.com/ravizhan/powcaptcha","commit_stats":null,"previous_names":["ravizhan/powcaptcha"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ravizhan/powcaptcha","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravizhan%2Fpowcaptcha","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravizhan%2Fpowcaptcha/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravizhan%2Fpowcaptcha/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravizhan%2Fpowcaptcha/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ravizhan","download_url":"https://codeload.github.com/ravizhan/powcaptcha/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ravizhan%2Fpowcaptcha/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32714689,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-06T19:35:05.142Z","status":"ssl_error","status_checked_at":"2026-05-06T19:35:03.996Z","response_time":117,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fastapi","pow","python"],"created_at":"2025-03-22T15:18:26.185Z","updated_at":"2026-05-06T22:31:11.020Z","avatar_url":"https://github.com/ravizhan.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PoW 验证码系统\n\n## 简介\n\n这是一个基于工作量证明（Proof of Work，简称 PoW）的验证码系统。该系统旨在通过工作量证明机制，有效防止恶意攻击和自动化操作，为各类应用场景提供安全保障。\n\n## 功能特点\n\n- **工作量证明机制**：采用 PoW 算法，要求客户端完成一定计算任务，验证其真实性，增加攻击者成本。\n- **多语言客户端支持**：提供多种语言的客户端实现，方便不同开发环境下的集成和使用。(TODO)\n- **简单易用**：设计简洁，易于集成到各类应用中，无论是网站、移动应用还是其他系统，都能快速部署和使用。\n- **资源消耗可控**：通过调整工作量证明的难度，可以在安全性和性能之间取得平衡。\n\n## 技术架构\n\n- **服务端**：使用 Python 编写，负责生成验证码、验证结果等工作。\n- **客户端**：支持多种编程语言，包括但不限于 JavaScript、Java、C++ 等，方便不同平台的开发者进行集成。\n\n## 项目结构\n\n```\n├─client 客户端\n│  ├─golang\n│  ├─javascript\n│  └─python\n└─server 服务端\n```\n\n## 使用方法\n\n### 服务端\n\n安装依赖，本项目使用 uv 管理依赖，推荐优先选择 uv\n\n- 使用 `uv`\n\n  ```bash\n  uv sync\n  ```\n\n- 使用 `pip`\n\n  ```bash\n  pip install -r pyproject.toml\n  ```\n\n  或者\n\n  ```bash\n  pip install -r requirements.txt\n  ```\n\n配置文件\n\n```json\n{\n  \"secret\": \"a-string-secret-at-least-256-bits-long\",\n  \"redis\": {\n    \"host\": \"127.0.0.1\",\n    \"port\": \"6379\",\n    \"db\": 1,\n    \"password\": \"\"\n  },\n  \"difficulty\": 42\n}\n```\n\n- redis：redis服务器地址、端口、数据库、密码\n- difficulty：验证码难度，数字越大，难度越高，解答越慢\n- secret：JWT签名密钥，请设置32位数以上的随机字符串\n\n### 客户端\n\n请查看各语言客户端的README\n\n客户端基本流程如下所示：\n\n```mermaid\nsequenceDiagram\n    autonumber\n    客户端-\u003e\u003e服务端: 请求challenge\n    服务端--\u003e\u003e服务端: 生成challenge，写入redis\n    服务端--\u003e\u003e客户端: 响应challenge\n    客户端-\u003e\u003e客户端: 计算结果\n    客户端-\u003e\u003e服务端: 提交结果\n    服务端--\u003e\u003e服务端: 查询redis，验证结果\n    服务端--\u003e\u003e客户端: 生成并响应token\n    客户端-\u003e\u003e业务服务器: 携带token发送自定义业务请求\n    业务服务器-\u003e\u003e服务端: 验证token\n    服务端--\u003e\u003e业务服务器: 响应验证结果\n    业务服务器-\u003e\u003e客户端: 响应业务请求\n```\n\n## 贡献\n\n欢迎各位开发者为本项目贡献代码、提出改进建议或报告问题。你可以通过以下方式参与：\n\n1. **提交 Issue**：如果您发现任何问题或有任何改进建议，可以在 [Issues](https://github.com/yourusername/pow-captcha/issues) 页面提交。\n2. **提交 Pull Request**：如果您想要直接参与代码改进，可以 fork 本项目，完成您的修改后提交 Pull Request。\n\n## 许可证\n\n本项目采用 [AGPLv3 License](LICENSE-AGPLv3) 和 [LGPLv3 License](LICENSE-LGPLv3) 双许可证授权。\n其中 server(服务端)部分采用 AGPLv3 License，client(客户端)部分采用 LGPLv3 License，请注意区别。","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fravizhan%2Fpowcaptcha","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fravizhan%2Fpowcaptcha","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fravizhan%2Fpowcaptcha/lists"}