背景描述

相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面。大概在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、自动化测试过程中如果碰见了技术瓶颈,不妨多和研发沟通,他们总能给你一些指导。

转载于:https://www.cnblogs.com/ai594ai/p/7886264.html

模拟微信接口时,提示“请在微信客户端打开链接”相关推荐

  1. 扫描二维码,提示请在指定客户端打开连接

    有时候,需要链接只能在微信上打开,如果不是,则提示请在微信客户端打开链接的字眼的网页,网页代码如下:(这个是网页应用授权时,非微信上打开,就会出现,然后把它单独拿出来了) 效果如图: 实现方法: &l ...

  2. Android使用WebView加载Url时提示“请在微信客户端打开链接”

    前言 最近在使用webView加载一个url时 提示弹出这样的图片 解决方法 在设置webView属性的时候 修改ua参数 我们通过这个链接拿到自己的ua参数 点击获取自己的UA参数 如图所示 我用的 ...

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

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

  4. Android_微信分享时提示“签名不对,请检查签名是否与开放平台上填写的一致。”

    传送门: Android_新浪微博分享提示"21338:sso package or sign error": https://blog.csdn.net/pang78755961 ...

  5. 微信公众号无法抓包 提示请在微信客户端打开链接

    最近有一个需求是测试公司公众号中某个需要鉴权接口的性能.首先就是需要对该接口进行抓包,根据以前写过的一篇文章,我们可以过使用Fiddler对微信PC客户端抓包来获取接口信息. 使用fiddler抓包微 ...

  6. 请在微信客户端打开链接:火狐浏览器模拟微信浏览器内核教程 ,用chrome模拟微信浏览器访问需要OA…....

    背景:微信浏览器能访问,出现,请在微信客户端打开链接. user agent switcher for firefox: https://addons.mozilla.org/en-US/firefo ...

  7. JS设置请在微信客户端打开链接提示页面

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

  8. 安卓6.0以上机型微信登录时提示Activity did not call finish() prior to onResume() completing

    ** 安卓6.0以上机型微信登录时提示Activity did not call finish() prior to onResume() completing ** 今天遇到这样的一个bug,我 ...

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

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

最新文章

  1. php怎么随机生成二个中文,PHP生成随机字符串的两种办法
  2. gitbook的使用
  3. 1017 Queueing at Bank (25 分)_27行代码AC
  4. c语言 程序延时 校准,c语言实现系统时间校正工具代码分享
  5. outlook存档邮件_如何在Outlook 2013中存档电子邮件
  6. VS2019安全函数scanf_s问题
  7. 提交第一个spark作业到集群运行
  8. 财富:鲍尔默时代的微软一直在走下坡路
  9. u大师u盘装系统win7_怎么用u盘装win7系统
  10. X明X源面试题《三》
  11. 网易公司首席执行官 丁磊
  12. CMD 命令行实现 Windows 下复制文件到文件夹下的所有文件夹
  13. linux复制文件的命令是什么?
  14. Redis 微博微信场景使用案例
  15. ASEMI的MOS管9N90参数,9N90电路图,9N90实物图
  16. L1-051 打折(Java)团体程序设计天梯赛
  17. WinEdit10 添加论文引用,XeLaTex编译后论文中的引用变成了【?】
  18. 【新手上路常见问答】关于知识工程
  19. SAP message TK 248 solved
  20. JVM垃圾回收器-CMS并发标记清除

热门文章

  1. 区块链+AI,恰似双剑合璧?
  2. IE6,IE7,firefox火狐浏览器兼容性在DIV+CSS中的写法
  3. 数据库优化----结构优化
  4. 在洛阳学计算机专业哪家技校好,2018年洛阳十大技校排名 排名前十的学校有哪些...
  5. Ansible PlayBook语法
  6. 人事面试100问(2)
  7. XPdf实现pdf转txt格式方法实现
  8. 如何用技术改变生活 哪个瞬间你突然觉得读书真有用?
  9. 明明五笔输入法打字速度更快,为什么现在却很少有人用了?
  10. 图像常见格式及转换(BGR,YUV,NV12,YUV444)