Spaces:
Sleeping
Sleeping
File size: 4,071 Bytes
319b754 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 | # ICP备案查询API
这是一个基于FastAPI的ICP备案信息查询服务,可以通过域名查询相关的ICP备案信息。
## 功能特性
- 🚀 基于FastAPI框架,性能优异
- 🔄 自动重试机制,最多重试5次
- 🛡️ 自动处理验证码识别
- 📋 RESTful API接口
- 📖 自动生成API文档
## 安装依赖
```bash
pip install -r requirements.txt
```
## 启动服务
### 方法1:使用Docker (推荐)
```bash
# 构建并启动
docker-compose up -d --build
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
```
### 方法2:本地开发
```bash
# 安装依赖
pip install -r requirements.txt
# 启动服务
python -m uvicorn app:app --host 0.0.0.0 --port 8000 --reload
```
## API接口
### 查询域名ICP备案信息
**GET** `/query?domain={domain}`
#### 参数
- `domain` (必需): 要查询的域名,例如 `scgzyun.com`
#### 示例请求
```bash
curl "http://localhost:8000/query?domain=scgzyun.com"
```
#### 示例响应
```json
{
"code": 200,
"msg": "操作成功",
"params": {
"endRow": 0,
"firstPage": 1,
"hasNextPage": false,
"hasPreviousPage": false,
"isFirstPage": true,
"isLastPage": true,
"lastPage": 1,
"list": [
{
"contentTypeName": "",
"domain": "scgzyun.com",
"domainId": 990004509801,
"leaderName": "",
"limitAccess": "否",
"mainId": 110001964865,
"mainLicence": "蜀ICP备19011193号",
"natureName": "企业",
"serviceId": 990005092743,
"serviceLicence": "蜀ICP备19011193号-6",
"unitName": "成都七淘网络科技有限公司",
"updateRecordTime": "2024-03-01 09:25:43"
}
],
"navigatePages": 8,
"navigatepageNums": [1],
"nextPage": 1,
"pageNum": 1,
"pageSize": 10,
"pages": 1,
"prePage": 1,
"size": 1,
"startRow": 0,
"total": 1
},
"success": true
}
```
### 健康检查
**GET** `/health`
#### 示例请求
```bash
curl "http://localhost:8000/health"
```
#### 示例响应
```json
{
"status": "healthy",
"timestamp": 1704362400
}
```
## API文档
启动服务后,可以访问以下地址查看自动生成的API文档:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
## 错误处理
- 自动重试机制:当查询失败时,会自动重试最多5次
- 详细错误信息:返回具体的错误原因
- HTTP状态码:标准的HTTP状态码响应
## 测试
### 本地测试
```bash
python test_api.py
```
### Docker测试
```bash
# 在容器中运行测试
docker-compose exec icp-spider-api python test_api.py
# 或者直接测试API接口
curl "http://localhost:8000/health"
curl "http://localhost:8000/query?domain=scgzyun.com"
```
## 注意事项
1. 服务依赖于外部的验证码识别模型文件:`yolov8.onnx` 和 `siamese.onnx`
2. 确保这些模型文件在项目根目录中
3. 首次运行可能需要一些时间来加载模型
4. 建议在生产环境中使用更强的错误处理和日志记录
## 项目结构
```
ICP-spider/
├── app.py # FastAPI应用主文件
├── test_api.py # 测试脚本
├── main.py # 原始脚本
├── crack.py # 验证码识别模块
├── requirements.txt # 依赖列表
├── Dockerfile # Docker镜像构建文件
├── docker-compose.yml # Docker编排文件
├── .dockerignore # Docker忽略文件
├── yolov8.onnx # YOLO模型文件
├── siamese.onnx # Siamese模型文件
└── README_API.md # 项目说明
```
## Docker部署
### 构建和运行
```bash
# 构建镜像
docker build -t icp-spider-api .
# 运行容器
docker run -d -p 8000:8000 --name icp-spider-api icp-spider-api
# 或使用docker-compose
docker-compose up -d --build
```
### 生产环境部署
```bash
# 使用docker-compose部署
docker-compose -f docker-compose.yml up -d
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
```
|