場景 假設一個手機頁面,開發者對其做了限制,導致只能在微信客戶端中打開。而眾所周知手機上非常不利於調試頁面,所以需要能在電腦上打開並進行調試。這裡針對常見的三種頁面做一下分析,一一繞過其限制,(當然不要拿去幹壞事) 工具準備 1、方便調試的瀏覽器。個人喜歡Chrome,本文基於Chrome 43.0.2357.130 (正式版本) m (32 位)環境; 2、抓包工具,推薦fiddler4,當然你比較喜歡Wireshark的話也可以,反正只要是能抓到cookies就都可以; 3、能編輯cookies的瀏覽器插件。Chrome下我推薦EditThisCookie,Firefox的話試用Firebug自帶的編輯功能即可。 繞過方法 這裡針對常見的三種限制方法做了分類(不過我感覺應該也沒有第四類了),其繞過方法難度也是逐漸遞增的。下文將從確認限制方法以及繞過限制兩個角度一一分析。 未做明顯限制 例子:翻滾吧小洛克
這種頁面最多,基本上就是相當於啥也沒做。 檢驗方法 手機裡其他瀏覽器也可以打開頁面並正常進行頁面瀏覽
這種頁面在PC上調試只需要開Chrome的模擬器即可。 繞過方法 1、Ctrl+Shift+I打開chrome的開發者中心 2、點擊開發者中心工具條右上角的手機小圖標,如圖: 3、如果發現不能模擬觸屏,則是因為設置裡沒開,點擊開發者中心工具條右上角的箭頭小圖標,然後Emulation>Sensors>Emulate touch screen ,將該選項勾上即可。如圖所示: 輕鬆過關。 檢查UA來限制 - user:duopaotestdada
- pwd:duopaotest
複製代碼檢測方法 手機瀏覽器打開後會跳轉到開發者自己的其餘頁面,或者有彈窗提示,但是不會跳到open.weixin.qq.com域名去。 看著這種就可以肯定十有八九是基於UA(UserAgent)檢測了。所以破解方法很簡單,模擬UA就好。chrome內置了這個功能。 繞過方法 1、開啟瀏覽器的模擬器(方法見上) 2、在模擬器右上角的UA處將以下UA貼進去並重新進入原頁面(不直接刷新是因為有些頁面會根據UA做跳轉) - Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; Chitanda/Akari) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/6.0.0.58_r884092.501 NetType/WIFI
複製代碼以上是安卓手機微信的UA,另附一個iOS下的UA: - Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12A365 MicroMessenger/5.4.1 NetType/WIFI
複製代碼一般情況下這兩個用處都一樣,沒啥區別,實際上根據大部分前端的習慣,哪怕UA裡只填一個MicroMessenger字段都是可以繞過去的。 3、上面的方法雖然可以繞過限制了,但是終究不方便,每次都要手動改一次UA。實際上較新版的Chrome瀏覽器是可以自定義Device的。點擊開發者中心右上角的齒輪圖標,然後Devices>Add custom device,即可自行添加一個帶微信UA的模擬器,然後之後在模擬器界面的Device裡切換即可。如圖: 利用微信oauth做限制 例子:拯救太平輪
由於上面的遊戲鏈接已經失效,所以換個頁面,類型一致,可供各位測試用:幸運大轉盤
上面兩種都是比較常見而且簡單就能繞過限制的,而有些對用戶身份驗證要求比較高的頁面,則會利用微信的OAUTH來拉取openid做驗證,這種就不僅僅是改UA這麼容易繞過去了。好在也不是無解。因為身份驗證一般都是存在cookies裡的,所以我們可以直接給PC模擬器偽造cookies來讓頁面誤以為我們是在微信內做的驗證。 PS:這裡是通用方法,不過目前針對微信內的頁面,微信官方有提供調試支持,可以查看更新的內容。 檢測方法 手機瀏覽器打開後會跳轉到open.weixin.qq.com域名,且頁面提示請在微信客戶端打開鏈接。
如圖: 繞過方法 將瀏覽器UA改為微信的,然後刷新頁面,會發現這個時候不再提示請在微信客戶端打開鏈接了,但是整個頁面一片空白。 打開fiddler,並設置手機wifi連接,確保手機數據都經過了fiddler。 fiddler的配置可以參考這篇文章,https的兩個配置必須要做,不然抓不了微信的包,另外如果確定手機連上了fiddler了但是微信的數據包都沒被抓到,可以先把微信app強行關閉,然後重新開一下即可 在微信裡點擊頁面鏈接,使其正常進入頁面,然後fiddler上注意相關域名的記錄,找到Tunnel to open.weixin.qq.com後面那條記錄。會發現這時候原來的鏈接帶上了oauth參數。複製這時候的鏈接
如圖: 在瀏覽器中打開前面複製的鏈接,會發現還是白屏,然後右鍵頁面,選擇EditThisCookies,會發現這個頁面下有兩條cookies了。 也可以在開發者工具的Resources>cookies>wxoauth.wucai.com裡查看當前頁面擁有的cookies數量。之所以前面不自己直接創建cookies就是因為cookies除了Value這個屬性外,還有Domain、Path、Expires/Max-Age等等其餘屬性需要設置,而這些屬性自己是摸不出來的,只能先依靠頁面服務器創建,然後直接更改Value即可。 回到fiddler,還是剛剛選擇的鏈接,右邊窗口選擇Headers,然後會看到下面有兩條cookies,以及對應的數值。選中一條,然後右鍵Copy Value only,將值複製到前面瀏覽器裡打開的EditThisCookies頁面中去。如圖: 需要的注意的是,這裡複製出來的是cookies名稱+cookies值的方式,而EditThisCookies裡只需要填cookies值即可,所以複製進去後記得將cookies
Name =這一部分刪掉。如下圖所示,綠框裡的PHPSESSID=是不需要的,刪掉即可。如圖: 重複第五步,將全部cookies值都改完之後,回到之前的瀏覽器頁面,輸入最初的主頁鏈接,成功。 在微信裡的話,認證頁面完成後一般是有跳轉的,不過由於這裡是手動更改的,所以沒辦法觸發跳轉,需要我們手動模擬一次。而前面的cookies在的緣故,頁面服務器也會當我們已經認證過,所以就直接跳過了。最後成功的截圖: 完成,看起來很複雜,其實也很簡單。個人感覺這個過程最麻煩的地方其實在於第2步:手機連fiddler需要先斷開之前的無線,手動輸一次代理設置到wifi,然後再連接下。所以我覺得現在最需要一個安卓下可以存儲wifi代理鏈接設置的工具= = 更新 更新於2015-10-12,針對第三種要openid驗證的頁面:
除了原先上文提到的抓包取cookies方法外,現在其實還有更簡單的辦法,利用微信官方的tbs調試。
最簡單的辦法就是安裝QQ瀏覽器最新版,然後利用內置的微信調試工具,可以省掉很多麻煩。具體步驟省略。 進去後有部分功能無法正常使用 有時候會發現即使頁面正常進去了,也有些功能不能觸發,比如上傳圖片之類的,但是瀏覽器也沒有報錯。這種情況下一般多是由於對方使用了微信的jssdk內置方法(wx.xx之類的)。因為微信內置的方法不是純webview可以完成的,很多功能都需要微信客戶端的配合,因此達不到預期的效果也是很正常的。可以看微信jssdk的官方demo,你會發現基本上沒一個可以在PC上用。
|