背景描述
相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面。大概在1年前,专门安排了一个人去解决这个技术问题,遗憾的是当时没有找到解决方案,接下来所有微信端的接口测试和性能测试都无法进行,今天和大家分享下我们的解决方案,希望大家可以绕过微信的坑。
业务场景
我这里以JMeter来举例,我们可以通过在JMeter上开启代理,手机上设置代理来录制微信端的请求,以下为在微信端的业务对应生成的脚本:
录制完成后,我们进行回放,你会发现在中,会重定向到微信授权,接着就开始提示:请在微信客户端打开链接。
这里补充几个录制的小技巧
1、每个组放入一个新的控制器:在手机端上做的一次操作所产生的请求会被放在一个控制器中,非常方便;
2、选中记录HTTP信息头、添加断言、Regex matching :自动添加信息头和断言;
问题分析
这里我们看一下页面对应的代码:
重点看:
解决方案
经过和我们程序猿哥哥和一番讨论,一开始没有解决方案;此时怀疑MicroMessenger这个单词写错了,应该是:micromessage!一试,果然!
好吧,你赢了,看来懂英语是多么的重要。
最终解决
在HTTP请求头里面将修改成 。
小结
1、请在微信客户端打开链接 这个问题困扰了我们很久,今天总算解决,完美解决;
2、感谢程序猿的大胆怀疑,给他们点赞;
3、自动化测试过程中如果碰见了技术瓶颈,不妨多和研发沟通,他们总能给你一些指导。
作者:aizaimenghuangu 说明:如有版权请联系删除
再分享一文:
做过微信授权开发的朋友都知道,遇到这个页面就算再怎么复制链接都不行了,以前还能在PC端的微信里面直接点链接可以查看代码,貌似现在也被微信封了,但是别人好的代码我们是需要学习交流的,怎么办呢?在网上查了一些资料,发现可以用Fiddler手机抓包来解决,用软件抓包源于做一个.NET开发的GPS数据收集信息并分析的项目,掐指一算整整8年过去了,基本上都不知道怎么用了,甚至都不记得当时是不是用Fiddler软件,最近用Fiddler是在本地替换服务器的JS文件的功能上,这个用法貌似也是很不错的,有机会另开一篇,话归正题,我们还是来看看怎么用Fiddler来对手机(本文是通过iphone,android的还没试过,估计大同小异)进行抓包。
1、下载Fiddler链接:http://rj.baidu.com/soft/detail/10963.html?ald
2、安装Fiddler,这个反正就下一步到底。
3、设置一,Tools->Fiddler Options->HTTPS选项卡里面,把Capture HTTPS CONNECTs和下面的都勾上吧,Fiddler就可以截获HTTPS请求,如下图
4、设置二,就上面图中的Connections选项卡,选中"Allow remote computers to connect". 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来,端口号默认8888,如下图
Fiddler的准备工作就差不多结束了,现在我们需要来做手机端的设置。
5、手机和PC网络互通,就是手机和PC必须连的是一个路由器,这个时候我们找到PC端的IP,本机是192.168.1.20,那么我们就在手机端复制地址http://192.168.1.20:8888。
6、安装证书,别被这个标题吓到了,其实很简单,就是一个通行证的原理,打开手机浏览器(千万别在微信里面点击,我之前就是在微信里面直接点,装了半天没装上,差点就放弃了),把上面手机复制的地址http://192.168.1.20:8888粘贴到地址栏中,点击转到,就会出来如下画面
7、修建一座桥的两边桥墩算是建好了,这个时候我们就需要做连通了,怎么样才能把手机和PC端的Fiddler连接起来呢?证书通行证我们拿到了,但是还需要一个暗号,这个时候我们就打开手机的设置,把第1步得到的IP按照下图红框所示填好就行,对应8888端口也填上。
10、小结:虽然工作十年了,但还是第一次写博客,也算是自己人生路上的另一个挑战,至于好不好,能不能得到认可,反正先干了再说,虽然这个算是一个比较糟糕的鸡蛋,但是我相信总有一天鸡蛋会画好的。