微信做爲流量爸爸,若是能從微信引流到本身的平臺,想一想就開心啊!!! 微信引流的一種方式:經過手機瀏覽器打開某一網址,而後啓動微信,並跳轉到微信頁面。 下面分享下調研方案:php
連接是個微博短鏈: t.cn/RTqAzl8。 放瀏覽器裏訪問,解析出完整的地址:r.jpwx.kim/wb/0e7d5195… 打開Web調試器看了下,頁面中除了百度統計代碼外,核心代碼以下:html
if (!/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent) && / baiduboxapp/i.test(navigator.userAgent)) {
window.location.replace('bdbox://utils?action=sendIntent&minver=7.4¶ms=%7B%22intent%22%3A%22weixin%3A%2F%2Fdl%2Fbusiness%2F%3Fticket%3Dt59a2235a3662135bfb0e8f7edccc22c5%23wechat_redirect%23wechat_redirect%23Intent%3Bend%22%7D');
} else {
window.location.replace('weixin://dl/business/?ticket=t59a2235a3662135bfb0e8f7edccc22c5#wechat_redirect#wechat_redirect');
}
setTimeout(function() {
document.getElementById("loading").style.display = "none";
},3000);
複製代碼
以上代碼的邏輯是:判斷不是蘋果的設備,而且訪問 UA 中包含 baiduboxapp 字符,修改頁面鏈接爲:web
bdbox://utils?action=sendIntent&minver=7.4¶ms=%7B%22intent%22%3A%22weixin%3A%2F%2Fdl%2Fbusiness%2F%3Fticket%3Dt59a2235a3662135bfb0e8f7edccc22c5%23wechat_redirect%23wechat_redirect%23Intent%3Bend%22%7D
複製代碼
不然修改頁面鏈接爲:api
weixin://dl/business/?ticket=t59a2235a3662135bfb0e8f7edccc22c5#wechat_redirect#wechat_redirect
複製代碼
由於主要是研究微信喚起,先不看 baiduboxapp,直接看微信喚起短鏈 weixin://dl/business
,谷歌搜索下發現是微信第三方公衆號臨時會話接口。這是一個內部的隱藏接口。連接中看到短鏈有個 ticket 參數,多刷新幾回頁面,ticket 參數會發生變化,可是喚起頁面的鏈接沒有變。 如今關鍵點成了怎麼根據本身的頁面生成合法的 ticket 參數。瀏覽器
在想怎麼生成 ticket 的時候,天然會想到微信是如何解析這個參數的,看看能不能從解析的邏輯中反推出生成的邏輯。 找了客戶端的同事,反編譯安卓微信客戶端,發現客戶端裏的邏輯很簡單,拿到短鏈後,直接傳遞給微信服務器,服務器就返回了 真實的訪問地址。安全
https://open.weixin.qq.com/sns/webview?url=http%3A%2F%2Fun.m.jd.com%2Fcgi-bin%2Fapp%2Fappjmp%3Fto%3Dp.imtt.qq.com%252fh%253fd%253d7%2526b%253dtrade%2526type%253dsite%2526id%253d4061%2526u%253d%252568%252574%252574%252570%25253a%25252f%25252fvip.3.js.cn%252Fyyzs87.php%253Fticket%253D6148523063446f764c3364344c6d707764336775636d566b4c3364344c7a426c4e3251314d546b314f47466a4e7a6b314e5464694e57566a59575a6a4e546779595749324d6d51774c6d68306257772f644430784e54457a4d4451334d7a4d7a%2526from%253dshare%2526bid%253d13276%2526pid%253d1226104-1438221658%2526_wv%253d1027%2526sid%253dfavewofji%2526type%253d3%2526rnd%253d0.8738031948450953&appid=wxae3e8056daea8727&ts=1513047962&nonce=rjWsn6jYHv&sig=1c3d50cc9b948b2736398e1c1c66c32a&key=ad88abc27c4d295460ca3b05b7ed7a9a723ec81fbdb1e45386946920883a470f9b6e90cd75da4f05b8394a798f4b9446e673410a32c660224c93802cc47f427aa043de1c15cde5463ce4ad0ee5fecdd0&uin=MzY5MDEwNDExNQ%3D%3D&scene=0&version=26050839&pass_ticket=hKkz2FEs91MHFXEbW0vcmXwsfnKdDGqmvpQ1GG0cIYlqNFr5OcrssuH8DwD%2FSFmW
複製代碼
後面就是微信內置 webview 瀏覽器訪問這個地址,解析出最後的落地頁 http://uatv2.tcwx.i-mybest.com/qrimg/mmj2.html
bash
ticket解析訪問地址全在服務端,分析不出來什麼東西。 只能從微信服務器返回的連接看下有沒有什麼有用的信息。 從 https://open.weixin.qq.com/sns/webview***
到 http://uatv2.tcwx.i-mybest.com/qrimg/mmj2.html
中間轉換了好幾回。服務器
好了,這樣整個流程都通了。微信
本身拼一個連接測試一下,經過京東的連接跳轉到微信: http://un.m.jd.com/cgi-bin/app/appjmp?to=p.imtt.qq.com%2Fh%3Fd%3D7%26b%3Dtrade%26type%3Dsite%26id%3D4061%26u%3Dhttp%3A%2F%2Fwww.baidu.com
網絡
如今關鍵問題是京東開發平臺生成 weixin://dl/business/?ticket= 鏈接的時候有個白名單機制,嘗試了幾種鏈接,都沒法經過白名單驗證。找了一個京東雲服務平臺的諮詢,獲得的答覆是喚起微信的接口,如今被人惡意調用,存在很大的安全風險,京東內部已經創建了白名單和黑名單的機制,打擊惡意調用行爲,不接受也不會透露白名單。
後續
前面搜索相關內容的時候還查到 51萬年曆,陌陌,招商銀行都有生成 weixin://dl/business/?ticket= 鏈接的服務。想到既然京東的接口是 手Q 給的,那 手Q 本身必然也有接口權限,而且應該會有其餘相似京東的合做客戶會有權限,像前面幾家公司。後面運營又給了幾個鏈接,解析出來的地址是 app.game.qq.com 域名下的,確認了前面的猜測。