已遷移平臺(tái):segmentfault,搜索 erma0
換平臺(tái)了,簡(jiǎn)書(shū)發(fā)什么都鎖定,廣告一堆,趁早倒閉吧。

今日壁紙
溫馨提示:先看文末<a href="#總結(jié)">總結(jié)</a>或先看(3)WEB端
<a href="#第一段的錨點(diǎn)名稱">第一段標(biāo)題</a>
<a name="第一段的錨點(diǎn)名稱">第一段標(biāo)題</a>
什么是APP URL scheme
玩手機(jī)經(jīng)常會(huì)碰到瀏覽器里提示即將跳轉(zhuǎn)到某APP,或者微信里提醒即將打開(kāi)某APP,這其中的原理,一般就是通過(guò)URL scheme實(shí)現(xiàn)的。
具體可以看一下這篇文章的詳細(xì)介紹:傳送門
如何查找某一APP的URL scheme
(1) iPhone
- 將下載下來(lái)的ipa文件(可以用愛(ài)思助手下載)直接解壓
- 以抖音為例,進(jìn)入目錄
\抖音短視頻_7.7.0(正版)\Payload\Aweme.app\ - 打開(kāi)
Info.plist文件 - 搜索
CFBundleURLName,其中<string>里就是對(duì)應(yīng)的scheme,比如抖音的就是snssdk1128://
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>com.ss.iphone.ugc.Aweme</string>
<key>CFBundleURLSchemes</key>
<array>
<string>snssdk1128</string>
</array>
</dict>
(2)安卓
- 反編譯apk
- 打開(kāi)
AndroidManifest.xml,搜索scheme或者android.intent.action.VIEW - 根據(jù)對(duì)應(yīng)的Activity名稱
aweme,可以定位到:
<activity android:launchMode="singleTask" android:name="com.ss.android.ugc.aweme.app.DeepLinkHandlerActivity" android:noHistory="true" android:screenOrientation="portrait" android:theme="@style/t">
<intent-filter>
<action android:name="com.ss.android.sdk.snssdk1128"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="snssdk1128"/>
</intent-filter>
</activity>
- 這里已經(jīng)知道scheme是
snssdk1128://了,就在反編譯的內(nèi)容里搜一下這個(gè)就能搜到所有的URL scheme了(帶參數(shù)的哦)
搜索結(jié)果
(3)WEB端
最簡(jiǎn)單、粗暴的方法就是,拿到你發(fā)現(xiàn)的會(huì)提示“即將打開(kāi)某APP”的頁(yè)面(一般就是個(gè)普通URL),檢查頁(yè)面源代碼,里面就有scheme://,比如下面找抖音的一下URL scheme。
- 打開(kāi)分享頁(yè)面
-
設(shè)置手機(jī)端UA,,勾選Preserve log(保留日志),再點(diǎn)擊【關(guān)注】截圖示例
- 可以看到,Network欄出現(xiàn)了一個(gè)紅色的請(qǐng)求,這個(gè)就是URL scheme的請(qǐng)求,是要打開(kāi)抖音APP并且關(guān)注該用戶
- 點(diǎn)進(jìn)去看,得到全部URL是
snssdk1128://user/profile/98726798113?refer=web&gd_label=click_wap_profile_follow&type=need_follow&needlaunchlog=1 - 然后就可以搜索這個(gè)URL了,先在左側(cè)點(diǎn)擊一下那個(gè)紅色URL,然后Ctrl+F,搜一下
snssdk1128://(不能搜整條URL,因?yàn)閁RL里參數(shù)都是前端處理之后加上去的) - 搜到兩個(gè)結(jié)果,第一個(gè)是之前看到的紅色URL,那應(yīng)該就是另一個(gè),雙擊進(jìn)入
- 點(diǎn)一下花括號(hào)
{ }進(jìn)行格式化,再點(diǎn)一下右側(cè)代碼區(qū),才能Ctrl+F,一樣的搜索snssdk1128:// -
結(jié)果如圖:搜索結(jié)果
<a name="總結(jié)">總結(jié)</a>
總的來(lái)說(shuō),要找一個(gè)APP的URL scheme,可以按一下順序嘗試:
- 先看有沒(méi)有什么分享鏈接是會(huì)喚起App的,如果有,直接參照(3)來(lái)查找暴露的scheme(一般都會(huì)帶拼接好的參數(shù));
- 如果沒(méi)有WEB端,就參考(2)進(jìn)行反編譯來(lái)查找scheme(參數(shù)要自己拼湊嘗試了)
- 如果上面兩步?jīng)]有成功,只能通過(guò)iOS端進(jìn)行查找scheme(只要一個(gè)開(kāi)頭,也就是只能喚醒APP)
補(bǔ)充
- 隱式啟動(dòng)APP
- intent記錄APP
- Intent攔截者APP
原理是通過(guò)xposed框架查找intent及參數(shù),未測(cè)試。


