/
├── index.php (或 其他页面)
├── js/
│ └── protection.js
├── includes/
│ └── ip_protection.php
└── api/
└── block_ip.php
a. index.php 或 其他页面(主页面):
<?php include 'includes/ip_protection.php'; ?>
<script src="/js/protection.js"></script>
b. `js/protection.js`:
// 禁用右键菜单
document.addEventListener('contextmenu', function(e) {
e.preventDefault();
});
// 禁用 F12 键
document.onkeydown = function(e) {
if(e.keyCode == 123) {
return false;
}
};
// 检测保存操作
document.addEventListener('keydown', function(e) {
if ((e.ctrlKey || e.metaKey) && e.keyCode == 83) {
e.preventDefault();
reportBlockingAttempt();
}
});
// 检测打印操作
window.addEventListener('beforeprint', function(e) {
e.preventDefault();
reportBlockingAttempt();
});
function reportBlockingAttempt() {
fetch('/api/block_ip.php', {method: 'POST'})
.then(response => response.text())
.then(data => {
alert('此操作被禁止,您的 IP 可能会被临时限制访问。');
window.location.href = 'about:blank';
});
}
// 禁用开发者工具(控制台检测)
(function() {
let devtools = function() {};
devtools.toString = function() {
if (this.opened) return;
this.opened = true;
reportBlockingAttempt();
}
console.log('%c', devtools);
})();c. includes/ip_protection.php:
<?php
function blockIP($ip, $duration) {
$blocked_ips_file = __DIR__ . '/../data/blocked_ips.json';
$blocked_ips = json_decode(file_get_contents($blocked_ips_file), true) ?: [];
$blocked_ips[$ip] = time() + $duration;
file_put_contents($blocked_ips_file, json_encode($blocked_ips));
}
function isIPBlocked($ip) {
$blocked_ips_file = __DIR__ . '/../data/blocked_ips.json';
$blocked_ips = json_decode(file_get_contents($blocked_ips_file), true) ?: [];
if (isset($blocked_ips[$ip]) && $blocked_ips[$ip] > time()) {
return true;
}
return false;
}
$user_ip = $_SERVER['REMOTE_ADDR'];
if (isIPBlocked($user_ip)) {
header('HTTP/1.0 403 Forbidden');
exit('Access Denied: Your IP has been temporarily blocked.');
}
// 检测可能的下载行为
if (isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'WebKit') !== false) {
// 这里可以选择是否立即阻止,或者只是记录可疑行为
// blockIP($user_ip, 3600); // 封禁 1 小时
// exit('Access Denied: Downloading or saving this page is not allowed.');
}
?>d. api/block_ip.php:
<?php require_once '../includes/ip_protection.php'; $user_ip = $_SERVER['REMOTE_ADDR']; blockIP($user_ip, 3600); // 封禁 1 小时 echo "IP blocked"; ?>
将这些文件放在相应的目录中。
确保 data 目录存在并可写入(用于存储被封禁的 IP)。
在您的主页面(如 index.php 或 ertongleyuan.php)中包含 ip_protection.php 和 protection.js。
$whitelist = ['你的IP地址', '其他可信IP'];
if (in_array($user_ip, $whitelist)) {
return; // 跳过所有限制
}
b. 在测试阶段,可以注释掉实际的封禁操作,只保留警告:
function blockIP($ip, $duration) {
// 仅记录,不实际封禁
error_log("Attempt to block IP: $ip for $duration seconds");
// 实际封禁代码注释掉
// $blocked_ips_file = __DIR__ . '/../data/blocked_ips.json';
// ...
}


