1. 程式人生 > >【微信】繞過限制,在PC上除錯微信投票頁、砍價頁

【微信】繞過限制,在PC上除錯微信投票頁、砍價頁



場景

假設一個手機頁面,開發者對其做了限制,導致只能在微信客戶端中開啟。而眾所周知手機上非常不利於除錯頁面,所以需要能在電腦上開啟並進行除錯。這裡針對常見的三種頁面做一下分析,一一繞過其限制,(當然不要拿去幹壞事)

工具準備

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來限制

例子:多泡遊戲-doNotTouchWhite
由於這個站點遊戲需要登入,所以放個公共號測試用,勿濫用。

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欄位都是可以繞過去的。

1. 上面的方法雖然可以繞過限制了,但是終究不方便,每次都要手動改一次UA。實際上較新版的Chrome瀏覽器是可以自定義Device的。點選開發者中心右上角的齒輪圖示,然後Devices>Add custom device,即可自行新增一個帶微信UA的模擬器,然後之後在模擬器介面的Device裡切換即可。如圖:

利用微信oauth做限制

例子:拯救太平輪
上面兩種都是比較常見而且簡單就能繞過限制的,而有些對使用者身份驗證要求比較高的頁面,則會利用微信的OAUTH來拉取openid做驗證,這種就不僅僅是改UA這麼容易繞過去了。好在也不是無解。因為身份驗證一般都是存在cookies裡的,所以我們可以直接給PC模擬器偽造cookies來讓頁面誤以為我們是在微信內做的驗證。

檢測方法

手機瀏覽器開啟後會跳轉到open.weixin.qq.com域名,且頁面提示請在微信客戶端開啟連結.
如圖:

繞過方法

1. 將瀏覽器UA改為微信的,然後重新整理頁面,會發現這個時候不再提示請在微信客戶端開啟連結了,但是整個頁面一片空白。

2. 開啟fiddler,並設定手機wifi連線,確保手機資料都經過了fiddler。

fiddler的配置可以參考這篇文章,https的兩個配置必須要做,不然抓不了微信的包,另外如果確定手機連上了fiddler了但是微信的資料包都沒被抓到,可以先把微信app強行關閉,然後重新開一下即可

3. 在微信裡點選頁面連結,使其正常進入頁面,然後fiddler上注意相關域名的記錄,找到Tunnel to open.weixin.qq.com後面那條記錄。會發現這時候原來的連結帶上了oauth引數。複製這時候的連結
如圖:

1. 在瀏覽器中開啟前面複製的連結,會發現還是白屏,然後右鍵頁面,選擇EditThisCookies,會發現這個頁面下有兩條cookies了。也可以在開發者工具的Resources>cookies>wxoauth.wucai.com裡檢視當前頁面擁有的cookies數量。之所以前面不自己直接建立cookies就是因為cookies除了Value這個屬性外,還有Domain、Path、Expires/Max-Age等等其餘屬性需要設定,而這些屬性自己是摸不出來的,只能先依靠頁面伺服器建立,然後直接更改Value即可。

2. 回到fiddler,還是剛剛選擇的連結,右邊視窗選擇Headers,然後會看到下面有兩條cookies,以及對應的數值。選中一條,然後右鍵Copy Value only,將值複製到前面瀏覽器裡開啟的EditThisCookies頁面中去。如圖:

需要的注意的是,這裡複製出來的是cookies名稱+cookies值的方式,而EditThisCookies裡只需要填cookies值即可,所以複製進去後記得將cookies Name =這一部分刪掉。如下圖所示,綠框裡的PHPSESSID=是不需要的,刪掉即可.如圖:

3. 重複第五步,將全部cookies值都改完之後,回到之前的瀏覽器頁面,輸入最初的主頁連結,成功。

在微信裡的話,認證頁面完成後一般是有跳轉的,不過由於這裡是手動更改的,所以沒辦法觸發跳轉,需要我們手動模擬一次。而前面的cookies在的緣故,頁面伺服器也會當我們已經認證過,所以就直接跳過了。最後成功的截圖:

完成,看起來很複雜,其實也很簡單。個人感覺這個過程最麻煩的地方其實在於第2步:手機連fiddler需要先斷開之前的無線,手動輸一次代理設定到wifi,然後再連線下。所以我覺得現在最需要一個安卓下可以儲存wifi代理連結設定的工具= =

進去後有部分功能無法正常使用

有時候會發現即使頁面正常進去了,也有些功能不能觸發,比如上傳圖片之類的,但是瀏覽器也沒有報錯。這種情況下一般多是由於對方使用了微信的jssdk內建方法(wx.xx之類的)。因為微信內建的方法不是純webview可以完成的,很多功能都需要微信客戶端的配合,因此達不到預期的效果也是很正常的。可以看微信jssdk的官方demo,你會發現基本上沒一個可以在PC上用。

場景

假設一個手機頁面,開發者對其做了限制,導致只能在微信客戶端中開啟。而眾所周知手機上非常不利於除錯頁面,所以需要能在電腦上開啟並進行除錯。這裡針對常見的三種頁面做一下分析,一一繞過其限制,(當然不要拿去幹壞事)

工具準備

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來限制

例子:多泡遊戲-doNotTouchWhite
由於這個站點遊戲需要登入,所以放個公共號測試用,勿濫用。

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欄位都是可以繞過去的。

1. 上面的方法雖然可以繞過限制了,但是終究不方便,每次都要手動改一次UA。實際上較新版的Chrome瀏覽器是可以自定義Device的。點選開發者中心右上角的齒輪圖示,然後Devices>Add custom device,即可自行新增一個帶微信UA的模擬器,然後之後在模擬器介面的Device裡切換即可。如圖:

利用微信oauth做限制

例子:拯救太平輪
上面兩種都是比較常見而且簡單就能繞過限制的,而有些對使用者身份驗證要求比較高的頁面,則會利用微信的OAUTH來拉取openid做驗證,這種就不僅僅是改UA這麼容易繞過去了。好在也不是無解。因為身份驗證一般都是存在cookies裡的,所以我們可以直接給PC模擬器偽造cookies來讓頁面誤以為我們是在微信內做的驗證。

檢測方法

手機瀏覽器開啟後會跳轉到open.weixin.qq.com域名,且頁面提示請在微信客戶端開啟連結.
如圖:

繞過方法

1. 將瀏覽器UA改為微信的,然後重新整理頁面,會發現這個時候不再提示請在微信客戶端開啟連結了,但是整個頁面一片空白。

2. 開啟fiddler,並設定手機wifi連線,確保手機資料都經過了fiddler。

fiddler的配置可以參考這篇文章,https的兩個配置必須要做,不然抓不了微信的包,另外如果確定手機連上了fiddler了但是微信的資料包都沒被抓到,可以先把微信app強行關閉,然後重新開一下即可

3. 在微信裡點選頁面連結,使其正常進入頁面,然後fiddler上注意相關域名的記錄,找到Tunnel to open.weixin.qq.com後面那條記錄。會發現這時候原來的連結帶上了oauth引數。複製這時候的連結
如圖:

1. 在瀏覽器中開啟前面複製的連結,會發現還是白屏,然後右鍵頁面,選擇EditThisCookies,會發現這個頁面下有兩條cookies了。也可以在開發者工具的Resources>cookies>wxoauth.wucai.com裡檢視當前頁面擁有的cookies數量。之所以前面不自己直接建立cookies就是因為cookies除了Value這個屬性外,還有Domain、Path、Expires/Max-Age等等其餘屬性需要設定,而這些屬性自己是摸不出來的,只能先依靠頁面伺服器建立,然後直接更改Value即可。

2. 回到fiddler,還是剛剛選擇的連結,右邊視窗選擇Headers,然後會看到下面有兩條cookies,以及對應的數值。選中一條,然後右鍵Copy Value only,將值複製到前面瀏覽器裡開啟的EditThisCookies頁面中去。如圖:

需要的注意的是,這裡複製出來的是cookies名稱+cookies值的方式,而EditThisCookies裡只需要填cookies值即可,所以複製進去後記得將cookies Name =這一部分刪掉。如下圖所示,綠框裡的PHPSESSID=是不需要的,刪掉即可.如圖:

3. 重複第五步,將全部cookies值都改完之後,回到之前的瀏覽器頁面,輸入最初的主頁連結,成功。

在微信裡的話,認證頁面完成後一般是有跳轉的,不過由於這裡是手動更改的,所以沒辦法觸發跳轉,需要我們手動模擬一次。而前面的cookies在的緣故,頁面伺服器也會當我們已經認證過,所以就直接跳過了。最後成功的截圖:

完成,看起來很複雜,其實也很簡單。個人感覺這個過程最麻煩的地方其實在於第2步:手機連fiddler需要先斷開之前的無線,手動輸一次代理設定到wifi,然後再連線下。所以我覺得現在最需要一個安卓下可以儲存wifi代理連結設定的工具= =

進去後有部分功能無法正常使用

有時候會發現即使頁面正常進去了,也有些功能不能觸發,比如上傳圖片之類的,但是瀏覽器也沒有報錯。這種情況下一般多是由於對方使用了微信的jssdk內建方法(wx.xx之類的)。因為微信內建的方法不是純webview可以完成的,很多功能都需要微信客戶端的配合,因此達不到預期的效果也是很正常的。可以看微信jssdk的官方demo,你會發現基本上沒一個可以在PC上用。