Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 日志 › 「运维记录」网站主题切换为Panda Pro,适配相关插件

「运维记录」网站主题切换为Panda Pro,适配相关插件

Eswlnk的头像
Eswlnk
2024-10-26 0:32:48
「运维记录」网站主题切换为Panda Pro,适配相关插件-Eswlnk Blog
智能摘要 AI
由于Alright主题加载速度较慢,切换回旧主题并适配了ToolBox问答中心,记录了初始化代码和XMLHttpRequest劫持代码,用于处理验证码验证和请求拦截。

之前的Alright主题的优化确实不太友好,一个普通的页面加载都需要接近1秒,对用户十分不友好,最终还是选择切换回到之前的主题。

「运维记录」网站主题切换为Panda Pro,适配相关插件-Eswlnk Blog

顺便也把之前的ToolBox适配了问答中心,记录一下调试的代码:

初始化代码

jQuery(document).ready(function ($) {
  var globalCaptchaObj; // 全局变量用于保存验证码对象
  var verifySuccess = false; // 标志位,默认验证码未通过

  function insertVerifyText(text) {
    // 判断是否存在 id 为 "verify_text" 的元素
    if ($('#verify_text').length) {
      // 如果存在,则只更改文字内容
      $('#verify_text').text(text);
    } else {
      // 如果不存在,则插入新的 div 元素
      $('#' + comment_verify.buttonId).after(
        '<div id="verify_text" style="color: red;">' + text + '</div>'
      );
    }
  }

  // 初始化 GeeTest 验证码
  initGeetest4(
    {
      captchaId: comment_verify.captchaId,
      product: 'bind', // 绑定模式
    },
    initGeetestCallback
  );

  // 初始化 GeeTest 回调函数
  function initGeetestCallback(captchaObj) {
    globalCaptchaObj = captchaObj;

    globalCaptchaObj.onSuccess(function () {
      var captcha = {
        captcha: globalCaptchaObj.getValidate(),
      };
      window.verify_captcha = captcha;

      if (window.comment_verify.is_ajax_comment == 0) {
        var form = $('#' + comment_verify.formId);

        // 遍历 captcha 对象的属性,并添加到隐藏的 input 元素中
        for (var key in verify_captcha.captcha) {
          if (verify_captcha.captcha.hasOwnProperty(key)) {
            form.append(
              '<input type="hidden" name="captcha[' +
                key +
                ']" value="' +
                verify_captcha.captcha[key] +
                '">'
            );
          }
        }

        HTMLFormElement.prototype.submit.call(
          document.getElementById(comment_verify.formId)
        );
      } else {
        $('#' + comment_verify.formId).submit();
      }

      verifySuccess = true; // 设置标志位为真,表示验证通过

      // 手动触发 answer-submit 按钮的点击事件
      const targetButton = document.querySelector('.answer-submit');
      if (targetButton) {
        targetButton.click(); // 手动触发 Vue 的逻辑
      }

      globalCaptchaObj.reset(); // 重置验证码
      verifySuccess = false; // 验证码重置后将标志位重置为 false
    });

    globalCaptchaObj.onError(function () {
      insertVerifyText('验证码加载问题,请刷新页面后重试');
      return false;
    });

    globalCaptchaObj.onClose(function () {
      insertVerifyText('需通过验证才能进行评论');
      globalCaptchaObj.reset(); // 重置验证码
      verifySuccess = false; // 重置标志位为 false
      return false;
    });
  }

  // 在点击 comment_verify 按钮时触发验证码的弹出
  $(document).on('click', '#' + comment_verify.buttonId, function (event) {
    var shouldShowCaptcha = true; // 示例条件,根据实际需求修改

    if (shouldShowCaptcha) {
      event.preventDefault(); // 阻止默认提交行为
      globalCaptchaObj.showCaptcha(); // 显示验证码
    }
  });

  // 注入 answer-submit 按钮的逻辑
  (function () {
    $(document).ready(function () {
      const targetButton = document.querySelector('.answer-submit');
      if (targetButton) {
        // 在捕获阶段绑定事件,确保在 Vue 逻辑之前执行
        targetButton.addEventListener(
          'click',
          function (event) {
            if (!verifySuccess) {
              event.preventDefault(); // 阻止默认行为
              event.stopPropagation(); // 阻止事件冒泡
              event.stopImmediatePropagation(); // 立即停止其他事件处理器

              globalCaptchaObj.showCaptcha(); // 显示验证码
            }
          },
          true // 使用捕获阶段,确保在 Vue 的事件处理器之前执行
        );
      }
    });
  })();
});

XMLHttpRequest 劫持VUE底层请求

(function () {
  // 保存原生的 XMLHttpRequest 构造函数
  const originalXMLHttpRequest = window.XMLHttpRequest;

  // 创建一个拦截后的 XMLHttpRequest 构造函数
  function InterceptedXMLHttpRequest() {
    const xhr = new originalXMLHttpRequest();

    xhr.open = (function (originalOpen) {
      return function (method, url, async, user, password) {
        // 检查是否是目标请求
        if (url.includes('/wp-json/v1/qaservice/comments/create')) {
          console.log('拦截到 /wp-json/v1/qaservice/comments/create 请求');

          // 在请求头或其他地方添加验证码信息
          const additionalParams = jQuery.param(window.verify_captcha || {});
          url += (url.includes('?') ? '&' : '?') + additionalParams;
        }
        originalOpen.call(this, method, url, async, user, password);
      };
    })(xhr.open);

    return xhr;
  }

  // 将 window.XMLHttpRequest 替换为拦截后的版本
  window.XMLHttpRequest = InterceptedXMLHttpRequest;
})();
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
WordPress日志运维
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
「日志记录」CUIT部分网站疑似被镜像
上一篇
「反馈记录」百度站长平台配额申请
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「日志」IG无缘S15总决赛
  • 来自谷歌27岁的生日涂鸦
  • 插件分享:新增自助购买卡密功能
  • 事件记录:国内网络故障情况
  • 科研记录:ecCodes处理grib文件问题
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

HotSpot AI 热点创作 1.1 新版本发布!
2023-03-25 13:59:06
「日志记录」有关部分域名DNS劫持日志记录分析
2024-01-17 22:20:48
来自谷歌27岁的生日涂鸦
2025-09-27 22:50:12

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.400 秒   |  SQL查询 23 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈