超腾开源平台统计模块
本文档详细介绍了统计模块的API接口,该模块主要用于网站访问统计和爬虫日志记录。核心功能分为两部分:站点统计提供页面访问管理、数据收集和数据分析,包含获取页面访问详情、创建记录、批量收集事件以及查询整体或单个页面的统计数据等接口;爬虫日志模块则提供对各类爬虫访问记录的查询与管理。文档明确了各接口的地址、方法、认证要求、请求参数及响应示例,并附有使用代码示例和注意事项,强调了隐私保护与性能设计。该模块旨在帮助用户高效收集和分析网站流量数据。
统计模块提供网站访问统计、爬虫日志记录等功能。
目录
站点统计
站点统计模块提供页面访问统计、数据分析等功能。
页面访问管理
| 接口地址 | 方法 | 说明 |
|---|---|---|
/api/statistics/analytics/pageview/detail |
GET | 获取页面访问详情 |
/api/statistics/analytics/pageview/list |
GET | 获取页面访问列表 |
/api/statistics/analytics/pageview/page |
GET | 获取页面访问分页 |
/api/statistics/analytics/pageview |
POST | 创建页面访问记录 |
创建页面访问记录
接口地址: POST /api/statistics/analytics/pageview
需要认证: 否(网站端公开接口)
请求体:
{
"url": "/blog/article-1",
"referrer": "https://google.com",
"user_agent": "Mozilla/5.0...",
"ip_address": "192.168.1.1",
"session_id": "session_12345",
"page_title": "文章标题",
"duration": 30,
"device_type": "desktop"
}
请求字段说明:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 页面 URL |
| referrer | string | 否 | 来源页面 |
| user_agent | string | 否 | 用户代理 |
| ip_address | string | 否 | IP 地址 |
| session_id | string | 否 | 会话 ID |
| page_title | string | 否 | 页面标题 |
| duration | int | 否 | 停留时间(秒) |
| device_type | string | 否 | 设备类型(desktop/mobile/tablet) |
数据收集
| 接口地址 | 方法 | 说明 | 认证 |
|---|---|---|---|
/api/statistics/analytics/collect |
POST | 收集访问数据 | 否 |
收集访问数据
接口地址: POST /api/statistics/analytics/collect
需要认证: 否
说明: 用于前端批量收集和提交访问数据。
请求体:
{
"events": [
{
"type": "pageview",
"url": "/blog/article-1",
"timestamp": 1640995200000
},
{
"type": "click",
"element": "button",
"url": "/blog/article-1"
}
],
"user_info": {
"user_id": "1",
"session_id": "session_12345",
"device_type": "desktop"
}
}
统计数据
| 接口地址 | 方法 | 说明 |
|---|---|---|
/api/statistics/analytics/stats |
GET | 获取统计数据 |
/api/statistics/analytics/page-stats |
GET | 获取单个页面统计数据 |
/api/statistics/analytics/update-daily-stats |
POST | 更新每日统计数据 |
获取统计数据
接口地址: GET /api/statistics/analytics/stats
需要认证: 是
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| start_date | date | 否 | 开始日期 |
| end_date | date | 否 | 结束日期 |
| group_by | string | 否 | 分组方式(day/week/month) |
响应示例:
{
"success": true,
"code": 200,
"msg": "操作成功",
"data": {
"total_visits": 10000,
"unique_visitors": 5000,
"total_page_views": 50000,
"avg_session_duration": 180,
"bounce_rate": 40.5,
"top_pages": [
{
"url": "/home",
"views": 10000,
"unique_visitors": 5000
},
{
"url": "/blog",
"views": 8000,
"unique_visitors": 4000
}
],
"traffic_sources": [
{
"source": "direct",
"count": 3000
},
{
"source": "google",
"count": 4000
}
],
"devices": [
{
"device_type": "desktop",
"count": 6000
},
{
"device_type": "mobile",
"count": 3000
}
]
}
}
获取单个页面统计数据
接口地址: GET /api/statistics/analytics/page-stats
需要认证: 是
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 页面 URL |
| start_date | date | 否 | 开始日期 |
| end_date | date | 否 | 结束日期 |
响应示例:
{
"success": true,
"code": 200,
"msg": "操作成功",
"data": {
"url": "/blog/article-1",
"total_views": 1000,
"unique_visitors": 800,
"avg_duration": 120,
"bounce_rate": 30,
"views_over_time": [
{
"date": "2026-01-01",
"views": 100
},
{
"date": "2026-01-02",
"views": 120
}
]
}
}
每日统计
| 接口地址 | 方法 | 说明 |
|---|---|---|
/api/statistics/analytics/daily/detail |
GET | 获取每日统计详情 |
/api/statistics/analytics/daily/list |
GET | 获取每日统计列表 |
/api/statistics/analytics/daily/page |
GET | 获取每日统计分页 |
爬虫日志
爬虫日志模块记录各种爬虫的访问情况。
爬虫日志管理
| 接口地址 | 方法 | 说明 |
|---|---|---|
/api/statistics/spider_logs/detail |
GET | 获取爬虫日志详情 |
/api/statistics/spider_logs/list |
GET | 获取爬虫日志列表 |
/api/statistics/spider_logs/page |
GET | 获取爬虫日志分页 |
获取爬虫日志列表
接口地址: GET /api/statistics/spider_logs/list
需要认证: 是
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| spider_type | string | 否 | 爬虫类型(google/baidu/bing/other) |
| url | string | 否 | 访问 URL |
| start_date | date | 否 | 开始日期 |
| end_date | date | 否 | 结束日期 |
| status | string | 否 | 状态 |
| order | string | 否 | 排序 |
响应示例:
{
"success": true,
"code": 200,
"msg": "操作成功",
"data": [
{
"id": "1",
"spider_type": "google",
"spider_name": "Googlebot",
"url": "/blog/article-1",
"user_agent": "Mozilla/5.0 (compatible; Googlebot/2.1; ...)",
"ip_address": "66.249.66.1",
"request_method": "GET",
"status_code": 200,
"response_time": 100,
"access_time": "2026-01-01T00:00:00Z"
}
]
}
枚举类型说明
设备类型 (DeviceType)
| 值 | 说明 |
|---|---|
| desktop | 桌面电脑 |
| mobile | 移动设备 |
| tablet | 平板设备 |
| other | 其他设备 |
事件类型 (EventType)
| 值 | 说明 |
|---|---|
| pageview | 页面浏览 |
| click | 点击事件 |
| scroll | 滚动事件 |
| form_submit | 表单提交 |
| other | 其他事件 |
流量来源 (TrafficSource)
| 值 | 说明 |
|---|---|
| direct | 直接访问 |
| organic | 自然搜索 |
| referral | 引荐 |
| social | 社交媒体 |
| 邮件营销 | |
| paid | 付费广告 |
| other | 其他来源 |
使用示例
Python 示例
import requests
base_url = 'http://localhost:8000/api/statistics'
# 收集访问数据(无需认证)
response = requests.post(
f'{base_url}/analytics/collect',
json={
'events': [
{
'type': 'pageview',
'url': '/blog/article-1',
'timestamp': 1640995200000
}
],
'user_info': {
'session_id': 'session_12345',
'device_type': 'desktop'
}
}
)
print(response.json())
# 获取统计数据(需要认证)
token = 'your_access_token'
headers = {'Authorization': f'Bearer {token}'}
response = requests.get(
f'{base_url}/analytics/stats',
headers=headers,
params={
'start_date': '2026-01-01',
'end_date': '2026-01-31'
}
)
print(response.json())
# 获取爬虫日志
response = requests.get(
f'{base_url}/spider_logs/list',
headers=headers,
params={'spider_type': 'google'}
)
print(response.json())
JavaScript 示例
// 收集页面访问数据
function trackPageView(url, referrer) {
fetch("http://localhost:8000/api/statistics/analytics/collect", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
events: [
{
type: "pageview",
url: url,
referrer: referrer,
timestamp: Date.now(),
},
],
user_info: {
session_id: getSessionId(),
device_type: getDeviceType(),
},
}),
});
}
// 获取统计数据
async function getStats(token, startDate, endDate) {
const response = await fetch(
`http://localhost:8000/api/statistics/analytics/stats?start_date=${startDate}&end_date=${endDate}`,
{ headers: { Authorization: `Bearer ${token}` } }
);
return await response.json();
}
// 获取单个页面统计
async function getPageStats(token, url) {
const response = await fetch(
`http://localhost:8000/api/statistics/analytics/page-stats?url=${encodeURIComponent(
url
)}`,
{ headers: { Authorization: `Bearer ${token}` } }
);
return await response.json();
}
注意事项
- 隐私保护: 统计数据不记录个人敏感信息,符合隐私保护要求。
- 性能影响: 统计接口设计为异步写入,不影响主流程性能。
- 数据清理: 建议定期清理过期数据,避免数据库膨胀。
- 爬虫识别: 通过 User-Agent 识别爬虫,但需要注意伪装的情况。
- 统计延迟: 统计数据有轻微延迟,实时性要求不高的场景可以使用。
- 批量收集: 建议使用批量收集接口,减少请求次数。
相关文档
本文由人工编写,AI优化,转载请注明原文地址: 超腾开源平台统计模块