/

├── index.php (或 其他页面)

├── js/

│   └── protection.js

├── includes/

│   └── ip_protection.php

└── api/

    └── block_ip.php


 1、文件内容:

a. index.php 或 其他页面(主页面):

 </head> 标签前添加
<?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";
?>
3. 使用方法

  • 将这些文件放在相应的目录中。

  • 确保 data 目录存在并可写入(用于存储被封禁的 IP)。

  • 在您的主页面(如 index.php 或 ertongleyuan.php)中包含 ip_protection.php 和 protection.js

4. 测试和自我使用:
了避免影响您自己的使用,您可以
a. 在 includes/ip_protection.php 中添加白名单

$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';
    // ...
}
c. 设置较短的封禁时间进行测试,如 60 秒而不是 3600 秒

记住,这些措施主要是为了阻止普通用户,而不是专业的开发者。在实施这些限制时,请确保不会过度影响用户体验或合法使用。此外,建议在网站上明确说明这些限制,以避免用户困惑。