模拟微信接口时,提示“请在微信客户端打开链接”
背景描述
相信有模擬微信頁面請(qǐng)求的測試都有看到過這個(gè)頁面,簡單點(diǎn)說就是爬蟲爬微信頁面,進(jìn)行回放的時(shí)候會(huì)出現(xiàn)這個(gè)頁面。大概在1年前,專門安排了一個(gè)人去解決這個(gè)技術(shù)問題,遺憾的是當(dāng)時(shí)沒有找到解決方案,接下來所有微信端的接口測試和性能測試都無法進(jìn)行,今天和大家分享下我們的解決方案,希望大家可以繞過微信的坑。
?
業(yè)務(wù)場景
我這里以JMeter來舉例,我們可以通過在JMeter上開啟代理,手機(jī)上設(shè)置代理來錄制微信端的請(qǐng)求,以下為在微信端的業(yè)務(wù)對(duì)應(yīng)生成的腳本:
?
錄制完成后,我們進(jìn)行回放,你會(huì)發(fā)現(xiàn)在查看結(jié)果樹中,會(huì)重定向到微信授權(quán),接著就開始提示:請(qǐng)?jiān)谖⑿趴蛻舳舜蜷_鏈接。
?
這里補(bǔ)充幾個(gè)錄制的小技巧
1、每個(gè)組放入一個(gè)新的控制器:在手機(jī)端上做的一次操作所產(chǎn)生的請(qǐng)求會(huì)被放在一個(gè)控制器中,非常方便;
2、選中記錄HTTP信息頭、添加斷言、Regex matching :自動(dòng)添加信息頭和斷言;
?
問題分析
這里我們看一下請(qǐng)?jiān)谖⑿趴蛻舳舜蜷_鏈接頁面對(duì)應(yīng)的代碼:
<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>抱歉,出錯(cuò)了</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">請(qǐng)?jiān)谖⑿趴蛻舳舜蜷_鏈接</h4></div></div>';}</script>重點(diǎn)看:
var ua = navigator.userAgent.toLowerCase(); var isWeixin = ua.indexOf('micromessenger') != -1;說明微信的這個(gè)提示是通過判斷userAgent中是否包含micromessenger確認(rèn)是否從微信中打開。
好了,我們查看以下HTTP頭中的userAgent:
?
錄制的時(shí)候自動(dòng)添加了錄制HTTP請(qǐng)求頭的,那么為什么在JMeter打開會(huì)仍然會(huì)提示呢?這里懷疑是微信故意留的坑或者是微信開發(fā)這個(gè)頁面的人英語四級(jí)沒過。
解決方案
經(jīng)過和我們程序猿哥哥陳丹明和陳建清一番討論,一開始沒有解決方案;此時(shí)丹明懷疑MicroMessenger這個(gè)單詞寫錯(cuò)了,應(yīng)該是:micromessage!一試,果然!
好吧,程序猿你贏了,看來懂英語是多么的重要。
最終解決
在HTTP請(qǐng)求頭里面將MicroMessenger修改成?micromessage。
?
小結(jié)
1、請(qǐng)?jiān)谖⑿趴蛻舳舜蜷_鏈接 這個(gè)問題困擾了我們很久,今天總算解決,完美解決;
2、感謝程序猿的大膽懷疑,給他們點(diǎn)贊;
3、自動(dòng)化測試過程中如果碰見了技術(shù)瓶頸,不妨多和研發(fā)溝通,他們總能給你一些指導(dǎo)。
轉(zhuǎn)載于:https://www.cnblogs.com/ai594ai/p/7886264.html
總結(jié)
以上是生活随笔為你收集整理的模拟微信接口时,提示“请在微信客户端打开链接”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FFmpeg在Linux下搭建 ***
- 下一篇: 时序逻辑电路二——数字逻辑实验