超腾开源平台统计模块

2026-01-07 超腾开源 19 次阅读 0 次点赞
本文档详细介绍了统计模块的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 社交媒体
email 邮件营销
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();
}

注意事项

  1. 隐私保护: 统计数据不记录个人敏感信息,符合隐私保护要求。
  2. 性能影响: 统计接口设计为异步写入,不影响主流程性能。
  3. 数据清理: 建议定期清理过期数据,避免数据库膨胀。
  4. 爬虫识别: 通过 User-Agent 识别爬虫,但需要注意伪装的情况。
  5. 统计延迟: 统计数据有轻微延迟,实时性要求不高的场景可以使用。
  6. 批量收集: 建议使用批量收集接口,减少请求次数。

相关文档

本文由人工编写,AI优化,转载请注明原文地址: 超腾开源平台统计模块

评论 (0)

登录后发表评论

暂无评论,快来发表第一条评论吧!