IoT 工具箱网站源码 面向物联网工程师的在线工具箱

demo演示:https://iotnr.com
IoT 工具箱
面向物联网开发、调试与运维的在线工具站。计算类工具全部在浏览器本地执行;网络调试类工具(MQTT / WebSocket)
会连接你填写的服务地址,报文不经过本站服务器。
目录结构
index.html 首页(搜索 / 分类 / 收藏)
tool.html 工具详情页(?id=工具ID)
privacy.html 隐私声明(页脚「隐私声明」入口,说明访问统计与本地存储)
assets/css/style.css 主题样式(主色 #5470c6)
assets/js/site-config.js 站点信息默认值(名称、备案、在线调试)
assets/js/core.js 工具注册框架(字段、结果块、搜索)
assets/js/common.js 通用算法(IP / CRC / MD5 / Base64 等)
assets/js/tools/*.js 各分类工具定义
assets/js/tool-page.js 工具页渲染、页脚、主题、toast
assets/js/home.js 首页渲染
assets/js/stats.js 访问统计前端(可选,依赖 api/stats.php)
assets/vendor/ Bootstrap 5.3、bootstrap-icons、MQTT.js(均已内置,无需外网)
admin/ (可选)PHP 后台:站点信息与在线调试配置
api/stats.php (可选)访问计数器:总访问量 / 当天访问量
data/site-config.json (可选)后台写入的配置,前台优先读取
data/stats.json (可选)访问统计计数文件
data/private/visits.log (可选)访问明细:时间 / IP / UA,目录已禁止外部访问
scripts/validate.mjs 工具定义与算法自检:node scripts/validate.mjs
部署
纯静态:整个目录上传到任意 Web 服务器 / OSS / CDN 即可,无需后端。站点信息改assets/js/site-config.js。
带后台(PHP 7.4+):把 admin/ 与 data/ 一起上传,浏览器访问 /admin/:
- 首次访问设置管理口令(哈希写入
admin/secret.php,该文件直接访问不会输出内容); - 可在线修改站点名称、标语、描述、版本、版权、联系方式、备案号;
- 可开关在线调试、设置默认 Broker 与预设列表;
- 保存后写入
data/site-config.json,前台刷新即生效。
注意事项:
data/目录需要可写;admin/secret.php与data/不要提交到公开仓库。- 若服务器把页面编码定成 GBK(Apache/面板的
AddDefaultCharset GB2312),后台会自动把提交内容
按 GB18030 还原成 UTF-8 并在界面上提示,建议仍把站点编码改回 UTF-8。 - 后台「运行状态」面板带环境自检(PHP 版本、json/mbstring/iconv、GBK 还原、目录权限、配置编码)。
在线调试(MQTT / WebSocket)
- 浏览器无法直接建立 TCP 连接,MQTT 必须使用 Broker 的 WebSocket 端口,形如
wss://host:8084/mqtt;HTTPS 页面不能连接ws://明文地址。 - 公共 Broker(EMQX、HiveMQ、Mosquitto 测试服)上的消息任何人可见,不要发送敏感数据。
- MQTT.js 已本地内置在
assets/vendor/mqtt/,只在这两个调试页面按需加载。 - 后台可关闭在线调试开关,关闭后调试页只显示提示、不建立连接。
访问统计
首页 Hero 会显示「总访问 / 今日访问」,数据来自 api/stats.php:
- 每次页面浏览(首页与工具页)向
api/stats.php?action=hit记一次; - 同一 IP 当天只记录一次(名单文件
data/private/seen-YYYY-MM-DD.txt,保留 31 天),
当天重复浏览只返回当前统计、不再累加也不再写明细; - 计数写入
data/stats.json(flock加锁,按天保留最近 90 天); - 访问明细写入
data/private/visits.log,每条含时间、IP、UA、是否爬虫,最多保留最近 5000 条; - 常见爬虫 / 监控 UA 会记入明细但不计入访问量;
- IP 取
X-Forwarded-For/X-Real-IP/CF-Connecting-IP/Remote-Addr中第一个有效地址,
兼容反向代理;UA 会去掉控制字符并截断到 300 字符; - 后台「访问统计 / 访问明细」卡片可查看最近 60 条明细、重置计数、清空明细;
- 纯静态托管(没有 PHP)时首页这两个卡片自动隐藏,不影响其它功能。
合规提醒:IP 与 UA 属于个人信息,请在使用说明或隐私政策中如实告知访客用途与保留期限,
并定期在后台清空明细。data/private/已附带.htaccess禁止外部访问;
Nginx 用户请自行添加location ^~ /data/private/ { deny all; },后台会在该文件缺失时给出红色告警。
自检
node scripts/validate.mjs # 工具定义 + 算法测试向量
php -l admin/index.php # 后台语法检查
更新已部署站点
页面里的本地 css/js 引用都带版本号(如 assets/js/tool-page.js?v=1.0.1),
这样改完文件后浏览器一定会重新拉取。发布新版本时请把 index.html、tool.html、admin/index.php 里的 ?v= 统一改成新版本号(改样式或脚本必须先改,否则访客可能仍看到旧文件)。
版权声明
本站部分内容源自互联网,仅供学习交流,如有侵权请联系我们删除。