1. 程式人生 > >完美解決 請在微信客戶端開啟連結

完美解決 請在微信客戶端開啟連結

背景描述

-w272
相信有模擬微信頁面請求的測試都有看到過這個頁面,簡單點說就是爬蟲爬微信頁面,進行回放的時候會出現這個頁面。大概在1年前,專門安排了一個人去解決這個技術問題,遺憾的是當時沒有找到解決方案,接下來所有微信端的介面測試和效能測試都無法進行,今天和大家分享下我們的解決方案,希望大家可以繞過微信的坑。

業務場景

我這裡以JMeter來舉例,我們可以通過在JMeter上開啟代理,手機上設定代理來錄製微信端的請求,以下為在微信端的業務對應生成的指令碼:

-w800

錄製完成後,我們進行回放,你會發現在檢視結果樹中,會重定向到微信授權,接著就開始提示:請在微信客戶端開啟連結。

-w800

這裡補充幾個錄製的小技巧

-w800
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:

-w800

錄製的時候自動添加了錄製HTTP請求頭的,那麼為什麼在JMeter開啟會仍然會提示呢?這裡懷疑是微信故意留的坑或者是微信開發這個頁面的人英語四級沒過。

解決方案

經過和我們程式猿哥哥陳丹明陳建清一番討論,一開始沒有解決方案;此時丹明

懷疑MicroMessenger這個單詞寫錯了,應該是:micromessage!一試,果然!
好吧,程式猿你贏了,看來懂英語是多麼的重要。

最終解決

在HTTP請求頭裡面將MicroMessenger修改成 micromessage

-w800

小結

1、請在微信客戶端開啟連結 這個問題困擾了我們很久,今天總算解決,完美解決;
2、感謝程式猿的大膽懷疑,給他們點贊;
3、自動化測試過程中如果碰見了技術瓶頸,不妨多和研發溝通,他們總能給你一些指導。

Note:

1、單純的訪問頁面,則修改成:micromessage就好;
2、在訪問頁面之前需要進行授權登入,則需要和開發溝通下具體的業務邏輯

3.、是將MicroMessenger替換成micromessage

相關推薦

完美解決 客戶開啟連結

背景描述 相信有模擬微信頁面請求的測試都有看到過這個頁面,簡單點說就是爬蟲爬微信頁面,進行回放的時候會出現這個頁面。大概在1年前,專門安排了一個人去解決這個技術問題,遺憾的是當時沒有找到解決方案,接下來所有微信端的介面測試和效能測試都無法進行,今天和大家分享下

客戶開啟連結解決方案

當我們將微信頁面地址複製到電腦自帶的瀏覽器上開啟時候就會提示“請在微信客戶端開啟連結”如圖所示:   百度上很多都是告訴我們用什麼抓包工具破解什麼的,結果呢沒 luan用!這給我們開發人員除錯帶來了諸多不便。下面我教大家如何解決: 1.下載微信開發者工具:微信開發者工具(

限制網頁僅可在客戶開啟

function is_weixn(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromessenger") {//這就是微信用的內建瀏覽器

php識別客戶 並且使用html靜態頁面引導使用者使用瀏覽器開啟這個頁面

            if(strstr($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger/')){       

模擬接口時,提示“客戶打開鏈接”(轉)

我們 ima tex 點贊 nav 一次 mbo 請求 現在 背景描述 相信有模擬微信頁面請求的測試都有看到過這個頁面,簡單點說就是爬蟲爬微信頁面,進行回放的時候會出現這個頁面。大概在1年前,專門安排了一個人去解決這個技術問題,遺憾的是當時沒有找到解決方案,接下來所有

客戶<->騰訊服務器<->開發者服務器

生成 格式 一個 csdn 開發 token 增加 tro 記錄 出自 http://blog.csdn.net/hanjingjava/article/details/41653113 首先,通過Token驗證,將公眾號接入開發者服務器,這樣客戶端發給公眾號的信息會被

在Linux中使用客戶

release 應用 windows amp mar nod one 平臺 ins 微信推出了Windows版和Mac版,一直沒有推出也不會推出Linux版本,這就催生了Electronic WeChat。 Electronic WeChat使用Electron(http

canvas跨域完美解決頭像解決跨域

現在前端技術發展的越來越快,很多圖片合成這種耗費伺服器效能的,都可以移動到前端進行了合成了。而且合成很方便,我們利用 canvas 可以實現好多東西。 自動打算利用前端來合成圖片,在網上就找到了 html2canvas,大家可以試試,很簡單。 前端 canvas 經常會遇到 『圖片跨域』 的問題

html5手機瀏覽器啟動客戶支付例項

html5手機瀏覽器啟動微信客戶端支付例項,外部瀏覽器html5微信支付技術,如何在手機瀏覽器微信支付,在微信客戶端外的移動端網頁使用微信支付     首先在微信支付官網https://pay.weixin.qq.com/【我的產品】申請h5支付,免費申請的哦,很快就可以下

客戶sdk使用前的 授權簽名

http://1017401036.iteye.com/blog/2263358  微信的JS-SDK通過config介面注入許可權驗證配置,官網上的文件說的很清楚: wx.config({ debug: true, // 開啟除錯模式,呼叫的所有api的返回值會在客戶端alert出來,若要檢視傳

客戶的授權

注意: 1. 需要在微信客戶端開啟連結            2. 需要微信公眾號的測試賬號 1. java 實現微信公眾號授權步驟. http://blog.csdn.net/stardreamworkstation/arti

Java後臺與公眾號互動----接收並處理客戶傳送的請求

還是一樣,理論就不說了,直接上程式碼! 在進行這個操作之前,必須得與微信客戶端進行比對成功才行,具體可參考上一篇部落格。 doGet()是上一篇部落格已經說了的,在這裡就不詳細說了。 public class WeChatServlet extends HttpServlet { /

JS判斷當前頁面是在 QQ客戶/客戶/iOS瀏覽器/Android瀏覽器/PC客戶

browser.js var browser = { versions: function () { var u = navigator.userAgent, app = navigator.appVersion; return { //移動終端瀏覽器版本資訊 trident: u.

客戶跨域分享iframe內的內容

1、首先要保證有這兩個網站的修改許可權2、應用場景:A站可以通過微信直接分享,B站沒有申請相關許可權,B站作為iframe源,我們通過A站去分享B站的內容3、在A站iframe所在頁面加入以下指令碼,並且引用jquery.base64var title=null;$.base

客戶利用百度地圖定位獲取位置資訊

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html

繞過客戶授權,獲取網頁原始碼

首先有人寫出來一個比較不錯的例子,我先貼出來 http://chitanda.me/2015/06/29/debug-wechat-website-in-pc/ 本來想直接連結文字的,結果發現MarkDown這種模式沒找到 但是別人講的情況都是非常基礎的情況,

java request判斷是否是客戶訪問

微信客戶端訪問時候user-agent資訊如下:Mozilla/5.0 (Linux; Android 5.0.1; M040 Build/LRX22C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37

ios客戶中聲音無法播放

html中audio標籤<audio src="http://wx.masrbs.com/Addons/HFive/View/default/Public/music/flipsound.mp3" id="Jaudio" class="media-audio" prel

開發本地調試工具(模擬客戶

con strong 分享圖片 blank width -s 公眾賬號 希望 aid 微信開發本地調試工具(模擬微信客戶端) 開源免費微信管家系統(java)源碼下載 微信部署需要依靠80端口,如何快速有效的調試

h5如何使用work.weixin.qq.com喚起客戶app打開任意url接口api代碼?

qpi 分享 想要 url clas ng- app bcd cor work.weixin.qq.com 是企業微信的接口,需要調用openID來跳轉微信打開制定的連接。代碼模型 vip.wxticket.com 添加自建應用 登錄企業微信管理端 -> 應用與小程