头图

找出APP的SchemeURL(抓取APP意图/intent)的常用方法

1. 什么是APP schemeURL

玩手机时经常会碰到浏览器里提示“是否打开某APP”,或者微信/QQ等应用里提醒“即将跳转到外部应用”,尤其是知乎/百度/CSDN等内容平台,不厌其烦的提示用户“在APP中打开”,其实不过是为了诱导用户下载其APP。

这种外部唤醒应用且能到达指定页面的方法,就是通过schemeURL实现的,在安卓开发中叫做intent,也就是脚本作者所说的“意图”。

具体可以看一下这篇文章的详细介绍:传送门

2. 如何查找某一APP的schemeURL

(1)WEB端

想找到某一应用的schemeURL,也就是intent,最简单粗暴的方法,就是打开会提示“是否打开某APP”的页面(一般就是个普通网页链接),右键查看页面源代码,里面就有包含scheme://字样的内容,这个结束对应的schemeURL了。

以抖音为例:

  1. APP端找到某人主页(作品也可以),点击分享,复制链接,再到浏览器打开此链接。
  2. 浏览器打开调试界面(F12),点击移动设备模式,勾选Preserve log(保留日志),再点击【关注】,具体位置见下图。
    截图示例
  3. 点击之后可以看到,Network栏出现了一个红色的请求,这个就是schemeURL的请求,功能是打开抖音APP并且关注该用户。
  4. 点进去看一下,可以看到URL是snssdk1128://user/profile/98726798113?refer=web&gd_label=click_wap_profile_follow&type=need_follow&needlaunchlog=1,这个是带有各种各样参数的schemeURL,如果只要这一个,那到这一步就完成了。
  5. 如果想找找有没有别的,可以在搜索面板或者请求列表中搜索这个URL:先在左侧点击一下那个红色URL,然后Ctrl+F,搜一下snssdk1128://(不能搜整条URL,因为URL里参数一般都是前端处理之后加上去的)
  6. 这里搜到两个结果,第一个是之前看到的红色URL,双击进入另一个查看。
  7. 点一下花括号{ }进行格式化,再点一下右侧代码区,才能Ctrl+F,一样的搜索snssdk1128://
  8. 结果如下图,各种参数都标记好了。
    搜索结果

(2)安卓端

  1. 反编译apk
  2. 打开AndroidManifest.xml,搜索scheme或者android.intent.action.VIEW
  3. 根据对应的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>
  4. 这里已经知道schemeURL是snssdk1128://了,就在反编译的内容里搜一下这个就能搜到所有的schemeURL了。
    搜索结果

(3) iPhone端

  1. 将下载下来的ipa文件(可以用爱思助手下载)直接解压
  2. 以抖音为例,进入目录\抖音短视频_7.7.0(正版)\Payload\Aweme.app\
  3. 打开Info.plist文件
  4. 搜索CFBundleURLName,其中<string>里就是对应的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>

总结

要找一个APP的schemeURL,可以按一下顺序尝试:

  1. 先看有没有什么分享链接是会唤起App的,如果有,直接参照(1)来查找暴露的schemeURL(一般都会带拼接好的参数);
  2. 如果没有WEB端,就参考(2)进行反编译来查找schemeURL(参数要自己拼凑尝试了)
  3. 如果上面两步没有成功,只能通过iOS端进行查找schemeURL(只有一个开头,也就是只能唤醒APP,无法到达指定页面)

补充

通过xposed框架也可以抓取非普通schemeURL的intent和参数。

除了普通schemeURL外,APP还有一种跳转方法,并没有使用schemeURL,只是内部activity跳转,有时候脚本开发也会很需要。

一次APP算法解密时偶然发现,通过xposed的hook插件inspackage可以查看activity跳转,包括所带参数。虽然并未具体测试可用性,但确确实实跳转记录和参数都有了,估计也是可以用的。

以下xposed插件也是类似的(未测试):

  1. 隐式启动
  2. intent记录
  3. Intent拦截者

各种开发工具使用schemeURL或intent的方法见另一篇文章

业余爱好

41 声望
46 粉丝
0 条评论
推荐阅读
frida-rpc实现某一短视频刷邀请
之前发过一篇文章,app升级算法之后还没来得及更新,文章就被举报404了,悲哀,今天更新写一下新版,这里就不贴源码了,文章最后放github,需要自取,我看老六还怎么举报。

二毛erma0阅读 875评论 1

如何用3D流体实现逼真水流效果?
华为应用市场在2022年HDC大会期间发布了一款3D水流主题,基于华为HMS Core Scene Kit服务能力,展现立体灵动的水流岛屿,可跟随用户指尖实现实时流体波动效果,既趣味又解压。

HMSCore1阅读 2.2k

安卓逆向之破解某成人APP播放次数限制
某成人水果APP非VIP用户存在播放次数限制,每天只能播放3次。超过3次需要购买VIP。 由于过于贫穷,于是抽空,对其安卓APP进行了逆向分析,最终成功破解了其播放次数限制。

悖论2阅读 451

封面图
如何满速下载百度网盘文件
在我们开心的网上冲浪时,经常会遇到某些资源是用百度网盘储存的,而百度网盘的下载速度经常是1MB以下、几十K、几百K,令人十分着急!!突然,一个 微信公众号 自称软件小妹的大佬出现了,直接为我们带来了一个 油...

小红石1阅读 5.9k

封面图
Android桌面图标快捷方式
长按桌面图标实现快捷方式最早是iOS提供的功能,而Android最早在Android 7.1版本也提供了对这方面的支持,于是在短时间内,像微信,支付宝,头条等流量级应用都提供了这方面的支持,如下图。 

xiangzhihong3阅读 627评论 2

2022 年终总结|致敬即将过去的,匆忙而又虐心的一年...
本文参与了 SegmentFault 思否年度征文「一名技术人的 2022」,欢迎正在阅读的你也加入。 时间,总是过的这么快,快得让人猝不及防,眨眼又是一年的末...似乎儿时的文章中,对于时间的流逝,描述的最多的便是:白...

贺biubiu1阅读 1.2k

封面图
读懂 gradle dependencies
不过在使用 dependencies 时有一些细节之前一直没有搞清楚,遂研究了一下部分细节。本文整体参考 gradle 官方文档,大家感兴趣也可以自己深入研究下。

云音乐技术团队1阅读 489

封面图

业余爱好

41 声望
46 粉丝
宣传栏