这份代码的核心思路是:隐形零宽字符(专治爬虫) + 版权声明(法律威慑),同时提供一个开关让你选择是否开启“可见乱码”(防人工搬运)。

代码效果说明

防护层作用对象效果
防护层作用对象效果
隐形零宽字符\u200B初级爬虫(正则匹配、关键词提取)爬虫抓取的文本中间有看不见的字符,关键词搜索直接失效,入库后数据变脏,无法直接使用。
头尾隐形符\u200C / \u200D爬虫首尾匹配破坏爬虫提取标题/摘要时的前后锚点。
版权声明所有搬运者(含AI)即使对方用AI清洗掉乱码,版权文字依然存在。若盗用,你有明确的法律追责证据。
可见乱码(可选)手动CTRL+C/V的普通人复制出来带“防盗转载”字样,增加手动删除的心理成本。(默认关闭,避免影响真实用户体验)

如何放置到你的网站

  • 纯HTML页面:把 <script> 标签里的全部代码,放到 </body> 之前。
  • WordPress/织梦等后台:放到主题的 footer.php 文件里(</body> 前)。
  • Vue/React项目:放到 mounteduseEffect 生命周期里。
  • Typecho等项目:放到 主题相关设置里面。

再次提醒(诚实告知)
防不住高级工程师:他们能写脚本去掉零宽字符(替换 \u200B 为空)。

防不住AI:DeepSeek/GPT 一次提示词就能还原原文。

它真正能防住的:99%的批量搬运脚本和懒得折腾的采集站长。只要你的同行没做防护,爬虫就会优先绕过你,去偷他们。

如果你想把 ENABLE_VISIBLE_JAMMER 调成 true 看看效果,或者想修改版权文字、调整干扰字符密度,直接改配置区就行。

<!-- ========= 防爬虫 + 干扰码 + 版权代码 ========= -->
    <script>
        document.addEventListener('copy', function (e) {
            const selection = window.getSelection();
            const rawText = selection.toString().trim();
            if (rawText.length === 0) return;
            e.preventDefault();

            // ==================== 配置区 ====================
            const SITE_NAME = '子夜歌';       // 修改为你的名称
            const ENABLE_VISIBLE_JAMMER = true;        // true=可见乱码, false=仅隐形(推荐false)
            // ==============================================

            // 1. 生成【可见干扰码】(防人工手动搬运,影响阅读体验,建议谨慎开启)
            let displayText = rawText;
            if (ENABLE_VISIBLE_JAMMER) {
                const jammers = [
    // ===== 高频虚词 / 助词(自然融入) =====
    '的', '地', '得', '了', '过', '着', '也', '和', '与', '或',
    '但', '而', '等', '之', '其', '所', '以', '于', '中', '上',
    '下', '不', '是', '有', '在', '这', '那', '个', '种', '些',
    '来', '去', '就', '都', '说', '要', '会', '可', '以', '后',
    '前', '内', '外', '时', '间', '对', '向', '从', '为', '因',

    // ===== 原版权警示字(保留威慑) =====
    '防', '盗', '转', '载', '严', '究', '禁', '止', '抄', '袭',
    '版', '权', '保', '护'
];
                let tmp = '';
                const chars = rawText.split('');
                chars.forEach((char, index) => {
                    tmp += char;
                    // 每隔3个字符插一个干扰字
                    if (index % 3 === 0 && index < chars.length - 1) {
                        tmp += jammers[Math.floor(Math.random() * jammers.length)];
                    }
                });
                displayText = '【防盗】' + tmp + '【禁转】';
            }

            // 2. 【核心防爬】插入隐形零宽字符(专治爬虫正则匹配和数据库存储)
            // \u200B = 零宽空格, \u200C = 零宽不连字, \u200D = 零宽连字
            let finalText = displayText.split('').join('\u200B');   // 每个字符间插入隐形空格
            finalText = '\u200C' + finalText + '\u200D';           // 头尾再加隐形符

            // 3. 追加【版权声明】(保留证据,法律威慑)
            const copyright = `\n\n━━━━━━━━━━━━━━━━━━━━\n📌 本文首发于 ${SITE_NAME}ziyege.com\n🔗 原文链接:${window.location.href}\n⚠️ 未经授权禁止转载,违者必究\n━━━━━━━━━━━━━━━━━━━━`;

            // 4. 写入剪贴板
            e.clipboardData.setData('text/plain', finalText + copyright);

            // 可选:给用户一个轻提示(非必须)
            // alert('已复制,转载需保留版权信息');
        });
    </script>