{"_id":"@codelook/proxy-server","name":"@codelook/proxy-server","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@codelook/proxy-server","version":"0.1.0","description":"HTTP/HTTPS proxy server with Docker deployment and Cloudflare Workers support","keywords":["proxy","http-proxy","https-proxy","docker","cloudflare-workers","claude","api-proxy"],"author":{"name":"CodeLook Team"},"license":"MIT","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"proxy-server":"dist/cli.js"},"scripts":{"dev":"tsx watch src/cli.ts","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","lint":"eslint src --ext .ts","test":"vitest","test:watch":"vitest --watch","docker:build":"docker build -t codelook/proxy-server .","docker:run":"docker run -p 8080:8080 codelook/proxy-server","deploy":"bash scripts/deploy.sh","prepublishOnly":"npm run build"},"dependencies":{"chalk":"^5.3.0","commander":"^12.0.0","dotenv":"^16.4.5","http-proxy":"^1.18.1","node-fetch":"^3.3.2","pino":"^9.0.0","pino-pretty":"^11.0.0"},"devDependencies":{"@types/http-proxy":"^1.17.14","@types/node":"^20.14.11","@typescript-eslint/eslint-plugin":"^6.21.0","@typescript-eslint/parser":"^6.21.0","eslint":"^8.57.0","tsup":"^8.1.0","tsx":"^4.16.2","typescript":"^5.5.4","vitest":"^2.0.3"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"_id":"@codelook/proxy-server@0.1.0","gitHead":"1caa9cd018dc6c94ba1701f7e7d1d7e3c136e4cf","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-XqppsbvfUVTOy4SdKPrHupdzGf4Couvn+ZjvTmfYzkZNKBhT6/QsxUqtw2rgw5PI4rzeVdK5fGL9aLcK84TpWw==","shasum":"d4925289e73f2c696a17e2e18e0b34b10b6170d4","tarball":"https://registry.npmjs.org/@codelook/proxy-server/-/proxy-server-0.1.0.tgz","fileCount":18,"unpackedSize":107833,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD3PxWNJ0HIcMshf7Hze/BB+gjrAwRpeUE0CNbeQTbwsgIgRNrXLin+1edr1pDm142mBuFvVxuzkvxJbl1ADyijpw4="}]},"_npmUser":{"name":"foundj","email":"mfj@qq.com","actor":{"name":"foundj","email":"mfj@qq.com","type":"user"}},"directories":{},"maintainers":[{"name":"foundj","email":"mfj@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/proxy-server_0.1.0_1751040619475_0.15491951822504446"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-27T16:10:19.386Z","0.1.0":"2025-06-27T16:10:19.660Z","modified":"2025-06-27T16:10:20.062Z"},"maintainers":[{"name":"foundj","email":"mfj@qq.com"}],"description":"HTTP/HTTPS proxy server with Docker deployment and Cloudflare Workers support","keywords":["proxy","http-proxy","https-proxy","docker","cloudflare-workers","claude","api-proxy"],"author":{"name":"CodeLook Team"},"license":"MIT","readme":"# @codelook/proxy-server\n\n一个功能完整的 HTTP/HTTPS 代理服务器，支持 Docker 部署、SSH 一键部署和 Cloudflare Workers。专为解决 API 访问限制和网络隔离问题而设计。\n\n## 功能特性\n\n- 🚀 **HTTP/HTTPS 代理**：完整支持 HTTP 和 HTTPS（CONNECT）代理\n- 🔒 **认证机制**：Bearer Token 认证保护\n- 🎯 **速率限制**：防止滥用的请求速率限制\n- 📊 **请求日志**：详细的请求和响应日志\n- 🐳 **Docker 支持**：容器化部署，一键启动\n- ☁️ **Cloudflare Workers**：全球边缘节点部署\n- 🔧 **SSH 部署**：一键部署到远程服务器\n- 🌐 **CORS 支持**：跨域请求支持\n\n## 快速开始\n\n### 本地运行\n\n```bash\n# 安装依赖\nnpm install\n\n# 生成认证令牌\nnpx proxy-server generate-token\n\n# 启动服务器\nnpx proxy-server start --auth --token YOUR_TOKEN\n\n# 或使用环境变量\nexport PROXY_AUTH_TOKEN=YOUR_TOKEN\nnpx proxy-server start --auth\n```\n\n### Docker 运行\n\n```bash\n# 构建镜像\ndocker build -t codelook/proxy-server .\n\n# 运行容器\ndocker run -p 8080:8080 \\\n  -e PROXY_AUTH_TOKEN=YOUR_TOKEN \\\n  codelook/proxy-server\n\n# 或使用 docker-compose\ncd docker\ncp .env.example .env\n# 编辑 .env 设置你的令牌\ndocker-compose up -d\n```\n\n### 一键部署到服务器\n\n#### 方法1：快速部署（推荐）\n\n```bash\n# 运行快速部署向导\n./scripts/quick-deploy.sh\n\n# 向导会引导你：\n# 1. 输入服务器信息\n# 2. 自动生成认证令牌\n# 3. 配置所有参数\n# 4. 一键完成部署\n```\n\n#### 方法2：手动配置部署\n\n```bash\n# 1. 复制并编辑环境配置\ncp docker/.env.example docker/.env\n# 编辑 .env 文件，设置你的配置\n\n# 2. 运行部署脚本\n./scripts/deploy.sh your-server.com root 22\n\n# 脚本会自动：\n# - 读取 .env 配置\n# - 构建 Docker 镜像\n# - 上传到服务器\n# - 安装依赖\n# - 启动服务\n```\n\n#### 环境配置说明\n\n```bash\n# docker/.env 文件示例\nPORT=8080                              # 代理服务端口\nPROXY_AUTH_TOKEN=pst_your_token_here   # 认证令牌（使用 generate-token 生成）\nLOG_LEVEL=info                         # 日志级别\nRATE_LIMIT_MAX=100                     # 每分钟最大请求数\n```\n\n## 使用方法\n\n### 1. 在 codem 中使用\n\n```bash\n# 创建环境时配置代理\ncodem create myenv --proxy http://your-proxy:8080\n\n# 设置现有环境的代理\ncodem proxy set myenv http://your-proxy:8080\n```\n\n### 2. 使用 curl 测试\n\n```bash\n# 方式1：使用 X-Target-URL 头\ncurl -H \"Authorization: Bearer YOUR_TOKEN\" \\\n     -H \"X-Target-URL: https://api.anthropic.com\" \\\n     http://localhost:8080/\n\n# 方式2：使用查询参数\ncurl -H \"Authorization: Bearer YOUR_TOKEN\" \\\n     \"http://localhost:8080/?target=https://api.anthropic.com\"\n\n# 方式3：作为 HTTP 代理\ncurl -x http://localhost:8080 \\\n     -H \"Proxy-Authorization: Bearer YOUR_TOKEN\" \\\n     https://api.anthropic.com\n```\n\n### 3. 配置环境变量\n\n```bash\n# 使用认证的代理\nexport HTTP_PROXY=http://localhost:8080\nexport HTTPS_PROXY=http://localhost:8080\nexport PROXY_AUTH_TOKEN=YOUR_TOKEN\n\n# 然后运行你的应用\nclaude chat \"Hello\"\n```\n\n## 配置选项\n\n### CLI 选项\n\n```bash\nproxy-server start [options]\n\nOptions:\n  -p, --port <number>        Server port (default: 8080)\n  -h, --host <string>        Server host (default: 0.0.0.0)\n  --auth                     Enable authentication\n  --token <string>          Authentication token\n  --rate-limit <number>     Max requests per minute (default: 100)\n  --log-level <level>       Log level: debug|info|warn|error (default: info)\n```\n\n### 环境变量\n\n```bash\nPORT=8080                    # 服务器端口\nPROXY_AUTH_TOKEN=xxx        # 认证令牌\nLOG_LEVEL=info              # 日志级别\nRATE_LIMIT_MAX=100          # 每分钟最大请求数\nRATE_LIMIT_WINDOW=60000     # 速率限制窗口（毫秒）\n```\n\n## Cloudflare Workers 部署\n\n支持部署到 Cloudflare Workers 实现全球加速：\n\n```bash\n# 安装 wrangler\nnpm install -g wrangler\n\n# 登录 Cloudflare\nwrangler login\n\n# 部署\ncd cloudflare\nwrangler publish\n\n# 查看部署指南\ncat cloudflare/deploy.md\n```\n\n### Workers 限制\n\n- 请求大小：100MB\n- 执行时间：10ms（免费）/ 50ms（付费）\n- 不支持 WebSocket\n- 不支持流式响应\n\n## 与 Codem 集成\n\n### 快速集成\n\n`@codelook/codem` v0.3.1+ 支持直接使用带认证的代理服务器：\n\n```bash\n# 1. 部署代理服务器并获取 token\ndocker-compose up -d\ndocker logs proxy-server | grep \"Auth token\"\n\n# 2. 在 codem 中配置代理\ncodem create claude-cn \\\n  --proxy http://your-proxy-server.com:8080 \\\n  --proxy-auth \"pst_your_token_here\"\n\n# 3. 使用环境运行 Claude\ncodem run claude-cn\n```\n\n### 工作原理\n\n1. Codem 检测到配置了 `--proxy-auth` 参数\n2. 自动启动本地代理适配器\n3. 适配器为所有请求添加 `Authorization: Bearer <token>` 头\n4. 转发请求到您的代理服务器\n5. Claude 进程结束后自动清理\n\n### 配置示例\n\n```bash\n# 更新认证 token\ncodem proxy set claude-cn --auth \"pst_new_token\"\n\n# 查看代理配置\ncodem proxy show claude-cn\n\n# 移除代理配置\ncodem proxy remove claude-cn\n```\n\n## API 接口\n\n### 健康检查\n\n```http\nGET /health\n\nResponse:\n{\n  \"status\": \"ok\",\n  \"uptime\": 12345,\n  \"requests\": 100\n}\n```\n\n### 代理请求\n\n```http\nGET /\nHeaders:\n  Authorization: Bearer YOUR_TOKEN\n  X-Target-URL: https://api.example.com/endpoint\n\nResponse: 目标服务器的响应\n```\n\n## 架构设计\n\n```\n┌─────────────┐     ┌──────────────┐     ┌─────────────┐\n│   Client    │────▶│ Proxy Server │────▶│Target Server│\n└─────────────┘     └──────────────┘     └─────────────┘\n                           │\n                    ┌──────┴───────┐\n                    │              │\n              ┌─────▼─────┐  ┌────▼────┐\n              │   Auth    │  │Rate Limit│\n              └───────────┘  └──────────┘\n```\n\n## 安全考虑\n\n1. **认证保护**：使用强随机令牌\n2. **速率限制**：防止滥用\n3. **域名过滤**：可配置允许/禁止的域名\n4. **日志脱敏**：不记录敏感信息\n5. **HTTPS 支持**：支持加密传输\n\n## 开发\n\n```bash\n# 开发模式\nnpm run dev\n\n# 类型检查\nnpm run typecheck\n\n# 代码检查\nnpm run lint\n\n# 运行测试\nnpm test\n\n# 构建\nnpm run build\n```\n\n## 故障排除\n\n### 1. 端口被占用\n\n```bash\n# 查找占用端口的进程\nlsof -i :8080\n\n# 使用其他端口\nproxy-server start --port 3128\n```\n\n### 2. Docker 构建失败\n\n```bash\n# 清理 Docker 缓存\ndocker system prune -a\n\n# 重新构建\ndocker build --no-cache -t codelook/proxy-server .\n```\n\n### 3. 认证失败\n\n- 检查令牌是否正确\n- 确保使用 `Bearer` 前缀\n- 检查环境变量是否设置\n\n## 性能优化\n\n- 使用 Node.js cluster 模式提高并发\n- 启用 HTTP Keep-Alive\n- 配置合适的速率限制\n- 使用 Redis 进行分布式速率限制\n\n## 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n## 许可证\n\nMIT © CodeLook Team","readmeFilename":"README.md","_rev":"1-d1af95c03d2aee70a49bc83ccfac24bf"}