利用網路劫持解決微信遠端真機除錯Api問題
背景
雖然微信提供了開發者工具,可以滿足大部分除錯需求,但遇到如微信支付、微信掃碼等類似介面時,我們不得不使用真機來除錯。
問題
因為只有被微信後臺設為信任的域名才能被微信正確驗證簽名。
我們只需要將被信任的域名解析為開發機的Ip地址,並將路由設定NAT轉發80埠(因為微信被信任域名不允許加埠號)。
大家都知道,國內的80埠一般是被封掉的,所以就算域名解析到開發機的Ip地址,我們也不能正常訪問該域名。
常見解決方案較為複雜如下:
1、將程式碼打包並部署到能訪問80埠的外網伺服器。
2、使用第三方內網穿透服務,安裝客戶端,並將本機某個埠對映到三方伺服器,三方伺服器提供一個可訪問80埠的域名做跳轉。
但以上處理方式部署方式過於複雜,除錯起來過於麻煩,如想採用以上方法請網上搜索相關設定,資料較多,這裡不多做介紹。
本文筆者介紹一種更為便捷的解決方案。
相關工具
1、網路代理工具:微信開發者工具
2、hosts:windows 和 MAC 都有這個檔案,具體在哪,網路查一下就知道。
解決方案
1、我們在手機設定代理地址為你的開發機的ip地址,讓手機的所有資料包都經過開發機。
2、我們修改hosts記錄,把被微信信任的域名(如:YouDomainName.com)新增到hosts文字檔案中劫持為你的開發機地址。
這樣你在手機訪問YouDomainName.com時,由於設定了代理
因為YouDomainName.com是被微信信任的,所以在微信中訪問YouDomainName.com是可以正常簽名的。
就這樣,你正常開啟IDE並執行web伺服器,即可邊開發邊真機除錯。
注意
1、務必保持手機wifi與開發機在同一個區域網內並能內網互通。
2、筆者在高版本的微信開發者工具中沒有找到“移動除錯”的選項卡,所以無法開啟網路代理工具,但可以使用 spy-debugger 這個工具更好的替代。
設定截圖
1、微信開發者工具
2、hosts