# 私有 Hugging Face Spaces 访问指南 ## 🔐 私有 Space 认证说明 当你的 Hugging Face Space 设置为 **private** 时,可以通过以下方式使用 access token 调用 API: ### 1. 获取 Hugging Face Access Token 1. 访问 [Hugging Face Settings](https://huggingface.co/settings/tokens) 2. 点击 "New token" 创建新的访问令牌 3. 选择适当的权限(通常选择 "Read" 权限即可) 4. 复制生成的 token(格式为 `hf_xxxxxxxxxx`) ### 2. 设置 Space 为私有 1. 进入你的 Space 设置页面 2. 在 "Visibility" 部分选择 **Private** 3. 保存设置 ### 3. 使用 Access Token 调用 API #### 方法一:Authorization Bearer Header ```bash curl -X POST https://your-username-space-name.hf.space/screenshot \ -H "Content-Type: application/json" \ -H "Authorization: Bearer hf_your_token_here" \ -d '{"url": "https://example.com", "width": 1280, "height": 720}' \ --output screenshot.jpg ``` #### 方法二:JavaScript 调用 ```javascript const response = await fetch('https://your-username-space-name.hf.space/screenshot', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer hf_your_token_here' }, body: JSON.stringify({ url: 'https://example.com', width: 1280, height: 720, quality: 80 }) }); if (response.ok) { const imageBlob = await response.blob(); // 处理图片数据 } else { const error = await response.json(); console.error('Error:', error); } ``` #### 方法三:Python 调用 ```python import requests url = "https://your-username-space-name.hf.space/screenshot" headers = { "Content-Type": "application/json", "Authorization": "Bearer hf_your_token_here" } data = { "url": "https://example.com", "width": 1280, "height": 720, "quality": 80 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: with open("screenshot.jpg", "wb") as f: f.write(response.content) print("Screenshot saved successfully") else: print("Error:", response.json()) ``` ## 🔄 认证方式优先级 本 API 支持多种认证方式,按以下优先级处理: 1. **Hugging Face Token** (`Authorization: Bearer hf_xxx`) - 最高优先级 2. **自定义 API Key** (`Authorization: Bearer xxx` 或 `x-api-key: xxx`) ## 🚨 Token 安全注意事项 ### ✅ 安全实践 - 定期轮换 access token - 不要在客户端代码中硬编码 token - 使用环境变量存储 token - 为不同用途创建不同的 token ### ❌ 避免的做法 - 不要在 GitHub 等公开仓库中提交 token - 不要在浏览器控制台中暴露 token - 不要与他人分享你的 personal access token ## 📊 私有 Space 的优势 ### 🔒 访问控制 - 只有拥有 token 的用户才能访问 - 可以精确控制 API 使用权限 - 保护敏感的截图服务不被滥用 ### 📈 性能优势 - 更高的速率限制(100 次/15分钟 vs 30 次/15分钟) - 优先级处理队列 - 更稳定的服务可用性 ### 💰 成本控制 - 避免不必要的 API 调用 - 防止恶意使用导致的资源消耗 - 更好的使用量监控 ## 🛠️ 环境变量配置 如果你想启用自定义 API key 认证,可以在 Space 设置中添加: ```bash # 自定义 API key(可选) API_KEY=sk-your-secure-api-key-here ``` **注意:** 即使没有设置 `API_KEY`,HF access token 仍然可以正常使用。 ## 🔍 调试和监控 ### 检查认证状态 ```bash curl https://your-username-space-name.hf.space/ \ -H "Authorization: Bearer hf_your_token_here" ``` 响应会显示支持的认证方法: ```json { "message": "Page Screenshot API - Hugging Face Spaces", "version": "1.4.0", "authentication": { "type": "API Key Required", "required": true, "note": "API key required for screenshot endpoint" } } ``` ### 服务器状态监控 ```bash curl https://your-username-space-name.hf.space/status \ -H "Authorization: Bearer hf_your_token_here" ``` ## 🆘 故障排除 ### 401 Unauthorized - 检查 token 是否正确 - 确认 token 以 `hf_` 开头 - 验证 token 长度至少 20 个字符 ### 403 Forbidden - Token 格式不正确 - Token 可能已过期或被撤销 - 检查 Space 的访问权限设置 ### 示例错误响应 ```json { "error": "Unauthorized", "message": "Valid API key required. Please provide API key in Authorization header or x-api-key header.", "hint": "Use \"Authorization: Bearer YOUR_API_KEY\" or \"x-api-key: YOUR_API_KEY\"" } ``` ## 📝 最佳实践总结 1. **部署时设置为私有:** 在生产环境中始终使用私有 Space 2. **使用环境变量:** 通过环境变量管理敏感配置 3. **实施监控:** 定期检查 API 使用情况和性能 4. **Token 管理:** 定期轮换 access token,保持安全性 5. **错误处理:** 在客户端代码中正确处理认证错误 通过以上配置,你的私有 Hugging Face Space 将支持安全的 token 认证访问!