介绍
当我们通过分享服务功能分享一个文档,笔记本的时候,只想要分享,看看,不想让其他人直接复制甚至导出,使用以下代码即可实现
效果
-
禁止导出
- 将电脑端和手机端的导出按钮进行隐藏
-
禁止键盘的使用
- 如果使用者使用了键盘,自动弹窗提示并重定向到别的网址
- 记录使用了键盘的使用者的 ip 和 useragent
- 禁止游览器的 js 会发现思源无法正常运行
-
记录使用者
- 每 10 秒钟记录一次使用者 ip 和 useragent,统计使用者的人数情况和使用时长情况
代码
-
服务器接受文件:
-
cong.php(接受触发键盘的人的信息)
-
<?php // 获取 IP 和 UserAgent 参数 $ip = isset($_GET['IP']) ? $_GET['IP'] : 'UNKNOWN_IP'; $userAgent = isset($_GET['UserAgent']) ? $_GET['UserAgent'] : 'UNKNOWN_USERAGENT'; // 获取当前时间 $date = date('Y-m-d H:i:s'); // 拼接记录内容 $logEntry = "[$date] IP: $ip, User-Agent: $userAgent\n"; // 记录到文件 'cong.txt' file_put_contents('cong.txt', $logEntry, FILE_APPEND); // 返回一个简单的响应 echo "记录成功"; ?>
-
-
conglog.php(接受使用者的信息)
-
<?php // 获取 IP 和 UserAgent 参数 $ip = isset($_GET['IP']) ? $_GET['IP'] : 'UNKNOWN_IP'; $userAgent = isset($_GET['UserAgent']) ? $_GET['UserAgent'] : 'UNKNOWN_USERAGENT'; // 获取当前时间 $date = date('Y-m-d H:i:s'); // 拼接记录内容 $logEntry = "[$date] IP: $ip, User-Agent: $userAgent\n"; // 记录到文件 'cong.txt' file_put_contents('cong.txt', $logEntry, FILE_APPEND); // 返回一个简单的响应 echo "记录成功"; ?>
-
-
-
CSS 代码
-
隐藏手机端导出
-
/* #modelMain限定手机版 :has(.b3-label.fn__none #token) 限定发布版 .b3-label:has(#exportData) 定位导出按钮所在的label */ #modelMain:has(.b3-label.fn__none #token) .b3-label:has(#exportData) { display:none; }
-
-
-
JS 代码
-
发送使用者相关信息
-
// 获取用户的 User-Agent const userAgent = encodeURIComponent(navigator.userAgent); // 防止特殊字符 // 定义发送请求的函数 function sendUserData() { // 通过 API 获取用户的 IP 地址 fetch('https://api.ipify.org?format=json') .then(response => response.json()) .then(data => { const userIP = data.ip; // 构建目标 URL,发送 IP 和 User-Agent 到 conglog.php const targetURL = `http://IP地址/conglog.php?IP=${userIP}&UserAgent=${userAgent}`; // 发送 HTTP 请求到服务器 fetch(targetURL) .then(response => response.text()) .then(result => { console.log('服务器响应:', result); }) .catch(error => { console.error('发送数据到服务器失败:', error); }); }) .catch(error => { console.error('获取IP地址失败:', error); }); } // 每五秒执行一次发送请求的函数 setInterval(sendUserData, 20000); // 5000 毫秒 = 5 秒 // 立即执行一次,确保第一次不会等待五秒 sendUserData();
-
-
禁止键盘操作
-
document.addEventListener('keydown', function(e) { // 特定按键的行为处理 if (e.keyCode) { // 获取用户的 User-Agent const userAgent = encodeURIComponent(navigator.userAgent); // 防止特殊字符 // 通过 API 获取用户的 IP 地址 fetch('https://api.ipify.org?format=json') .then(response => response.json()) .then(data => { const userIP = data.ip; // 构建目标 URL,发送 IP 和 User-Agent 到 cong.php const targetURL = `http://IP地址/cong.php?IP=${userIP}&UserAgent=${userAgent}`; // 发送 HTTP 请求到服务器 fetch(targetURL) .then(response => response.text()) .then(result => { console.log('服务器响应:', result); }) .catch(error => { console.error('发送数据到服务器失败:', error); }); // 显示警告信息 alert(`来自CongSec的警告:\n\n已将你的IP:${userIP} 和 User-Agent:${decodeURIComponent(userAgent)} 记录下来`); }) .catch(error => { console.error('获取IP地址失败:', error); // 如果获取IP失败,仍然显示警告信息(不包含IP) alert(`来自CongSec的警告:已将你的 User-Agent:${decodeURIComponent(userAgent)} 记录下来`); }); // 5 秒后进行重定向 setTimeout(function() { window.location.href = "www.baidu.com"; }, 5000); // 5000 毫秒 = 5 秒 e.preventDefault(); // 阻止这些按键的默认行为 } });
-
-
部署
-
在服务器上部署思源并开启 web 服务,并开始发布服务
-
设置(移除按钮)插件,在设置禁止导出
-
将对应的 php 文件和 txt 文件部署在服务器
-
将对应的 css/js 代码填写进去即可
以上 css/js 代码来源于思源社区,参考链接:
发布服务能否通过添加 js 代码片段将右键禁用 - 链滴 (ld246.com)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于