资源站福音!不依赖子比主题(兼容子比前台投稿)的网盘链接加密插件~-zibll综合交流社区-zibll子比主题-zibll子比社区

资源站福音!不依赖子比主题(兼容子比前台投稿)的网盘链接加密插件~

网盘地址加密保护(Netdisk Protect)

一款轻量级 WordPress 插件:发布文章时自动”加密”文内网盘链接,PC 端访问显示扫码页面,移动端扫码后自动跳转到真实网盘地址。核心目的是防止爬虫批量抓取网盘链接、降低被恶意举报的风险

依旧是我()依旧是AI 依旧是求赞呜呜呜

演示图片

20260719194047717-887c1142f788e598e5cd370282e6a921

20260719194053822-ce20a6b664be4ea2e64f807541630c88

文件下载

插件名称:网盘地址加密保护

  • 版本:1.0.1

  • 作者:阿晨

  • 运行要求:WordPress 5.0+ / PHP 7.4+


一、这个插件解决什么问题

资源站常把夸克、百度、阿里等网盘链接直接放在文章里。这会带来两个麻烦:

  1. 爬虫批量抓取:明文网盘链接极易被采集脚本一次性扒走。

  2. 被倒狗恶意举报:链接暴露后容易被批量举报,导致网盘分享失效。

本插件的思路是:不让链接以明文出现在页面上。文章发布时,插件自动把网盘链接替换成一条”加密跳转链接”(形如 https://你的域名/netdisk/xxxxxx/)。

  • 真人用户:在电脑上点开链接 → 看到一个引导扫码的页面 → 用手机(夸克 App / 相机)扫码 → 手机端自动跳转到真实网盘地址。

  • 爬虫:抓到的只是一串编码后的跳转链接,拿不到明文网盘地址,也难以批量还原。

⚠️ 重要说明:这里的”加密”本质是 URL-safe Base64 编码(轻量混淆),不是高强度加密。它的定位是”抬高批量抓取/举报的门槛”,而非”绝对不可破解”。这一点在设计上是有意为之——初衷仅为防爬虫批量举报,无需引入密钥体系。


二、核心特性

特性

说明

发布即自动加密

无需手动操作,文章发布/更新时自动识别并替换文内网盘链接

多网盘支持

覆盖夸克、百度、阿里云盘、迅雷、天翼、蓝奏、UC、123、115 等主流网盘

设备智能分流

服务端识别 UA:PC 端出扫码页,移动端直接 302 跳转网盘

前端生成二维码

二维码在浏览器端用 QRCode.js 动态生成,服务器零负担

固定扫码画面

内置一套精美的固定扫码引导页,无需任何样式配置

Zibll 投稿兼容

兼容子比(zibll)主题前台投稿,投稿内容同样自动加密

自定义加密域名

可指定加密链接使用的域名(如独立的跳转专用域名),留空则用本站域名

零外部依赖

无 Composer、无 npm、无框架,唯一第三方是内置的 qrcode.min.js


三、工作原理

1. 加密(文章发布时)

文章发布/更新/投稿


识别文内网盘链接(<a href> 或裸链接)


URL-safe Base64 编码原始网盘地址


替换为跳转链接:https://域名/netdisk/{编码串}/


直接写回文章内容(数据库)

2. 访问(用户点开加密链接时)

用户访问 /netdisk/{编码串}/


重写规则命中 → 取出 netdisk_data 查询变量

├── 移动设备?──是──▶ 服务端解码 → 302 跳转到真实网盘地址

└── PC 设备?──▶ 渲染固定扫码页(页内二维码=当前这条加密链接)


用户手机扫码 → 手机走”移动设备”分支 → 跳转网盘

关键点:PC 扫码页里的二维码,内容就是”当前这条加密链接本身”。手机扫码后打开的还是同一条链接,只是这次是移动设备,于是走 302 跳转,最终到达网盘。整个过程无需服务器存储任何映射关系。


四、支持的网盘

网盘

域名

夸克网盘

pan.quark.cn

百度网盘

pan.baidu.com

阿里云盘

www.aliyundrive.com / www.alipan.com

迅雷网盘

pan.xunlei.com

天翼云盘

cloud.189.cn

蓝奏云

www.lanzou.com / lanzoui / lanzoux / lanzouw

UC 网盘

pan.uc.cn

123 云盘

www.123pan.com / 123865 / 123684

115 网盘

www.115.com

快网盘

pan.kuaicdn.vip

支持列表可通过 netdisk_protect_supported_netdisks 过滤器扩展。


五、目录结构

netdisk-protect/
├── netdisk-protect.php # 插件入口:常量、依赖加载、激活/停用/卸载、重写刷新
├── includes/
│ ├── class-admin.php # 后台设置页(仅「自动加密设置」)
│ ├── class-frontend.php # 前台:重写规则、设备识别、固定扫码页、移动端跳转
│ ├── class-encrypt.php # URL-safe Base64 编解码工具(静态方法)
│ └── class-auto-encrypt.php # 自动加密核心:识别网盘链接并替换
├── assets/
│ ├── css/admin.css # 后台设置页样式
│ └── js/qrcode.min.js # 浏览器端二维码生成库(第三方)
└── README.txt # 插件说明

模块职责一览

  • 入口 netdisk-protect.php:单例架构,负责加载 4 个类、注册激活/停用/卸载钩子、写入默认选项、刷新重写规则。

  • class-frontend:注册 ^netdisk/([a-zA-Z0-9_-]+)/?$ 重写规则与 netdisk_data 查询变量;根据 UA 分流;PC 端输出固定扫码页。

  • class-auto-encrypt:挂载 save_post / publish_post 及 Zibll 投稿钩子,用正则识别网盘链接(含 <a> 标签与部分裸链接),编码后替换。

  • class-encrypt:提供 encrypt_url / decrypt_url / is_valid_url 三个静态方法,全站共用。

  • class-admin:后台仅保留「启用自动加密」开关 + 「自动加密服务器」域名两项设置。


六、加密页面(PC 端扫码引导页)

这是用户在电脑上点开加密链接时看到的那个页面——本插件的”门面”。

1. 它在哪里(代码位置)

位置

页面渲染方法

includes/class-frontend.phpprivate function render_mobile_page()

触发入口

同文件 handle_mobile_redirect():PC 端访问 /netdisk/{编码串}/ 时调用它,移动端则直接 302 跳转不渲染此页

二维码库

assets/js/qrcode.min.js(页面内引入)

注意:整个页面(HTML + CSS + JS)全部内联写在 render_mobile_page() 方法里,没有独立的模板文件或 CSS 文件。前台不再有 style.css / mobile.js(重构时已删除)。

2. 它是怎么编写的

重构后,此页为固定画面——不读取任何后台选项,所有内容硬编码在方法内:

  • 文案(硬编码)

    • 标题:网盘地址已加密

    • 主标语:推荐 Quark 扫一扫 / 用手机扫描二维码,立即下载游戏

    • 扫码提示:请使用夸克App扫码获取

  • 视觉布局:左右两栏 —— 左侧是标题文案 + 二维码卡片 + 相机引导动效 + 三个特性标签(极速/安全/多端);右侧是一张手机大图。

    • 手机图地址(硬编码):https://oss.hoarfall.com/sucai/Apple.png

  • 样式:全部写在页面内 <style> 块,浅色渐变背景(radial-gradient),无外链 CSS。

  • 二维码生成:页面底部内联 <script> 引入 qrcode.min.js 后,用 new QRCode(...)#qrcode 容器渲染一张 160×160、纠错等级 H 的二维码,其内容就是当前这条加密链接本身get_current_url() 取得)。

  • 失败降级:若二维码库未加载或生成异常,容器会显示 二维码生成失败,请刷新重试

3. 想改这个页面怎么办

直接编辑 class-frontend.phprender_mobile_page() 方法即可:

  • 改文案 → 修改方法开头的 $title / $save_prompt 等变量,或 HTML 里对应的标语文字;

  • 换手机图 → 改 $phone_image 常量;

  • 调样式 → 改方法内 <style> 块;

  • 调二维码尺寸/颜色 → 改底部 <script> 里的 qrWidth / qrHeight / qrColorDark / qrColorLight

因为是纯 PHP 内联渲染,改完无需清缓存、无需编译,保存文件即生效。


七、安装

方式一:手动上传

  1. netdisk-protect 文件夹放入 wp-content/plugins/

  2. 进入 WordPress 后台「插件」页面,激活「网盘地址加密保护」。

方式二:后台上传

  1. 将插件打包为 .zip

  2. 后台「插件 → 安装插件 → 上传插件」,选择 zip 安装并激活。

Nginx 用户注意:需确保伪静态规则包含 try_files $uri $uri/ /index.php?$args;,否则 /netdisk/... 路径会 404。激活后若跳转异常,可到「设置 → 固定链接」点一次「保存更改」刷新重写规则。


八、伪静态与固定链接配置(重要)

本插件所有加密链接(https://域名/netdisk/{编码}/)都依赖 WordPress 的 URL 重写才能工作。服务器若不做伪静态,访问 /netdisk/xxxx/ 会被当成真实目录去找 → 直接 404,整个加密跳转链路失效。因此这一步不能省

Apache(一般免配置)

只要开启了 mod_rewrite,且网站根目录有标准 WordPress .htaccess(含 RewriteRule . /index.php [L]),插件的重写规则会自动生效,无需额外操作。

Nginx(必须手动加,最常见的坑)

Nginx 不读 .htaccess,必须在站点 server 块里手动加入:

nginx
# 网盘地址加密插件重写规则
location ~ ^/netdisk/([a-zA-Z0-9_-]+)/?$ {
    try_files $uri /index.php?netdisk_data=$1&$args;
}

# WordPress伪静态规则
location / {
    try_files $uri $uri/ /index.php?$args;
}

保存后执行 nginx -t && nginx -s reload 生效。

若使用宝塔/aaPanel 等面板:进入站点设置 → 「伪静态」→ 选择 WordPress 模板即可(其内容等价于上面的 try_files)。

排错:/netdisk/ 仍然 404 怎么办

  1. 确认固定链接不是「朴素」结构;
  2. 到 设置 → 固定链接,什么都不改,直接点一次「保存更改」——强制 WordPress 重写规则表刷新;
  3. Nginx 用户确认 try_files 那行已加且已 reload;
  4. 换服务器/迁移站点后,务必重新执行第 2 步。

插件在激活时会自动 flush_rewrite_rules(),但线上偶尔因缓存未刷新到,手动”保存固定链接”是最可靠的兜底。

九、配置与使用

激活后进入 后台「网盘加密」→「自动加密设置」,只有两项:

  1. 启用自动加密:勾选后,发布文章即自动加密文内网盘链接(默认开启)。

  2. 自动加密服务器:加密跳转链接使用的域名。

    • 留空 → 使用当前站点域名;

    • 填写独立域名(如 https://secret.example.com)→ 加密链接走该域名。

日常使用:正常写文章、正常粘贴网盘链接、正常发布即可。插件会在保存瞬间自动完成替换,你和读者都无需额外操作。

兼容性

  • ✅ WordPress 后台发布文章

  • ✅ Zibll 子比主题前台投稿

  • ⚠️ 其他主题的前台发布(未测试其他主题)

进阶:用「自动加密服务器」做跨服务器加速

这是「自动加密服务器」这项设置最实用的玩法,专门解决主站在海外、跳转慢的问题。

功能本质:这个设置决定了加密链接的域名前缀

  • 留空 → 加密链接用当前站点域名:https://本站/netdisk/{编码}/

  • 填域名 → 加密链接用指定域名:https://指定服务器/netdisk/{编码}/

为什么能跨服务器:本插件的编解码是无密钥的 URL-safe Base64,不依赖任何站点私有密钥。这意味着——只要另一台服务器也装了本插件,它就能解开同一串编码并完成跳转。加密链接因此可以”指向别的服务器”。

典型场景(海外主站 + 国内加速)

你的 WordPress 主站部署在海外,用户点开 /netdisk/ 跳转链接时要绕道海外服务器解析,速度慢。 解决办法:在国内再放一台服务器(同样安装本插件),让海外主站生成的加密链接直接指向国内服务器。用户访问时由国内服务器就近解析并跳转,速度显著提升。

海外主站发布文章
   │  后台「自动加密服务器」填:https://国内服务器域名
   ▼
文内网盘链接被替换为:https://国内服务器域名/netdisk/{编码}/
   │
   ▼
用户点开链接 ──▶ 直接访问【国内服务器】(就近、快)
                     │
                     ├─ PC 端:国内服务器渲染扫码页
                     └─ 移动端:国内服务器解码 → 302 跳转真实网盘

部署步骤

  1. 国内服务器:安装并激活本插件(关键是注册 /netdisk/ 重写规则,使其具备”解析加密链接”的能力);若为 Nginx,确认伪静态含 try_files $uri $uri/ /index.php?$args;

  2. 海外主站:后台「网盘加密 → 自动加密设置 → 自动加密服务器」填入国内服务器域名(如 https://cdn.example.com)。

  3. 之后海外主站正常发布文章,生成的加密链接会自动指向国内服务器,由国内服务器承担全部解析与跳转。

说明与注意

  • 国内那台服务器主要用到插件的前台解析能力(重写规则 + 设备识别 + 跳转),它自身的”启用自动加密”开关开不开都行——它负责”解”,不一定要”加密”。

  • 两端务必是同一套插件(编码算法一致),否则国内服务器无法正确解码。本插件天然一致,无需额外配置密钥。

  • 国内服务器域名建议用能正常访问、且解析这台机器的独立域名(可只放一个空白 WordPress + 本插件,作为纯跳转节点)。


十、技术实现要点

  • 单例模式:主类及各功能类均采用 get_instance() 单例,避免重复挂钩。

  • 服务端设备识别:通过 HTTP_USER_AGENT 匹配移动端关键词(Mobile / Android / iPhone / iPad 等)。

  • 重写规则add_rewrite_rule('^netdisk/([a-zA-Z0-9_-]+)/?$', 'index.php?netdisk_data=$matches[1]', 'top')

  • 防重入保护:自动加密过程用 $is_processing 标志位防止钩子递归触发。

  • PCRE 保护:处理长文时临时抬高 pcre.backtrack_limit / pcre.recursion_limit,兼容禁用 ini_set 的主机。

  • 安全转义:URL 输出经 esc_url / esc_html,UA 与 HOST 经 wp_unslash + 白名单过滤,防止 XSS 与注入。

  • 卸载清理:卸载时删除 netdisk_protect_options 及历史遗留的 _history / _last_button_text 选项。


十一、常见问题(FAQ)

Q:为什么 PC 端不能直接打开网盘链接? A:这是有意设计。强制”手机扫码”能有效拦截 PC 端的批量采集脚本,降低链接被扒和被举报的概率。

Q:加密后的链接安全吗? A:采用 URL-safe Base64 编码,属于轻量混淆而非高强度加密。它能挡住绝大多数批量爬虫,但技术上可被逆向。定位是”提高门槛”,请勿用于存放敏感私密内容。

Q:支持哪些网盘? A:见上文「支持的网盘」列表,涵盖主流网盘;可用过滤器自行扩展。

Q:如何备份插件设置? A:设置存于 WordPress 数据库 wp_options 表(键 netdisk_protect_options),用任意 WP 备份插件即可备份。

Q:换了主题还能用吗? A:可以。插件不依赖特定主题;对 Zibll 做了额外的投稿钩子兼容,其他主题走标准 save_post 流程。


十二、已知限制

  • 裸链接覆盖有限:不带 <a> 标签的”纯文本网盘链接”目前仅自动识别夸克 / 百度 / 阿里(aliyundrive+alipan) / 迅雷 / 123 共 6 类;其余网盘的裸链接需以超链接形式插入才能被自动加密。(<a href> 形式则支持全部网盘。)

  • 非高强度加密:如前所述,Base64 编码可逆,不适合承载真正机密的内容。


十三、开发者信息


十四、许可证

本插件基于 GPL v2 或更高版本 发布。

免责声明:本插件仅供学习与个人使用,请勿用于非法用途。使用所产生的一切后果由使用者自行承担。

请登录后发表评论