# site-counter **Repository Path**: qiushaocloud/site-counter ## Basic Information - **Project Name**: site-counter - **Description**: 这是一个极简网页计数器,功能和 busuanzi(不蒜子 - 极简网页计数器) 类似,比 busuanzi 功能更多,支持今日统计。 - **Primary Language**: JavaScript - **License**: ISC - **Default Branch**: master - **Homepage**: https://www.qiushaocloud.top - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2022-01-09 - **Last Updated**: 2025-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # site-counter ### 介绍 这是一个极简网页计数器,主要对站点的访问/访客进行统计,功能和 busuanzi (不蒜子 - 极简网页计数器) 类似,比 busuanzi 功能更多,支持今日统计。 ### 功能 1. 累计站点总访问量(站点 pv) 2. 累计站点总访客量(站点 uv) 3. 累计站点今日访问量(站点今日 pv) 4. 累计站点今日访客量(站点今日 uv) 5. 累计站点某页面总访问量(站点页面 pv) 6. 累计站点某页面总访客量(站点页面 uv) 7. 累计站点某页面今日访问量(站点页面今日 pv) 8. 累计站点某页面今日访客量(站点页面今日 uv) 9. IP 统计(站点 IP 访问统计和页面 IP 访问统计) 10. IP 访问记录(站点 IP 访问记录和页面 IP 访问记录) 11. 提供监听器和方法(可自定义开发,自行处理数据) ### 快速上手 #### 前端简易使用 1. 引入 qiushaocloud_site_counter.min.js, 比如: `` 2. 界面中您根据您的需求,引入相应的节点元素 ID ```html
总访问量: n
总访客量: n
今日访问量: n
今日访客量: n
本页面总访问量: n
本页面总访客量: n
本页面今日访问量: n
本页面今日访客量: n
``` #### 添加 Listener 和 Method * `window.qiushaocloudSiteCounterNotice` Listener,接收计数器通知消息,用于自定义开发,自行处理数据 ```javascript window.qiushaocloudSiteCounterNotice = function(type, data) { switch (type) { case 'api:post:site_counter': { // 累计统计数据 if (data.err) { console.error('api:post:site_counter error:', data.err, data.res); return; } /** * data.res 格式如下: { "yesterday": { // 昨日统计数据 "page_pv": 2, // 昨日页面访问量 "page_uv": 1, // 昨日页面访客量 "site_pv": 694, // 昨日站点访问量 "site_uv": 6 // 昨日站点访客量 }, "page_pv": 3, // 当前页面访问量 "page_uv": 2, // 当前页面访客量 "site_pv": 695, // 当前站点访问量 "site_uv": 7 // 当前站点访客量 } */ console.log('api:post:site_counter success, res:', data.res); break; } case 'api:get:site_counter_ips_stats': { // IP 统计数据 if (data.err) { console.error('api:get:site_counter_ips_stats error:', data.err, data.res); return; } /** * data.res 格式如下: { "site_host": "www.qiushaocloud.top", "site_ips": { "2024-05-29": { "totalPages": 2, "totalCount": 200, "logCount": 1000, "pageSize": 100, "pageNo": 1, "ipDatas": { "IPV4": [ 访问次数, IP地址信息, 最后访问时间 ], "180.101.244.13": [ 3, "中国江苏省南京市电信", 1717427570853 ] } } }, "page_ips": { "2024-05-29": { "totalPages": 1, "totalCount": 2, "logCount": 4, "pageSize": 100, "pageNo": 1, "ipDatas": { "117.129.2.95": [ 4, "中国北京市昌平区移动", 1717427570853 ] } } }, "site_page_pathname": "/common-static/qiushaocloud-site-counter-test-demo.html" } */ console.log('api:get:site_counter_ips_stats success, res:', data.res); break; } case 'api:get:site_counter_ips_stats:pagination': { // IP 统计分页数据 if (data.err) { console.error('api:get:site_counter_ips_stats:pagination error:', data.err, data.res, data.filterType, data.filterDay, data.pageNo); return; } /** * data.res 格式如下: { "site_host": "www.qiushaocloud.top", "site_ips": { "2024-05-29": { "totalPages": 2, "totalCount": 200, "logCount": 1000, "pageSize": 100, "pageNo": 2, "ipDatas": { "IPV4": [ 访问次数, IP地址信息, 最后访问时间 ], "180.101.244.13": [ 3, "中国江苏省南京市电信", 1717427570853 ] } } }, "page_ips": { "2024-05-29": { "totalPages": 1, "totalCount": 2, "logCount": 4, "pageSize": 100, "pageNo": 1, "ipDatas": { "117.129.2.95": [ 4, "中国北京市昌平区移动", 1717427570853 ] } } }, "site_page_pathname": "/common-static/qiushaocloud-site-counter-test-demo.html" } */ console.log('api:get:site_counter_ips_stats:pagination success, res:', data.res, ', filterType:'+ data.filterType+', filterDay:'+ data.filterDay+', pageNo:'+ data.pageNo); break; } case 'api:get:site_counter_logs:ip': { // IP 访问记录数据 if (data.err) { console.error('api:get:site_counter_logs:ip error:', data.err, data.res, data.filterType, data.filterDay, data.filterIp); return; } /** * data.res 格式如下: { "site_host": "www.qiushaocloud.top", "site_logs": { "totalPages": 1, "totalCount": 1, "pageSize": 100, "pageNo": 1, "logDatas": [ [ 访问时间戳, IPV4, IP地址信息, 浏览器信息, 访问页面 ], [ 1717439942576, "220.196.160.75", "中国上海市联通", "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1", "https://www.qiushaocloud.top/" ] ] }, "page_logs": { "totalPages": 1, "totalCount": 1, "pageSize": 100, "pageNo": 1, "logDatas": [ [ 1717427570853, "117.129.2.39", "中国北京市昌平区移动", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36", "https://www.qiushaocloud.top/common-static/site-counter/examples/complex.html?page=/common-static/qiushaocloud-site-counter-test-demo.html" ] ] }, "site_page_pathname": "/common-static/qiushaocloud-site-counter-test-demo.html" } */ console.log('api:get:site_counter_logs:ip success, res:', data.res, ', filterType:'+ data.filterType+', filterDay:'+ data.filterDay+', filterIp:'+ data.filterIp); break; } } } ``` * `window.requestQiushaocloudSiteCounterIpsStatsApiByPagination` Method,请求某一页的IP统计数据,用于自定义开发,自行处理数据 ```javascript /** * 请求某一页的IP统计API * @param filterType {site|site-page} 日志类型,'site' |'site-page' * @param filterDay {string} 哪一天日志,格式:'2024-05-06' * @param pageNo {number} [可选]第几页,默认1【注:第1页的数据自动请求了,可以通过监听 api:get:site_counter_ips_stats 拿到数据,因此一般从第2页开始请求】 * @param onCallback {function} [可选]请求成功回调函数,参数:(err, res),res 数据格式参考 api:get:site_counter_ips_stats:pagination 的 data.res */ window.requestQiushaocloudSiteCounterIpsStatsApiByPagination = function(filterType, filterDay, pageNo, onCallback); ``` * `window.requestQiushaocloudSiteCounterLogsApiByFilter` Method,请求日志数据,用于自定义开发,自行处理数据 ```javascript /** * 请求日志API * @param filterType {site|site-page} 日志类型,'site' |'site-page' * @param filterDay {string} 哪一天日志,格式:'2024-05-06' * @param filterIp {string} [可选]过滤的客户端IP * @param pageNo {number} [可选]第几页,默认1 * @param onCallback {function} [可选]请求成功回调函数,参数:(err, res),res 数据格式参考 api:get:site_counter_logs:ip 的 data.res */ window.requestQiushaocloudSiteCounterLogsApiByFilter(filterType, filterDay, filterIp, onCallback); ``` #### IP 统计数据 1. 界面中您根据您的需求,引入相应的IP统计节点元素 ID 及配置参数 > 参考 [示例 complex.html 演示](https://www.qiushaocloud.top/common-static/site-counter/examples/complex.html):[代码](https://github.com/qiushaocloud/site-counter/blob/master/examples/complex.html) ```html ``` 2. render-mode 为 ui 时渲染的元素节点结构 > ⚠️注意: 只是渲染了元素结构,并没有提供默认样式,您根据自己的需求根据提供的结构进行样式设计 > 参考 [示例 only-elements.html 演示](https://www.qiushaocloud.top/common-static/site-counter/examples/only-elements.html):[代码](https://github.com/qiushaocloud/site-counter/blob/master/examples/only-elements.html) ```html| 序号 | 时间 | IP | IP信息 | UserAgent | Href |
|---|---|---|---|---|---|
| 1 | 2024-06-10 12:20:05.920 | 6.2.1.3 | 美国亚利桑那州 | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 | file:///Users/qiushaocloud/Desktop/Codes/qiushao-git-codes/site-counter/examples/complex.html |
| 已加载1条,共1条 | |||||