完美解决 请在微信客户端打开链接

背景描述

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

业务场景

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

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

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

1、每个组放入一个新的控制器:在手机端上做的一次操作所产生的请求会被放在一个控制器中,非常方便;

2、选中记录HTTP信息头、添加断言、Regex matching :自动添加信息头和断言;

问题分析

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

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 = '

抱歉,出错了';

document.body.innerHTML = '

请在微信客户端打开链接

';

}

重点看:

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、自动化测试过程中如果碰见了技术瓶颈,不妨多和研发沟通,他们总能给你一些指导。

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

  1. python画图显示不了中文_完美解决Python matplotlib绘图时汉字显示不正常的问题

    Matplotlib是一个很好的作图软件,但是python下默认不支持中文,所以需要做一些修改,方法如下: 1.在python安装目录的Lib目录下创建ch.py文件. 文件中代码为: 保存,以后通过 ...

  2. c# list集合根据某个字段去重_完美解决c# distinct不好用的问题

    当一个结合中想根据某一个字段做去重方法时使用以下代码 IQueryable 继承自IEnumerable 先举例: #region linq to object List peopleList = n ...

  3. android 微信回弹,完美解决safari、微信浏览器下拉回弹效果。

    完美解决safari.微信浏览器下拉回弹效果,只保留局部回弹效果. CSS代码 .box{ overflow: auto; -webkit-overflow-scrolling: touch; } H ...

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

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

  5. python 3d绘图 汉字_完美解决Python matplotlib绘图时汉字显示不正常的问题

    Matplotlib是一个很好的作图软件,但是python下默认不支持中文,所以需要做一些修改,方法如下: 1.在python安装目录的Lib目录下创建ch.py文件. 文件中代码为: 保存,以后通过 ...

  6. python汉字无法显示图片_完美解决matplotlib画图中文显示问题

    相信有很多人曾经被matplotlib画图的中文显示问题所困扰,包括我自己.每次生产环境发生改变,都会遭遇到这个问题,然后需要花大量的时间在它上边.最可气的是每次遇到的问题不一定一样,上一次使用的方法 ...

  7. python循环输入若干成绩_完美解决在oj中Python的循环输入问题

    完美解决在oj中Python的循环输入问题 这几天做题被python的循环输入问题给烦死了,好好查了一下,记录在此. while True: t= sys.stdin.readline().strip ...

  8. mysql 授权 失败_完美解决mysql客户端授权后连接失败的问题

    在本地(192.168.1.152)部署好mysql环境,授权远程客户机192.168.1.%连接本机的mysql,在iptables防火墙也已开通3306端口. 如下: mysql> sele ...

  9. python文本文件和二进制文件的区别_以文本格式和二进制格式打开文件,到底有什么区别?...

    以文本格式和二进制格式打开文件,到底有什么区别? 我们知道,open() 函数第二个参数是一个字符串,用于指定文件的打开方式,如果该字符串中出现 b,则表示以二进制格式打开文件:反之,则以普通的文本格 ...

最新文章

  1. java 新区 老区_优学院《土地资源学》答案在线查题2020高校邦《Java核心开发技术【实境编程】》章测试答案...
  2. TQ210 —— NandFlash
  3. Python使用Tkinter实现转盘抽奖器
  4. PowerDesigner连接mysql逆向生成pdm
  5. linux内核版本 2.6.39,编译RedHat Linux-2.6.39内核
  6. 邮件服务器运维,什么是邮件服务器,邮件服务器详解
  7. 附加和分离SQL数据库
  8. 阿辉,Bullet In The Head
  9. java app支付_java微信支付—APP
  10. 我被感动了!世间自有真爱 - 林林与静静
  11. 计算机十年歌曲,抖音还有多少个十年原唱是谁 歌词一览
  12. 计算机管理的磁盘管理简单卷,win7磁盘管理分区后无法新建简单卷怎么解决
  13. windows“运行”自定义“命令”的实现
  14. 服务器名称显示 n a,EXCEL技巧 怎样消除vlookup找不到目标时出现的#N/A
  15. Apache新晋董事姜宁:从Apache Member到Apache董事,他花了11年
  16. ABAP调用外部webservice 问题
  17. Java实现 LeetCode 718 最长重复子数组(动态规划)
  18. 邹欣对话图灵奖得主Jeffrey Ullman:数据库不会进入周期性的坏循环 |《新程序员》
  19. 防火墙添加ip白名单_宝塔防火墙IP白名单添加/导入云盾YUNDUN高防CDN节点IP段
  20. Java中long类型直接赋值大数字的问题

热门文章

  1. 产学交流 | 重庆理工大学计算机科学与工程学院一行到访芝诺数据
  2. 散粉在哪个步骤用_【散粉怎么用】正确的散粉用法_方法步骤顺序-她时代-女性时尚生活宝典...
  3. QUIC linux编译
  4. 视频号引流有哪些方法?学会这几种方法快速吸粉
  5. 【笑小枫的SpringBoot系列】【十七】SpringBoot文件上传下载
  6. 100W个微信红包封面,人人都能领取到!!!
  7. 【SeedLab】ARP Cache Poisoning Attack Lab
  8. 三分钟了解一下深度学习
  9. SaaS系统设计研发细节复盘
  10. 巧用Excel VBA 快速编排考场座位