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


文件下载
插件名称:网盘地址加密保护
-
版本:1.0.1
-
作者:阿晨
-
运行要求:WordPress 5.0+ / PHP 7.4+
一、这个插件解决什么问题
资源站常把夸克、百度、阿里等网盘链接直接放在文章里。这会带来两个麻烦:
-
爬虫批量抓取:明文网盘链接极易被采集脚本一次性扒走。
-
被倒狗恶意举报:链接暴露后容易被批量举报,导致网盘分享失效。
本插件的思路是:不让链接以明文出现在页面上。文章发布时,插件自动把网盘链接替换成一条”加密跳转链接”(形如 https://你的域名/netdisk/xxxxxx/)。
-
真人用户:在电脑上点开链接 → 看到一个引导扫码的页面 → 用手机(夸克 App / 相机)扫码 → 手机端自动跳转到真实网盘地址。
-
爬虫:抓到的只是一串编码后的跳转链接,拿不到明文网盘地址,也难以批量还原。
⚠️ 重要说明:这里的”加密”本质是 URL-safe Base64 编码(轻量混淆),不是高强度加密。它的定位是”抬高批量抓取/举报的门槛”,而非”绝对不可破解”。这一点在设计上是有意为之——初衷仅为防爬虫批量举报,无需引入密钥体系。
二、核心特性
|
特性 |
说明 |
|---|---|
|
发布即自动加密 |
无需手动操作,文章发布/更新时自动识别并替换文内网盘链接 |
|
多网盘支持 |
覆盖夸克、百度、阿里云盘、迅雷、天翼、蓝奏、UC、123、115 等主流网盘 |
|
设备智能分流 |
服务端识别 UA:PC 端出扫码页,移动端直接 302 跳转网盘 |
|
前端生成二维码 |
二维码在浏览器端用 QRCode.js 动态生成,服务器零负担 |
|
固定扫码画面 |
内置一套精美的固定扫码引导页,无需任何样式配置 |
|
Zibll 投稿兼容 |
兼容子比(zibll)主题前台投稿,投稿内容同样自动加密 |
|
自定义加密域名 |
可指定加密链接使用的域名(如独立的跳转专用域名),留空则用本站域名 |
|
零外部依赖 |
无 Composer、无 npm、无框架,唯一第三方是内置的 |
三、工作原理
1. 加密(文章发布时)
文章发布/更新/投稿
│
▼
识别文内网盘链接(<a href> 或裸链接)
│
▼
URL-safe Base64 编码原始网盘地址
│
▼
替换为跳转链接:https://域名/netdisk/{编码串}/
│
▼
直接写回文章内容(数据库)
2. 访问(用户点开加密链接时)
用户访问 /netdisk/{编码串}/
│
▼
重写规则命中 → 取出 netdisk_data 查询变量
│
├── 移动设备?──是──▶ 服务端解码 → 302 跳转到真实网盘地址
│
└── PC 设备?──▶ 渲染固定扫码页(页内二维码=当前这条加密链接)
│
▼
用户手机扫码 → 手机走”移动设备”分支 → 跳转网盘
关键点:PC 扫码页里的二维码,内容就是”当前这条加密链接本身”。手机扫码后打开的还是同一条链接,只是这次是移动设备,于是走 302 跳转,最终到达网盘。整个过程无需服务器存储任何映射关系。
四、支持的网盘
|
网盘 |
域名 |
|---|---|
|
夸克网盘 |
pan.quark.cn |
|
百度网盘 |
pan.baidu.com |
|
阿里云盘 |
|
|
迅雷网盘 |
pan.xunlei.com |
|
天翼云盘 |
cloud.189.cn |
|
蓝奏云 |
www.lanzou.com / lanzoui / lanzoux / lanzouw |
|
UC 网盘 |
pan.uc.cn |
|
123 云盘 |
www.123pan.com / 123865 / 123684 |
|
115 网盘 |
|
|
快网盘 |
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. 它在哪里(代码位置)
|
项 |
位置 |
|---|---|
|
页面渲染方法 |
|
|
触发入口 |
同文件 |
|
二维码库 |
|
注意:整个页面(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.php 的 render_mobile_page() 方法即可:
-
改文案 → 修改方法开头的
$title/$save_prompt等变量,或 HTML 里对应的标语文字; -
换手机图 → 改
$phone_image常量; -
调样式 → 改方法内
<style>块; -
调二维码尺寸/颜色 → 改底部
<script>里的qrWidth/qrHeight/qrColorDark/qrColorLight。
因为是纯 PHP 内联渲染,改完无需清缓存、无需编译,保存文件即生效。
七、安装
方式一:手动上传
-
将
netdisk-protect文件夹放入wp-content/plugins/; -
进入 WordPress 后台「插件」页面,激活「网盘地址加密保护」。
方式二:后台上传
-
将插件打包为
.zip; -
后台「插件 → 安装插件 → 上传插件」,选择 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 块里手动加入:
# 网盘地址加密插件重写规则
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 怎么办
- 确认固定链接不是「朴素」结构;
- 到 设置 → 固定链接,什么都不改,直接点一次「保存更改」——强制 WordPress 重写规则表刷新;
- Nginx 用户确认
try_files那行已加且已 reload; - 换服务器/迁移站点后,务必重新执行第 2 步。
插件在激活时会自动
flush_rewrite_rules(),但线上偶尔因缓存未刷新到,手动”保存固定链接”是最可靠的兜底。
九、配置与使用
激活后进入 后台「网盘加密」→「自动加密设置」,只有两项:
-
启用自动加密:勾选后,发布文章即自动加密文内网盘链接(默认开启)。
-
自动加密服务器:加密跳转链接使用的域名。
-
留空 → 使用当前站点域名;
-
填写独立域名(如
https://secret.example.com)→ 加密链接走该域名。
-
日常使用:正常写文章、正常粘贴网盘链接、正常发布即可。插件会在保存瞬间自动完成替换,你和读者都无需额外操作。
兼容性:
-
✅ WordPress 后台发布文章
-
✅ Zibll 子比主题前台投稿
-
⚠️ 其他主题的前台发布(未测试其他主题)
进阶:用「自动加密服务器」做跨服务器加速
这是「自动加密服务器」这项设置最实用的玩法,专门解决主站在海外、跳转慢的问题。
功能本质:这个设置决定了加密链接的域名前缀。
-
留空 → 加密链接用当前站点域名:
https://本站/netdisk/{编码}/ -
填域名 → 加密链接用指定域名:
https://指定服务器/netdisk/{编码}/
为什么能跨服务器:本插件的编解码是无密钥的 URL-safe Base64,不依赖任何站点私有密钥。这意味着——只要另一台服务器也装了本插件,它就能解开同一串编码并完成跳转。加密链接因此可以”指向别的服务器”。
典型场景(海外主站 + 国内加速):
你的 WordPress 主站部署在海外,用户点开
/netdisk/跳转链接时要绕道海外服务器解析,速度慢。 解决办法:在国内再放一台服务器(同样安装本插件),让海外主站生成的加密链接直接指向国内服务器。用户访问时由国内服务器就近解析并跳转,速度显著提升。
海外主站发布文章
│ 后台「自动加密服务器」填:https://国内服务器域名
▼
文内网盘链接被替换为:https://国内服务器域名/netdisk/{编码}/
│
▼
用户点开链接 ──▶ 直接访问【国内服务器】(就近、快)
│
├─ PC 端:国内服务器渲染扫码页
└─ 移动端:国内服务器解码 → 302 跳转真实网盘
部署步骤:
-
国内服务器:安装并激活本插件(关键是注册
/netdisk/重写规则,使其具备”解析加密链接”的能力);若为 Nginx,确认伪静态含try_files $uri $uri/ /index.php?$args;。 -
海外主站:后台「网盘加密 → 自动加密设置 → 自动加密服务器」填入国内服务器域名(如
https://cdn.example.com)。 -
之后海外主站正常发布文章,生成的加密链接会自动指向国内服务器,由国内服务器承担全部解析与跳转。
说明与注意:
-
国内那台服务器主要用到插件的前台解析能力(重写规则 + 设备识别 + 跳转),它自身的”启用自动加密”开关开不开都行——它负责”解”,不一定要”加密”。
-
两端务必是同一套插件(编码算法一致),否则国内服务器无法正确解码。本插件天然一致,无需额外配置密钥。
-
国内服务器域名建议用能正常访问、且解析这台机器的独立域名(可只放一个空白 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 或更高版本 发布。
免责声明:本插件仅供学习与个人使用,请勿用于非法用途。使用所产生的一切后果由使用者自行承担。




