当前位置:首页 > 技术分享

微信提示:“该网页需获取个人信息才可使用完整服务,当前仅可浏览部分内容。”点击“使用完整服务”

admin9个月前 (08-26)技术分享688

在微信内置浏览器中,无法直接通过 JavaScript 检测网页底部的隐私提示,因为该提示是微信客户端渲染的,不属于网页 DOM 的一部分。但可以通过以下间接方法判断是否处于「快照页模式」:

方法 1:URL 参数检测(最可靠)

微信在触发隐私提示时会在 URL 中添加特定参数:

// 检测 URL 中是否包含微信快照模式参数
function isInWeChatSnapshotMode() {
  const urlParams = new URLSearchParams(window.location.search);
  return urlParams.get('snapshot') === '1' || 
         urlParams.has('from') && urlParams.get('from') === 'timeline';
}

// 使用示例
if (isInWeChatSnapshotMode()) {
  console.log("当前处于微信快照模式,显示隐私提示");
  // 显示引导用户点击「使用完整服务」的界面
}

方法 2:用户信息虚拟化检测

微信在快照模式下会返回虚拟用户信息:

// 通过微信 JS-SDK 获取用户信息检测
wx.ready(() => {
  wx.getUserInfo({
    success: (res) => {
      // 检查返回的 openId 是否以虚拟前缀开头
      if (res.userInfo && 
          /^snapshot_user_/.test(res.userInfo.openId)) {
        console.log("检测到虚拟用户信息:处于快照模式");
      }
    }
  });
});

方法 3:功能受限特征检测

快照页中特定功能会受限:

// 检测微信支付/JSSDK功能是否受限
function checkFunctionality() {
  return new Promise((resolve) => {
    wx.ready(() => {
      wx.checkJsApi({
        jsApiList: ['chooseImage'],
        success: (res) => {
          // 正常模式返回具体权限结果
          // 快照模式可能返回空对象或错误
          resolve(!res.checkResult || res.checkResult.chooseImage === undefined);
        }
      });
    });
  });
}

// 使用示例
checkFunctionality().then((isLimited) => {
  if (isLimited) console.log("功能受限:可能处于快照模式");
});

方法 4:页面高度异常检测(不推荐)

快照提示会占用底部空间:

// 检测可视区域高度是否异常缩减
function checkViewportHeight() {
  const winHeight = window.innerHeight;
  const bodyHeight = document.documentElement.clientHeight;
  
  // 快照模式通常有 80-100px 的底部提示
  const heightDiff = Math.abs(winHeight - bodyHeight);
  return heightDiff > 80 && heightDiff < 100;
}

推荐组合方案

async function detectSnapshotMode() {
  // 优先检查URL参数
  if (isInWeChatSnapshotMode()) return true;
  
  // 检查功能是否受限
  if (await checkFunctionality()) return true;
  
  // 最终检查用户信息
  return new Promise(resolve => {
    wx.getUserInfo({
      success: res => resolve(/^snapshot_user_/.test(res.userInfo.openId)),
      fail: () => resolve(false)
    });
  });
}

// 页面初始化时检测
document.addEventListener('WeixinJSBridgeReady', () => {
  detectSnapshotMode().then(isSnapshot => {
    if (isSnapshot) {
      // 显示自定义引导提示
      showAuthGuide();
    }
  });
});

重要说明

  1. 微信没有提供原生 API 直接检测该提示

  2. snapshot=1 参数是当前最可靠的判断依据

  3. 用户点击「使用完整服务」后页面会刷新并移除该参数

  4. 虚拟用户信息的 openId 以 snapshot_user_ 开头

  5. 所有检测需在微信 JS-SDK 初始化后执行(wx.ready

建议优先使用 URL 参数检测,它是最稳定且无需用户交互的方式。其他方法可作为备用方案,但要注意微信可能会调整其实现机制。

扫描二维码推送至手机访问。

版权声明:本文由小刚刚技术博客发布,如需转载请注明出处。

本文链接:https://blog.bitefu.net/post/689.html

分享给朋友:

“微信提示:“该网页需获取个人信息才可使用完整服务,当前仅可浏览部分内容。”点击“使用完整服务”” 的相关文章

节假日api 开源版 解密

介绍免费节假日API 开源了,可以离线调用, 可以集成到自己系统中开源地址https://gitee.com/web/holidays_api开源说明注:原百度节假日API即为本人提供,后百度apistore禁止个人开发者所以才有此独立接口…

[Windows] Adobe Flash Player 34.0.0.92及可用版修改方法

[Windows] Adobe Flash Player 34.0.0.92及可用版修改方法

随着 2021 年的到来,Adobe Flash Player 也迎来了告别,Adobe 在 2020 年 12 月 31 日后将不再支持 Flash Player。其实早在 2017 年,Adobe 公司就已宣布,计划在 2020 年底逐…

超高性比的斐讯盒子T1,刷第三方YYF固件机教程超级详细版

超高性比的斐讯盒子T1,刷第三方YYF固件机教程超级详细版

家里面买了斐讯盒子T1,必不可少的就是刷机,刷机一直爽,一直刷机一直爽,这样的快乐一般人体会不到。原来斐讯盒子N1,T1,还有斐讯K2P路由器也变成了性价比超高的东东,而且众多大神也带来了超多可玩性非常高的固件和破解。楼主今天扒到了相关超高…

python调用WinRAR暴力获取压缩密码 用网址做解压密码

原理很简单:python通过调用WinRAR.exe暴力获取压缩密码,要求必须安装WinRAR或者有WinRAR.exe这个文件(单个文件就行)。个人实测zip和rar格式都能用。缺点:费时间,费cpu一、不生成密码本:4位全数字密码:im…

百度云网盘高速下载方法[测试可用]

百度云网盘高速下载方法[测试可用]

大前提这是一个油猴脚本,安装脚本之前,必须先安装油猴浏览器扩展(如已安装则跳过):【第一步】下载油猴 --> 如有提示安装,则直接安装即可,否则继续执行第二步【第二步】安装油猴 --> 参考其中章节:&nbs…

Chrome 最全历史版本下载以及chromedriver下载

https://vikyd.github.io/download-chromium-history-version/#/ https://dl.lancdn.com/landian/soft/chrome/m/ chromedriver的版…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。