WordPress主题Mirage版权强制机制移除完全教程
Alexander
04-26
155
0

前言

最近在使用一款名为 Mirage 的 WordPress 主题时,发现该主题内置了多层版权强制保护机制——一旦你尝试修改或移除页脚中的”Powered by Mirage”链接,网站就会直接显示空白页面。本文将完整记录审计和移除这三层保护机制的过程,供遇到同样问题的朋友参考。

问题现象

  • 移除 footer.php 中的 Mirage 版权链接后,前端页面显示空白
  • 换全新域名部署也一样,排除缓存问题
  • 浏览器控制台无报错,页面直接被清空

审计发现:三层保护机制

文件:inc/helper.php 第82-96行

function vt_footer_check() {
    $footer = file_get_contents(get_template_directory() . '/footer.php');
    if (strpos($footer, base64_decode('TWlyYWdl')) === false) {
        die(); // 直接终止页面渲染
    }
}

原理:base64_decode('TWlyYWdl') 解码得到字符串 "Mirage",然后检查 footer.php 文件内容中是否包含该字符串。如果不包含(说明你删了版权链接),直接 die() 杀掉整个页面。

触发入口:inc/setting.php 第3行 调用了此函数。

第二层:JS 客户端检查(源码)

文件:assets/js/src/index.js 第40-42行

// vt_footer_check 的 JS 版本
var el = document.querySelector('a[copyright]');
if (!el || el.innerText !== "Mirage") {
    document.body.innerHTML = 'keep_theme_footer'; // 清空整个页面
}

原理: 在浏览器端再次检查 DOM 中是否存在带 copyright 属性且文字为 “Mirage” 的 <a> 标签。如果不存在或文字不对,直接用 innerHTML 清空 <body> 的所有内容。

第三层:打包后的 JS 文件残留

文件:assets/js/index.js(打包压缩后,约65KB)

源码经过 webpack/rollup 等工具打包后,上面的 JS 检查逻辑被编译进了产物文件中,出现在 第44行和第2042行两处(不同打包阶段产生的重复代码)。

这就是为什么只改源码不够——WordPress 加载的是打包后的 index.js

修复方案

第一步:禁用 PHP 检查

inc/helper.php — 将函数体改为空返回:

function vt_footer_check() {
    return; // 直接返回,不做任何检查
}

inc/setting.php — 注释掉函数调用(或保留调用也无害,因为函数已空):

// vt_footer_check(); // 已禁用

第二步:移除 JS 源码检查

assets/js/src/index.js — 删除或注释掉以下代码块:

// 删除 vt_footer_check 函数定义及调用(约第40-42行)

第三步:移除打包后 JS 检查(最关键!)

assets/js/index.js — 这是 WordPress 实际加载的文件,必须处理其中的两处 document.body.innerHTML = 'keep_theme_footer'

  • 第44行附近:删除/注释 innerHTML 赋值代码
  • 第2042行附近:同样处理(这是打包产生的重复)

可以用编辑器搜索 keep_theme_footer 关键字,确保所有匹配项都被处理。

第四步:修改页脚

footer.php — 移除或替换 Mirage 版权链接:

<!-- 原来的 -->
<a copyright href="...">Mirage</a>

<!-- 改为你自己的 -->
<a copyright href="https://your-site.com">Your Site</a>

⚠️ 注意:如果你还想保留 a[copyright] 选择器的存在(避免 JS 报错),可以保留标签结构但更改链接和文字。

修复验证

完成以上修改后,按顺序验证:

  1. 本地搜索确认:
   # 在主题目录下搜索,应该只有 helper.php 中的空壳函数
   grep -r "keep_theme_footer" .
   grep -r "vt_footer_check" .
  1. 上传到服务器后,强制刷新浏览器:
  • Windows: Ctrl + Shift + R
  • Mac: Cmd + Shift + R

💡 重要: 修改静态资源(JS/CSS)后,浏览器可能继续使用缓存的旧版本。如果页面仍然空白,先试硬刷新!

  1. 线上验证: 访问你的网站首页和文章页,确认正常显示。

额外发现

Phone-home 行为

assets/lib/admin.js 中的 infoInit() 函数会向 https://vtheme.cn/wp-json/wm/v1/info POST 发送以下信息:

  • 你的域名
  • 项目名称
  • 主题版本

这是一个”回传”行为(phone-home),虽然不会导致页面空白,但涉及隐私。如介意可一并处理。

CSS 问题

审计中还发现 style.css.toc-body 选择器因格式问题被错误解析为 body { display: none; },这也会导致页面空白。如果你的站点使用了目录(TOC)功能,需要检查此项。

总结

保护层文件方法修复方式
PHP 服务端inc/helper.phpdie() 终止渲染函数体改为 return;
PHP 触发inc/setting.php调用检查函数注释掉调用
JS 源码assets/js/src/index.js清空 body删除代码块
JS 打包assets/js/index.js清空 body(两处)删除/注释
页脚 HTMLfooter.php版权链接替换为自定义

写在最后

作为开源/免费主题,作者通过这种方式保护自己的署名权可以理解。但如果你是付费用户或需要自定义页脚,希望这篇教程能帮到你。

建议: 修改前务必备份原文件,以便随时恢复。


本文基于实际操作整理,如有遗漏欢迎补充。

打赏
关于本站
上一篇
免费的中质协六西格玛黑带可靠性工程师刷题库小程序推荐
下一篇

发表评论

注册不是必须的

用户卡片
Alexander
3 文章
0 评论
0 喜欢
最新文章

免费的中质协六西格玛黑带可靠性工程师刷题库小程序推荐

今天给大家推荐一款Six Sigma精益六西格玛黑带/绿带/黄带、可靠性工程师、质量经理、QC中级、QC高级、ISQ质量体系、PMP项目管理、计算机软考中项/高项/构架师等职称及职业技能等级中质协/美质协带级自学考试题库。 使用方法:在微信中搜索小程序:六西格玛,然后就会看到有一个叫:智考刷题 的小程序。 以下是这个小程序打开的界面,他们现在好像只做品质相关的题库,绿带、黑带、质量经理、可靠性工程 […]

WordPress主题Mirage版权强制机制移除完全教程

前言 最近在使用一款名为 Mirage 的 WordPress 主题时,发现该主题内置了多层版权强制保护机制——一旦你尝试修改或移除页脚中的”Powered by Mirage”链接,网站就会直接显示空白页面。本文将完整记录审计和移除这三层保护机制的过程,供遇到同样问题的朋友参考。 问题现象 审计发现:三层保护机制 第一层:PHP 服务端检查 —— vt_footer_ch […]

关于本站

关于本网站: 职场笔记,CCTR123.COM,这是一个人个网站哦。 在2026年4月26日上午北京时产8点整我们上线了, 这是我们的第一个WordPress站点,这是我们发布的第一篇文章。 站长是一个80后大叔,不一个不太正经的、非专业的程序员,从小立志成为一名程序员, 从小热爱计算机,毕业于湘潭大学计算机科学与技术本科; 毕业后成功地计算机专业转到了质量管理领域。 业余就喜欢捣鼓各种与计算机相 […]
生成中...
创作不易,打赏鼓励一下我们吧!
创作不易,打赏鼓励一下我们吧!