2026全网最全APP URL Scheme逆向提取实战手册:从F12调试到Intent拦截的完整技术链路

281 阅读8分钟

大家好,我是白帽攻防录的白帽K。

在移动端混合开发、自动化测试、引流跳转等场景中,URL Scheme 是打通 H5 与 Native 的"万能钥匙"。本文基于真实逆向案例,系统梳理了获取 APP URL Scheme 的 5 大技术手段,并汇总了涵盖银行、电商、社交、短视频、办公等 10 余个领域的 200+ 条实战 Scheme,附带 Android/iOS 双端差异对比。

一、URL Scheme 是什么?为什么值得深入研究?

URL Scheme 是移动操作系统提供的一种进程间通信(IPC)机制,允许一个应用通过特定格式的 URL 唤起另一个应用并传递参数。其标准格式为:

scheme://host/path?query=params

例如:

weixin://dl/officialaccounts?username=csdn

在以下场景中,URL Scheme 是不可或缺的技术基础设施:

应用场景技术价值
H5 引流唤醒从浏览器/微信直接跳转到 APP 指定页面
自动化测试通过脚本直接唤起被测页面,绕过繁琐的 UI 操作
混合开发React Native / Flutter 与原生页面的桥接通信
银行聚合支付收银台一键唤起各行手机银行完成转账
小程序跳转url scheme 是微信小程序开放能力的重要补充

然而,官方文档往往只暴露极少量 Scheme,大量内部页面参数属于"黑盒"。本文将带你掌握逆向提取的核心技巧。


二、获取 URL Scheme 的五大实战技巧

技巧 1:F12 控制台 + 设备仿真(零门槛)

适用场景:H5 页面内嵌了唤起 APP 的逻辑。

操作步骤

  1. Chrome DevTools 打开目标 H5 页面

  2. 开启 设备仿真(Device Toolbar)

  3. 点击页面上的"打开 APP"按钮

  4. 查看 Console 面板,通常会抛出类似错误:

    Failed to launch 'taobao://m.taobao.com/...' because the scheme does not have a registered handler.
    
  5. 报错信息中即包含完整的 Scheme 链接

进阶:在 Network 面板过滤 intent://scheme= 关键字,可捕获隐式跳转请求。


技巧 2:隐式 Intent 日志抓取(Android)

适用场景:Android APP 内部通过 Intent 进行页面路由。

原理:许多 APP 内部并非直接使用 Scheme,而是通过 Intentactiondata 字段进行分发。我们可以利用系统日志反推 Scheme。

操作步骤

# 连接设备,清空日志
adb logcat -c
# 过滤 Intent 相关日志
adb logcat | grep -i "intent|scheme|activitymanager"
# 在 APP 内执行目标操作,观察日志输出

典型案例:某电商 APP 的商品详情页,日志中会出现:

I/ActivityManager: START u0 {act=android.intent.action.VIEW dat=snssdk1128://goods/detail?id=123456}

技巧 3:Intent 拦截器(免 Root)

工具推荐Intent Intercept(开源工具,Google Play 可下载)

原理:注册为所有 Intent 的接收者,当其他 APP 发起隐式调用时,拦截并展示完整的 actiondatacategoryextras

使用流程

  1. 安装 Intent Intercept
  2. 在目标 APP 内执行跳转操作
  3. 系统弹出"选择打开方式" → 选择 Intent Intercept
  4. 查看解析出的完整 URI 和参数

技巧 4:Xposed 框架 Hook 路由层(高阶)

适用场景:Scheme 被加密、动态拼接,或经过 Native 层(SO 库)处理。

Hook 点选择

  • android.app.Activity.startActivity(Intent)
  • android.net.Uri.parse(String)
  • 各 APP 自研路由库(如阿里 ARouter、美团 WMRouter)的 navigation 方法

示例代码片段

XposedHelpers.findAndHookMethod("android.app.Activity", lpparam.classLoader,
    "startActivity", Intent.class, new XC_MethodHook() {
        @Override
        protected void beforeHookedMethod(MethodHookParam param) {
            Intent intent = (Intent) param.args[0];
            XposedBridge.log("Scheme Hook: " + intent.getDataString());
        }
    });

技巧 5:静态反编译 APK 提取 Manifest

工具链apktool + grep / JADX

关键文件AndroidManifest.xml 中注册的 <intent-filter>

<activity android:name=".WebViewActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="dewuapp" android:host="m.poizon.com" />
    </intent-filter>
</activity>

一键提取命令

apktool d target.apk -o out
grep -r "android:scheme=" out/ | sort | uniq

三、银行类 APP URL Scheme 大全(Android / iOS 双端)

银行类 Scheme 是金融聚合场景的核心,以下整理自真实逆向与官方文档,注意 Android 与 iOS 的 Scheme 通常不一致

银行app Scheme

银行Scheme 示例备注
工商银行 (ICBC)com.icbc.iphoneclient://早期版本使用
农业银行 (ABC)bankabc://双端一致
中国银行 (BOC)bocmbciphone://iOS 专属
建设银行 (CCB)ccbmobilebank://需拼接 cmbls/functionjump 路径
交通银行 (BCM)bocom://简洁
招商银行 (CMB)cmbmobilebank://需配合 CMBLS 路径使用
民生银行 (CMBC)com.cmbc.cn.iphone://iOS Bundle ID 风格
邮储银行 (PSBC)psbcMobileBank://驼峰命名
广发银行 (GDB)cgbMobileHuidu://含 "Huidu" 后缀
平安银行 (PAB)paesuperbank://"平安易行" 缩写
中信银行 (CITIC)citicbank://简洁
浦发银行 (SPDB)spdbbank://与域名一致
光大银行 (CEB)com.cebbank.ebank://Bundle ID 风格
华夏银行 (HXB)hxbmb://"mb" = Mobile Bank
上海银行 (BOS)BankOfShangHai://驼峰命名
兴业银行 (CIB)cibmb://"mb" = Mobile Bank
宁波银行 (BONB)nbbank://简洁
南京银行 (NJCB)nicbmbank://"nicb" = Nanjing City Bank
江苏银行 (BOJS)jsbsjyh://拼音缩写
北京银行 (BOBJ)bankofbj://与英文缩写一致

⚠️ 注意事项:银行类 Scheme 通常需要配合数字证书白名单包名校验,单纯唤起可能触发安全拦截,建议结合Universal LinkApp Link 使用。

四、互联网主流 APP URL Scheme 速查表

以下 Scheme 均通过 F12 控制台、Intent 拦截或日志分析实战提取。

4.1 社交 / 内容社区

APPScheme 示例功能说明
微信weixin://dl/businessWebview/url?u=xxx内置浏览器
微信读书weread://weread.qq.com/唤起微信读书
知乎zhihu://goods/bottom_sheet_hybrid底部弹窗 H5
知乎登录zhihu://signin?next=登录后回跳
B站bilibili://browser/内置浏览器
B站视频bilibili://video/{avid}直跳视频页
B站动态bilibili://opus/detail/{id}动态详情
B站商城bilibili://mall/web会员购
抖音snssdk1128://webview?url=&from=webview内置 WebView
抖音极速版snssdk2329://polaris?极速版活动页
快手kwai://webview内置浏览器
快手极速版ksnebula://webview极速版
微视weishi://feed?feed_id=视频流
微视个人页weishi://profile?person_id=用户主页
Soulsoul://ul.soulapp.cn/web/web内置 Web
Soul 群聊soul://ul.soulapp.cn/chat/groupCreatePage群创建页
皮皮虾bds://cell_detail?item_id=作品详情
西瓜视频snssdk32://detail?groupid=视频详情

4.2 电商 / 生活服务

APPScheme 示例功能说明
淘宝taobao://m.taobao.com/tbopen/index.html?h5Url=H5 桥接
天猫tmall://page.tm/appLink?h5Url=活动跳转
京东openapp.jdmobile://virtual?params=虚拟页面路由
拼多多pddopen://?h5Url=H5 活动页
闲鱼fleamarket://2.taobao.com/onepiece?h5Url=闲鱼币游戏等
唯品会vipshop://showWebview?url=内置浏览器
得物dewuapp://m.poizon.com/router/web/BrowserPage?loadUrl=商品/活动页
得物短链dewulink://m.dewu.com/note?routerUrl=笔记分享
转转zhuanzhuan://jump/core/web/jump通用 Web 跳转
转转卖家版zhuanzhuanseller://jump/core/openZhuanZhuan/jump卖家端
点淘taobaoliveshare://xevddy.com/gateway/index.htm?targetUrl=直播活动
美团imeituan://www.meituan.com/web?notitlebar=1&url=特惠活动
美团支付meituanpayment://neo.meituan.com/browser?url=支付内页
滴滴出行onetravel://router/page/web?url=内置活动
饿了么eleme://web?url=通用(需自行拼接)
Hello 单车hellobike://hellobike.com/openWeb活动页

4.3 办公 / 效率

4.4 视频 / 音乐 / 娱乐

4.5 金融 / 支付

4.6 工具 / AI / 其他

五、微信小程序 URL Scheme 特殊格式

weixin://dl/business/?appid={APPID}&env_version=release&path=pages/index/index&query=source%3D80046

参数说明

  • appid:小程序的 AppID
  • env_versionrelease(正式版)/ trial(体验版)/ develop(开发版)
  • path:页面路径,需 encode
  • query:页面参数,需 encode

注意:此 Scheme 有调用频次限制,且需要微信开放平台权限,适合 B 端系统对接。


六、实战:拼接一个完整的银行唤起链路

建设银行唤起 H5 活动页为例:

iOS 端

ccbmobilebank://cmbls/functionjump?action=gochannel&channelname=home&needlogin=false&ccbParam=https://res.yunbusiness.ccb.com/activity/index.html

Android 端

ccbapp://main.ccb.com?target=url&ccbParam=https://res.yunbusiness.ccb.com/activity/index.html

关键差异

  1. Scheme 前缀不同:ccbmobilebank vs ccbapp
  2. 路径结构不同:cmbls/functionjump vs main.ccb.com
  3. 参数名可能不同:channelname 仅在 iOS 端有效

兼容性处理代码(JavaScript)

const u = navigator.userAgent;
const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;
const isIOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/);

const scheme = isIOS 
  ? `ccbmobilebank://cmbls/functionjump?action=gochannel&channelname=home&ccbParam=${encodeURIComponent(url)}`
  : `ccbapp://main.ccb.com?target=url&ccbParam=${encodeURIComponent(url)}`;

// 尝试唤起
window.location.href = scheme;

// 超时未唤起则跳下载页
setTimeout(() => {
  if (!document.hidden) {
    window.location.href = 'https://m.ccb.com/download';
  }
}, 2500);

七、避坑指南:Scheme 调用的四大陷阱

1. 双端 Scheme 不一致

如上文银行案例所示,Android 与 iOS 的 Scheme 前缀、路径、参数往往完全不同,必须做双端适配,不能简单复用。

2. 高版本系统的 Intent 拦截

Android 12+ 引入了 android:exported 强制声明,部分隐式 Scheme 可能无法被外部应用捕获,需配合 Intentpackage 字段显式指定。

3. 微信/QQ 内置浏览器的限制

微信内置浏览器会拦截大部分非白名单 Scheme,建议:

  • 使用微信官方的 wx-open-launch-app 标签
  • 或引导用户"右上角用浏览器打开"

4. Scheme 的动态变更

APP 版本迭代时,Scheme 可能增减或修改(如字节系从 snssdk1128 迁移到 aweme),生产环境需建立Scheme 灰度验证机制


八、总结与资源推荐

本文系统介绍了 URL Scheme 的提取方法论与实战库,核心要点回顾:

维度要点
提取手段F12 控制台 → Intent 拦截 → Xposed Hook → 静态反编译,难度递增
银行差异Android/iOS 双端 Scheme 几乎完全不同,需分别维护
互联网 APP普遍支持 xxx://webview?url= 的通用 H5 桥接模式
兼容性必须处理微信拦截、系统版本差异、未安装 fallback

推荐工具

  • Intent Intercept:Android 端免 Root 拦截
  • apktool + JADX:静态逆向分析
  • Frida/Xposed:动态运行时 Hook

如果你在实际逆向过程中发现了新的 Scheme,欢迎在评论区补充。技术因共享而进步,我们下篇见!

免责声明:本文所涉及的 URL Scheme 提取技术仅供安全研究与学习交流使用。请严格遵守《网络安全法》及各大平台 SRC 规则,未经授权不得对任何系统进行渗透测试。任何因滥用技术产生的法律后果与本文作者无关。

我是白帽攻防录的白帽K,持续分享 AI 挖洞和src漏洞挖掘干货,觉得有用的话记得👍点赞、⭐收藏和💬关注。