背景描述

相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面。大概在1年前,专门安排了一个人去解决这个技术问题,遗憾的是当时没有找到解决方案,接下来所有微信端的接口测试和性能测试都无法进行,今天和大家分享下我们的解决方案,希望大家可以绕过微信的坑。

业务场景

我这里以JMeter来举例,我们可以通过在JMeter上开启代理,手机上设置代理来录制微信端的请求,以下为在微信端的业务对应生成的脚本:

录制完成后,我们进行回放,你会发现在查看结果树中,会重定向到微信授权,接着就开始提示:请在微信客户端打开链接。

这里补充几个录制的小技巧

1、每个组放入一个新的控制器:在手机端上做的一次操作所产生的请求会被放在一个控制器中,非常方便;
2、选中记录HTTP信息头、添加断言、Regex matching :自动添加信息头和断言;

问题分析

这里我们看一下请在微信客户端打开链接页面对应的代码:

<script type="text/javascript">var ua = navigator.userAgent.toLowerCase();var isWeixin = ua.indexOf('micromessenger') != -1;var isAndroid = ua.indexOf('android') != -1;var isIos = (ua.indexOf('iphone') != -1) || (ua.indexOf('ipad') != -1);if (!isWeixin) {document.head.innerHTML = '<title>抱歉,出错了</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"><link rel="stylesheet" type="text/css" href="https://res.wx.qq.com/open/libs/weui/0.4.1/weui.css">';document.body.innerHTML = '<div class="weui_msg"><div class="weui_icon_area"><i class="weui_icon_info weui_icon_msg"></i></div><div class="weui_text_area"><h4 class="weui_msg_title">请在微信客户端打开链接</h4></div></div>';}</script>

重点看:

var ua = navigator.userAgent.toLowerCase();
var isWeixin = ua.indexOf('micromessenger') != -1;

说明微信的这个提示是通过判断userAgent中是否包含micromessenger确认是否从微信中打开。
好了,我们查看以下HTTP头中的userAgent:

录制的时候自动添加了录制HTTP请求头的,那么为什么在JMeter打开会仍然会提示呢?这里怀疑是微信故意留的坑或者是微信开发这个页面的人英语四级没过。

解决方案

经过和我们程序猿哥哥陈丹明陈建清一番讨论,一开始没有解决方案;此时丹明怀疑MicroMessenger这个单词写错了,应该是:micromessage!一试,果然!
好吧,程序猿你赢了,看来懂英语是多么的重要。

最终解决

在HTTP请求头里面将MicroMessenger修改成 micromessage

小结

1、请在微信客户端打开链接 这个问题困扰了我们很久,今天总算解决,完美解决;
2、感谢程序猿的大胆怀疑,给他们点赞;
3、自动化测试过程中如果碰见了技术瓶颈,不妨多和研发沟通,他们总能给你一些指导。

Note:

1、单纯的访问页面,则修改成:micromessage就好;
2、在访问页面之前需要进行授权登录,则需要和开发沟通下具体的业务逻辑

3.、是将MicroMessenger替换成micromessage

完美解决 请在微信客户端打开链接相关推荐

  1. python 请在微信客户端打开_完美解决 请在微信客户端打开链接

    完美解决 请在微信客户端打开链接 背景描述 相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面.大概在1年前,专门安排了一个人去解决这个技术问题, ...

  2. 2023超简单解决“请在微信客户端打开链接”

    2023超简单纯文字解决"请在微信客户端打开链接" 全文不超150字,超简单~ 步骤: 安装下载微信开发者工具 打开微信开发者工具并扫码登录 点击左上角-项目-更换开发模式-公众号 ...

  3. 使用Fiddler抓包解决“请在微信客户端打开链接”的问题

    使用Fiddler抓包解决"请在微信客户端打开链接"的问题 参考文章: (1)使用Fiddler抓包解决"请在微信客户端打开链接"的问题 (2)https:// ...

  4. 如何解决“请在微信客户端打开链接”

    如题,这个问题确实很苦恼,写下这篇博客记录下自己的问题. <!DOCTYPE html> <html><head><meta name="viewp ...

  5. 请在微信客户端打开链接 如何解决

    遇到问题: 请在微信客户端打开链接 如何解决? 方法1: http://www.cnblogs.com/fogwang/p/5446421.html

  6. 模拟微信接口时,提示“请在微信客户端打开链接”(转)

    背景描述 相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面.大概在1年前,专门安排了一个人去解决这个技术问题,遗憾的是当时没有找到解决方案,接下 ...

  7. 模拟微信接口时,提示“请在微信客户端打开链接”

    背景描述 相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面.大概在1年前,专门安排了一个人去解决这个技术问题,遗憾的是当时没有找到解决方案,接下 ...

  8. chorme 显示“请在微信客户端打开链接”

    今天从微信公众号里面复制了一个链接,在微信的浏览器中能够打开网页,但是在chomre里面就显示"请在微信客户端打开链接". 想在chrome里面运用调试工具,但苦苦无法实现. 在网 ...

  9. 浏览器查看,请在微信客户端打开链接

    需求:微信公众号登录转跳到网址,想打开控制台,遂复制到浏览器,结果给我提示这个.. 解决方法:设置用户代理字段,把浏览器伪装成微信客户端 就这玩意儿 修改用户代理字段 打开控制台,切换成手机模式(其实 ...

最新文章

  1. 元素 context:component-scan 的前缀 context 未绑定。
  2. vue-cli 官方模板webpack-simple的npm run dev 与npm run bulid的一些问题
  3. jquery lt选择器与gt选择器
  4. SQL Server基础知识概念要点详细讲解
  5. 修改主机名hosts
  6. ThreadLocal的意义和实现
  7. TreeView的复选框隐藏 重新整理
  8. oracle数据库创建
  9. eclipse3.4+对的处理插件(附SVN插件安装实例)
  10. 字符串匹配KMP算法设计C语言,KMP字符串匹配算法笔记
  11. docker镜像创建
  12. win8需要计算机管理员权限才能删除,win8系统使用管理员权限无法删除部分文件怎么办...
  13. android开发学习-日常用到的好东西-常用技巧分享
  14. asp.net core 日志中间件(LoggerMiddleware)
  15. Excel如何将单元格数据拆分并转为多行
  16. BSOJ 2923:藤原妹红 MST+树型DP
  17. 三元锂电池 VS 磷酸铁锂电池
  18. 输入一个正整数,判断它是否是回文数。要求定义和调用函数:int isPalindrome(int n),如果n是回文数,该函数返回1,否则返回0。回文数是指正读和反读都相同的数。
  19. 清除文件用其他应用默认打开方式
  20. Java序列化与反序列化的深度思考

热门文章

  1. [Setting]win7下运行exe失败:应用程序无法启动,因为应用程序的并行配置不正确
  2. NSString中的rangeOfString
  3. 详解ENet | CPU可以实时的道路分割网络
  4. Android 简述touch事件中的MotionEvent
  5. Camera成像原理(raw图如何产生的)
  6. 锁相环(PLL)基本结构及相关基本知识
  7. JS和node.js的区别
  8. JavaScript 基础知识
  9. 二叉树:给后序中序遍历,求前序
  10. 减轻运维人员工作压力?一招轻松实现无人值守