接入文档

五分钟完成接入,让你的网站拥有访问量统计

快速开始

接入只需两步,全程不需要注册账号,也不需要填写任何信息。

1. 引入统计脚本

把下面这行代码粘贴到你网站页面的 <head> 中, 或者 </body> 标签之前:

<script src="https://tongji.leilang.cn/js/leilang.js" defer></script>
脚本使用 defer 异步加载,不会阻塞页面渲染。 只要引入了这行代码,即使页面上没有任何展示标签,访问量也会被正常记录。

2. 放置展示标签

在你想显示数据的地方,插入对应 id 的标签即可:

本站总访问量 <span id="leilang_site_pv">加载中...</span> 次
本站总访客数 <span id="leilang_site_uv">加载中...</span> 人

展示标签

脚本支持以下六个统计维度,按需选用:

标签 id含义说明
leilang_today_pv今日总访问量本站今日被打开的总次数,每日 0 点归零
leilang_today_uv今日总访客数本站今日的独立访客数,每日 0 点归零
leilang_site_pv本站总访问量全站累计被打开的总次数
leilang_site_uv本站总访客数全站累计独立访客数
leilang_page_pv本页总阅读量当前这个页面被打开的次数
leilang_page_uv本页总访客数当前这个页面的独立访客数

兼容写法

如果你希望数据加载完成后再显示整行文字(避免出现「加载中」闪烁), 可以使用 container / value 的组合写法。container 默认隐藏,数据就绪后自动显示:

<span id="leilang_container_site_pv" style="display:none">
  本站总访问量 <span id="leilang_value_site_pv"></span> 次
</span>

监听数据就绪事件

如果需要拿到原始数据做自定义渲染,可以监听 leilang:ready 事件:

window.addEventListener('leilang:ready', function (e) {
  console.log(e.detail);
  // { today_pv, today_uv, site_pv, site_uv, page_pv, page_uv }
});

徽章图标

服务端可动态生成 SVG 徽章,直接用 <img> 引用即可:

<img src="https://tongji.leilang.cn/api/badge?host=你的域名.com&type=site_pv&label=总访问量" />
参数必填默认值说明
host-要查询的站点域名
typesite_pv统计维度,取值同上表
label访问量徽章左侧文字
color#4c1徽章右侧背景色(十六进制)
path/查询页面级数据时指定路径
注意:徽章接口只读取数据,不会增加计数,因此不能用它来代替统计脚本。

API 接口

计数接口

GET /api/count —— JSONP 方式,客户端脚本内部使用。

GET https://tongji.leilang.cn/api/count?jsonpCallback=cb&url=https%3A%2F%2Fexample.com%2Fpost%2F1

// 响应
cb({"success":true,"site_pv":128,"site_uv":45,"page_pv":12,
    "page_uv":8,"today_pv":30,"today_uv":11});

POST /api/count —— JSON 方式,请求体传 {"url":"页面完整地址"}

查询接口

接口方法说明
/api/summaryGET全站汇总数据(今日、累计、接入站点数、运行时长)
/api/query?host=xxxGET查询指定站点的详细数据与热门页面
/api/rank?limit=100GET按总访问量排序的站点排行榜
/api/ratingGET获取服务评分统计
/api/ratingPOST提交评分,body: {"score":5,"comment":"很好用"}
/api/badgeGET生成徽章 SVG 图片

所有接口均已开启 CORS,允许跨域调用。

接入规则

为保证服务质量与数据准确性,以下情况禁止接入:

  • 使用 127.0.0.1localhost 等本地地址访问
  • 使用 IPv4 / IPv6 地址直接访问,未绑定域名
  • 域名长度超过 22 个字符
触发上述规则时,计数接口会返回 success: false 与具体原因, 页面上的统计数字将显示为 0。

常见问题

为什么数字一直显示「加载中...」?

请按以下顺序排查:

  1. 打开浏览器开发者工具的「网络」面板,确认 leilang.js 加载成功(状态码 200);
  2. 查看 /api/count 请求是否正常返回;
  3. 确认站点域名符合上方的「接入规则」;
  4. 检查是否被浏览器广告拦截插件屏蔽。

PV 和 UV 有什么区别?

PV(Page View)是访问量,页面每被打开一次就 +1,同一个人刷新 10 次算 10 次。 UV(Unique Visitor)是访客数,同一个访客在 24 小时内无论访问多少次都只算 1 次。

访客是如何识别的?

服务端使用 md5(IP + User-Agent + 域名) 生成访客指纹, 用于当日去重。整个过程不写入 Cookie,也不做跨站追踪。

换域名后数据会丢失吗?

会。统计数据以域名为唯一标识存储,更换域名后相当于一个全新站点,数据从零开始。 www.example.comexample.com 也会被视为两个不同的站点。

单页应用(SPA)路由切换能统计到吗?

脚本默认只在页面加载时统计一次。如果是 Vue / React 这类前端路由应用, 可以在路由切换后手动重新加载脚本,或直接调用计数接口。

数据多久落盘一次?

计数在内存中实时累加,每 10 秒批量写入磁盘一次,服务正常关闭时也会立即保存。