接入文档
五分钟完成接入,让你的网站拥有访问量统计
快速开始
接入只需两步,全程不需要注册账号,也不需要填写任何信息。
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 | 是 | - | 要查询的站点域名 |
type | 否 | site_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/summary | GET | 全站汇总数据(今日、累计、接入站点数、运行时长) |
/api/query?host=xxx | GET | 查询指定站点的详细数据与热门页面 |
/api/rank?limit=100 | GET | 按总访问量排序的站点排行榜 |
/api/rating | GET | 获取服务评分统计 |
/api/rating | POST | 提交评分,body: {"score":5,"comment":"很好用"} |
/api/badge | GET | 生成徽章 SVG 图片 |
所有接口均已开启 CORS,允许跨域调用。
接入规则
为保证服务质量与数据准确性,以下情况禁止接入:
- 使用
127.0.0.1、localhost等本地地址访问 - 使用 IPv4 / IPv6 地址直接访问,未绑定域名
- 域名长度超过 22 个字符
success: false 与具体原因,
页面上的统计数字将显示为 0。
常见问题
为什么数字一直显示「加载中...」?
请按以下顺序排查:
- 打开浏览器开发者工具的「网络」面板,确认
leilang.js加载成功(状态码 200); - 查看
/api/count请求是否正常返回; - 确认站点域名符合上方的「接入规则」;
- 检查是否被浏览器广告拦截插件屏蔽。
PV 和 UV 有什么区别?
PV(Page View)是访问量,页面每被打开一次就 +1,同一个人刷新 10 次算 10 次。 UV(Unique Visitor)是访客数,同一个访客在 24 小时内无论访问多少次都只算 1 次。
访客是如何识别的?
服务端使用 md5(IP + User-Agent + 域名) 生成访客指纹,
用于当日去重。整个过程不写入 Cookie,也不做跨站追踪。
换域名后数据会丢失吗?
会。统计数据以域名为唯一标识存储,更换域名后相当于一个全新站点,数据从零开始。
www.example.com 与 example.com 也会被视为两个不同的站点。
单页应用(SPA)路由切换能统计到吗?
脚本默认只在页面加载时统计一次。如果是 Vue / React 这类前端路由应用, 可以在路由切换后手动重新加载脚本,或直接调用计数接口。
数据多久落盘一次?
计数在内存中实时累加,每 10 秒批量写入磁盘一次,服务正常关闭时也会立即保存。