当前位置:首页>安卓APP>安卓指纹 | 移动应用指纹识别SDK及其获取途径:设备指纹识别市场

安卓指纹 | 移动应用指纹识别SDK及其获取途径:设备指纹识别市场

  • 2026-03-29 19:50:38
安卓指纹 | 移动应用指纹识别SDK及其获取途径:设备指纹识别市场

终身学习、持续学习、原创学习、前沿研究

小肩膀教育

这篇来自佐治亚理工和Google的联合研究,2025年11月发在ACM CCS(计算机与通信安全顶会)。核心问题:Android生态中有多少SDK在做设备指纹追踪,它们是谁,用于什么目的?答案震撼:22.8万个SDK中有723个家族(1.4万个版本)在做指纹追踪,但广告SDK只占30.56%,23.92%的SDK目的不明,安全/反欺诈SDK占11.7%。更惊人的是:包含指纹SDK的App虽然只占3.2%,但按安装量算占39.4%——指纹SDK集中在最流行的App中,是普通App的10倍流行度

这篇论文的价值在于:它是第一篇从市场角度系统研究移动端指纹追踪的论文,揭示了一个被严重低估的事实——指纹追踪不是广告行业的专属问题,而是整个移动生态的系统性问题。Apple的App Tracking Transparency和Google的Privacy Sandbox都聚焦于广告,但论文发现70%的指纹行为来自非广告SDK(分析、反欺诈、工具类、目的不明)。更关键的是,论文用t-SNE可视化发现:广告SDK和安全SDK的指纹行为高度重叠,无法通过行为特征自动区分——这意味着"允许反欺诈指纹,禁止广告指纹"的政策在技术上不可行。

技术上,论文建立了一个完整的分析管道:(1) 从9个Maven仓库爬取22.8万个SDK + 从Google Play采集17.8万个App(>1万活跃设备);(2) 手工逆向14个自称做指纹的SDK(Seed Set),提取504个独特信号;(3) 用污点分析(taint tracking)扫描所有SDK,找出采集≥20个信号的723个家族(Extended Set);(4) 5个专家用HCI编码技术给723个SDK打标签(Krippendorff's alpha = 0.804,信度很高);(5) 用代码相似度匹配App和SDK。数据规模和方法严谨性都是顶级的。

扣分点:(1) 只研究了Android——iOS生态完全没覆盖(论文承认iOS的DRM限制了大规模分析);(2) 信号计数过于简单——只看采集了多少个API,没有考虑熵值(有些API比其他API更能识别设备);(3) Seed Set可能有偏差——14个自称做指纹的SDK可能不代表所有指纹技术(比如没有发现硬件侧信道指纹);(4) 23.92%的SDK目的不明——这是一个巨大的黑洞,论文没有深入挖掘这些SDK到底在做什么。

但瑕不掩瑜。这是移动端指纹研究的里程碑式工作,数据规模空前(22.8万SDK + 17.8万App),方法论严谨(多轮人工标注 + 自动化分析),发现有冲击力(指纹不是广告专属问题),对政策制定和技术防御都有深远影响。


一、这篇论文在解决什么问题

来自佐治亚理工和Google的联合研究,2025年11月发在ACM CCS。核心问题用一句话概括:Android生态中有多少SDK在做设备指纹追踪,它们是谁,用于什么目的,影响了多少用户?

这个问题的背景是:移动操作系统厂商(Apple和Google)近年来推出了一系列反指纹追踪措施:

Apple的措施:

  • App Tracking Transparency (ATT)
    :要求App在追踪用户前弹窗征得同意
  • Required Reason API
    :30个高熵API需要在隐私清单中说明使用理由
  • Privacy Nutrition Labels
    :App Store要求开发者提交隐私标签

Google的措施:

  • Privacy Sandbox for Android
    :隔离第三方广告库,限制其访问敏感信息
  • Data Safety Section
    :Google Play要求开发者声明数据采集行为

但这些措施有一个共同的假设:指纹追踪主要来自广告行业。

ATT明确允许"反欺诈目的"的指纹采集,Privacy Sandbox只隔离"第三方广告库"。但没有人系统地验证过这个假设——指纹追踪真的主要来自广告吗?还是有大量非广告SDK也在做指纹?

论文的三个研究问题(RQ):

RQ1:自称做指纹的SDK有什么行为特征?

  • 采集多少个信号?
  • 采集哪些API?
  • 不同SDK之间的相似度如何?

RQ2:做指纹的SDK的目的是什么?

  • 广告、分析、反欺诈、工具类、还是目的不明?
  • 不同目的的SDK在行为上能区分吗?

RQ3:指纹SDK的市场影响力如何?

  • 哪些App类别使用指纹SDK最多?
  • 指纹SDK在流行App中的渗透率如何?
  • 不同App类别之间共享指纹SDK的概率有多高(跨App追踪风险)?

二、数据集和方法论拆解

数据集规模(§3.1)

SDK数据集:

  • 来源
    :9个Maven仓库(JCenter、Maven Central、Google、Sonatype、Spring.io、Jitpack、Bintray、Artifactory)
  • 规模
    :228,598个SDK
  • 过滤
    :排除版本标签包含
    "alpha"、"beta"、"test"、"dev"、"debug"、"qa"的SDK

App数据集:

  • 来源
    :Google Play Store
  • 时间跨度
    :2023年1月 - 2024年5月(18个月)
  • 原始规模
    :302.5万个APK
  • 过滤条件
    :只保留2024年4月13日 - 5月13日期间活跃设备数>1万的App
  • 最终规模
    :178,054个App

为什么用"活跃设备数>1万"作为过滤条件?

论文的解释是:避免样本偏差——大量长尾App可能从未被真正使用,包含它们会稀释分析结果。活跃设备数是一个更好的指标,因为它反映了"设备在过去30天内至少开机一次",说明App确实在被使用。

Seed Set:14个自称做指纹的SDK(§3.2)

论文从22.8万个SDK中筛选出14个在广告文案或开发者文档中明确承认"我们做设备指纹"的SDK,作为Seed Set。

Table 2:Seed Set SDK列表

SDK名称
采集信号数
用途
Seon
43
反欺诈
Forter
69
反欺诈
Kaspersky AntiVirus SDK
20
安全
Accertify (InAuth)
213
反欺诈
Castle
31
反欺诈
Microsoft Dynamics 365
128
CRM/分析
IP Quality Score
58
反欺诈
Fingerprint.js
30
指纹库
Shield
148
反欺诈
ThreatMetrix (LexisNexis)
94
反欺诈
Ravelin
30
反欺诈
TransUnion TruValidate
55
身份验证
Socure
43
身份验证
Incognia
81
反欺诈
总计(去重)504
-

关键观察:

  1. 最少20个信号,平均75.5个:这成为后续Extended Set的阈值——只有采集≥20个信号的SDK才被认为在做指纹。

  2. 504个独特信号:虽然14个SDK总共采集了1043个信号,但去重后只有504个独特信号。这说明不同SDK采集的信号有重叠,但重叠度不高。

  3. 反欺诈占主导:14个SDK中有9个(64%)是反欺诈/身份验证SDK,只有1个(Microsoft Dynamics 365)是CRM/分析,0个是广告SDK。这已经暗示了一个重要发现:自称做指纹的SDK主要不是广告SDK。

  4. 没有硬件侧信道:论文发现所有14个SDK都只用框架级API(Android SDK提供的API),没有一个使用硬件侧信道(如加速度计指纹、音频指纹、GPU时钟指纹)。这和Web指纹研究的发现不同——Web指纹大量使用Canvas、WebGL、AudioContext等侧信道。

手工逆向流程:

每个Seed Set SDK都被两个分析师独立逆向,提取采集的信号列表,然后对比结果。如果有分歧,由全组5个专家讨论解决。这个双盲验证流程确保了Seed Set的准确性。

Extended Set:723个指纹SDK家族(§3.3)

论文开发了一个静态污点分析工具,扫描所有22.8万个SDK,识别哪些SDK采集了≥20个信号(Seed Set中最少的信号数)。

污点分析逻辑:

  1. 污点源(Taint Source):所有可以返回设备信息的API调用(如Build.MODELTelephonyManager.getDeviceId()Settings.Secure.ANDROID_ID

  2. 污点传播(Taint Propagation):跟踪污点数据在代码中的流动(赋值、函数调用、数据结构操作)

  3. 污点汇(Taint Sink):所有可以向外发送数据的API调用(如HttpURLConnection.getOutputStream()Socket.send()SharedPreferences.edit().putString()

  4. 判定标准:如果一个SDK从≥20个不同的污点源采集数据,并且这些数据最终流向污点汇,就认为这个SDK在做指纹。

结果:

  • 723个SDK家族
    (每个家族可能有多个版本)
  • 14,178个SDK版本
    (平均每个家族19.6个版本)

为什么用"≥20个信号"作为阈值?

论文的解释是:保守估计,避免假阳性。

Seed Set中最少的SDK(Kaspersky)采集20个信号,如果一个SDK采集的信号比这还少,就很难说它在做指纹(可能只是正常的App功能需要这些信息)。这个阈值可能导致假阴性(漏掉一些真正做指纹但采集信号较少的SDK),但可以最大程度避免假阳性(把不做指纹的SDK误判为指纹SDK)。

SDK标签:5个专家的HCI编码(§3.4)

Maven仓库不要求SDK提供详细的功能描述,很多SDK只有一个简短的名字和一个URL。论文需要给723个SDK家族打标签(广告、分析、安全、工具、目的不明),但这是一个主观任务——不同人可能有不同判断。

论文借鉴了HCI(人机交互)社区的编码技术:

Step 1:Codebook开发

5个专家从723个SDK中随机抽取100个,独立给每个SDK打标签,然后开会讨论分歧,迭代定义标签的含义,直到达成共识(saturation)。

Step 2:独立标注

剩余623个SDK分配给5个专家,每个SDK由2个专家独立标注。

Step 3:信度检验

用Krippendorff's alpha测量标注者之间的一致性,得分0.804(>0.8被认为是高信度)。

Step 4:冲突解决

所有标注不一致的SDK由全组5个专家开会讨论,达成最终标签。

Table 1:SDK标签定义

标签
定义
示例
Advertising
展示广告、广告竞价、广告定向、广告中介、或用于变现/转化的分析
AppLovin、Teads
Analytics
监控App健康状况(崩溃报告、性能监控)或采集用户行为数据
TOAST Logger、RichAPM Agent、Pushwoosh、Acoustic Tealeaf
Security & Authentication
用户身份验证、反欺诈检测、支付功能
Passbase、Ondato、Incognia、SEON、Alipay、PayPal
Tools / Other
导航、物体/人员追踪、社交网络通信、或其他明确定义的功能
Tencent Map Nav、Radar、BeaconsInSpace、Foursquare Movement、Facebook、Chat SDK、iZooto App Push、GameUp
Unclear / Not Found
从在线元数据无法确定目的或功能
-

为什么需要这么严格的标注流程?

因为SDK标签直接影响论文的核心发现——"指纹SDK的目的分布"。如果标注有偏差(比如把一些广告SDK误标为"目的不明"),就会得出错误的结论。Krippendorff's alpha = 0.804证明了标注的可靠性。

App-SDK匹配:代码相似度算法(§3.5)

最后一步是确定"哪个App包含哪个SDK"。这不是一个简单的字符串匹配问题,因为:

  1. SDK可能被混淆
    :类名、方法名被重命名
  2. SDK可能被部分集成
    :App只用了SDK的一部分功能
  3. SDK可能被修改
    :App开发者可能修改了SDK的代码

论文开发了一个基于代码相似度的匹配算法:

特征提取:

  • 系统API调用
    :如android.os.Build.MODEL
  • Opcode频率
    :如invoke-virtualiget-object的出现次数
  • 框架API调用
    :如androidx.appcompat.app.AppCompatActivity
  • 字符串常量
    :如"https://api.example.com"

相似度计算:

对每个App和每个SDK,计算它们的特征向量的余弦相似度。如果相似度超过阈值(论文没有公开具体阈值,但说"优先避免假阳性"),就认为App包含这个SDK。

结果:

论文在17.8万个App中识别出了723个指纹SDK家族的存在情况,构建了一个App-SDK关系矩阵。

三、核心发现

RQ1:Seed Set的行为特征

Figure 2:信号分布的长尾效应

论文画了一个散点图,X轴是504个独特信号,Y轴是"有多少个Seed Set SDK采集了这个信号"。

关键发现:

  1. 80%的信号只被<50%的SDK采集:大多数信号是某个SDK独有的,不是通用的指纹特征。

  2. 只有2%的信号被>75%的SDK采集:只有10个左右的信号是"核心指纹特征",被绝大多数SDK采集。这10个信号可能是:

    • Build.MODEL
      (设备型号)
    • Build.BRAND
      (设备品牌)
    • Build.VERSION.SDK_INT
      (Android版本)
    • TelephonyManager.getNetworkType()
      (网络类型)
    • DisplayMetrics.widthPixels
      (屏幕宽度)
    • DisplayMetrics.heightPixels
      (屏幕高度)
    • DisplayMetrics.densityDpi
      (屏幕密度)
    • Settings.Secure.ANDROID_ID
      (Android ID)
    • PackageManager.getInstalledPackages()
      (已安装App列表)
    • LocationManager.getLastKnownLocation()
      (位置信息)
  3. 信号空间非常稀疏:不同SDK采集的信号集合差异很大,没有一个"标准指纹配方"。

Figure 3:Seed Set SDK之间的余弦相似度

论文把每个SDK表示为一个504维的one-hot向量(采集了某个信号就是1,否则是0),计算两两之间的余弦相似度。

结果:只有2个SDK(TransUnion和Ravelin)的相似度>0.5,其他所有配对都<0.5。

这说明:即使都是自称做指纹的SDK,它们采集的信号集合也高度不同。

对防御的含义:

Apple的Required Reason API策略(限制30个高熵API的使用)可能效果有限,因为指纹SDK可以用其他API组合达到同样的效果。论文发现504个信号中只有21个被>50%的SDK采集,如果只限制这21个API,攻击者可以转向其他483个API。

RQ2:Extended Set的目的分布

Figure 4:723个指纹SDK家族的目的分布

目的
数量
占比
Advertising
221
30.56%
Unclear / Not Found
173
23.92%
Tools / Other
167
23.09%
Security & Authentication
85
11.75%
Analytics
77
10.65%

三个震撼的发现:

  1. 广告SDK只占30.56%:虽然是最大的单一类别,但不到三分之一。这挑战了"指纹追踪主要来自广告"的假设。

  2. 23.92%的SDK目的不明:这是第二大类别。这些SDK在Maven仓库中没有足够的描述,开发者网站也没有明确说明功能。它们可能是:

    • 小型开发者的私有SDK(没有公开文档)
    • 恶意SDK(故意隐藏目的)
    • 废弃的SDK(开发者网站已关闭)
    • 中国/俄罗斯/其他非英语国家的SDK(文档是外语,论文作者看不懂)
  3. 安全/反欺诈SDK占11.75%:虽然比例不高,但绝对数量不少(85个家族)。这些SDK的指纹行为是"合法"的(用于反欺诈),但从隐私角度看和广告指纹没有区别。

Figure 5:t-SNE可视化——广告和安全SDK无法区分

论文把723个SDK表示为504维的one-hot向量,用t-SNE降维到2D平面,用颜色标记SDK的目的。

关键观察:

  1. 广告SDK(◆)主要在左侧,安全SDK(×)主要在右侧:这说明两类SDK的指纹行为有一定差异。

  2. 但有大量安全SDK在左侧,和广告SDK混在一起:这说明两类SDK的指纹行为有显著重叠,无法通过行为特征自动区分。

  3. 目的不明的SDK(●)分散在整个平面:这说明它们的指纹行为和所有其他类别都有相似性,可能包含各种类型的SDK。

对政策的含义:

Apple和Google的政策都允许"反欺诈目的"的指纹采集,但禁止"广告目的"的指纹采集。但论文发现:从技术上无法自动区分这两类SDK——它们采集的信号高度重叠,行为模式相似。

这意味着:

  • 自动化执行这个政策非常困难
    :不能简单地用API调用模式来判断SDK的目的。
  • 需要依赖SDK开发者的自我声明
    :但这容易被滥用——广告SDK可以声称自己是"反欺诈SDK"。
  • 需要人工审核
    :但这不可扩展——Google Play有数百万个App,每个App可能包含几十个SDK。

敏感信号的使用(§4.2末尾)

论文手工识别了3类敏感信号:

信号类型
API数量
采集比例
粗粒度位置
24
72.0%
细粒度位置
24
71.6%
至少一种位置
24
86.29%
账户列表
2
6.15%
App使用信息
3
38.46%

86.29%的指纹SDK采集位置信息——这是一个巨大的隐私风险。位置信息本身就是高熵数据(可以唯一识别用户),结合设备指纹可以做跨App追踪。

RQ3:市场影响力

Figure 6:指纹SDK集中在流行App中

论文画了三个图:

(a) 按App数量统计

  • 平均只有3.2%的App包含指纹SDK
  • 最低0.8%(Events类App)
  • 最高10%(Video Players类App)

(b) 按安装量统计

  • 平均39.4%的安装量来自包含指纹SDK的App
  • 最低5.5%(Libraries and Demo类App)
  • 最高87.76%(Comics类App)

(c) 流行度对比

  • 在23个App类别中,包含指纹SDK的App的安装量是不包含指纹SDK的App的10倍以上

关键洞察:指纹SDK不是均匀分布的,而是高度集中在最流行的App中。

这意味着:

  • 大多数用户会被指纹追踪
    :虽然只有3.2%的App包含指纹SDK,但这些App占了39.4%的安装量。随机安装一个流行App,有39.4%的概率被指纹。
  • 流行App更依赖指纹SDK
    :可能是因为它们需要更复杂的分析、反欺诈、广告变现功能。
  • 长尾App很少用指纹SDK
    :可能是因为它们的开发者资源有限,没有集成第三方SDK。

Figure 7a:不同App类别中指纹SDK的目的分布

论文画了一个热力图,X轴是App类别(如Art and Design、Finance、Game),Y轴是SDK目的(Ads、Analytics、Security、Tools、Unclear),颜色深度表示该类SDK在该类App中的占比。

关键发现:

  1. 广告SDK在几乎所有App类别中占主导:除了Finance、Food and Drink、Shopping这三个类别,其他所有类别中广告SDK都是最多的。

  2. Finance、Food and Drink、Shopping类App更多使用Analytics SDK:这些App通常有用户账户系统,不需要通过指纹来识别用户(用户已经登录了),但需要分析用户行为来优化产品。

  3. 目的不明的SDK在所有类别中都占很大比例:这是第二大类别,仅次于广告SDK。

Figure 7b:跨App追踪风险热力图

论文计算了一个概率:从App类别A和App类别B各随机选一个App,它们共享至少一个指纹SDK的概率。

关键发现:

  1. Game类App和几乎所有其他类别共享指纹SDK:Game类App使用的指纹SDK也被Art and Design、Beauty、Books and Reference、Comics、Communication、Dating、Entertainment、Health and Fitness等20多个类别使用。

  2. Finance和Medical类App很少和其他类别共享指纹SDK:这两个类别的App通常处理高度敏感数据(银行账户、医疗记录),可能有更严格的隐私政策,不使用第三方指纹SDK。

  3. 跨App追踪风险很高:如果用户同时安装了Game类App和Dating类App,它们很可能共享同一个指纹SDK,该SDK可以关联用户在两个App中的行为。

对隐私的含义:

跨App追踪是指纹追踪最严重的隐私威胁——第三方SDK可以知道"用户A在约会App中喜欢什么类型的人,在游戏App中玩什么类型的游戏,在购物App中买什么类型的商品",构建一个完整的用户画像。

四、实战建议:这些发现对你意味着什么

给普通用户:你的手机可能比你想象的更"透明"

现实情况:你安装的流行App很可能在追踪你

论文发现了一个令人不安的事实:虽然只有3.2%的App包含指纹追踪SDK,但这些App占了所有安装量的39.4%。换句话说,如果你随机安装一个流行App,有接近40%的概率它在做设备指纹追踪。更糟糕的是,包含指纹SDK的App的流行度是普通App的10倍——你越喜欢用的App,越可能在追踪你。

这意味着什么?想象一下:你打开一个游戏App玩了半小时,然后打开一个约会App浏览了几个人的资料,最后打开一个购物App买了一件衣服。如果这三个App都使用了同一个指纹SDK(论文发现这种情况很常见),那个SDK的开发者就能知道"某个设备的用户喜欢玩什么游戏、对什么类型的人感兴趣、买什么风格的衣服"——即使你从未在这些App中登录同一个账号。

你能做什么?

  1. 优先选择知名度高、隐私政策透明的App。大公司(如Google、Microsoft、Amazon)虽然也采集数据,但至少有明确的隐私政策和法律约束。小公司或个人开发者的App可能集成了目的不明的SDK(论文发现24%的指纹SDK目的不明),你根本不知道数据被发送到哪里。

  2. 定期检查App权限,撤销不必要的权限。虽然论文研究的是"无需权限"的指纹追踪,但限制位置、相机、麦克风等敏感权限仍然有意义——论文发现86%的指纹SDK会采集位置信息,如果你不给位置权限,至少能减少一部分数据泄露。

  3. 使用隐私增强工具。Android用户可以考虑:

    • Private DNS
      (加密DNS查询,防止ISP追踪你访问的网站)
    • VPN
      (隐藏真实IP地址)
    • App Ops
      Permission Manager X(更细粒度地控制App权限)
    • Shelter
      Island(用工作资料隔离不信任的App)
  4. 不要过度依赖"隐私模式"或"无痕浏览"。这些功能只能防止浏览器保存历史记录,对设备指纹追踪完全无效——因为指纹追踪不依赖Cookie或浏览历史,而是依赖你的设备硬件特征(屏幕分辨率、CPU型号、已安装的App列表等),这些特征在隐私模式下和正常模式下完全一样。

给App开发者:你集成的SDK可能在做你不知道的事

现实情况:第三方SDK是一个黑盒

论文发现,大多数指纹追踪不是App开发者自己实现的,而是通过集成第三方SDK引入的。最典型的例子是京东小程序模板和Google Play中的各种分析/广告SDK。这些SDK通常承诺"帮你提高用户留存率"、"优化广告收入"、"防止欺诈",但它们在背后做什么,你可能完全不知道。

更麻烦的是,论文发现24%的指纹SDK目的不明——它们在Maven仓库中没有足够的描述,开发者网站也没有明确说明功能。如果你集成了这样的SDK,你根本不知道它在采集什么数据、发送到哪里、用于什么目的。万一这个SDK是恶意的(比如窃取用户数据卖给数据经纪商),你的App会被Google Play下架,你的声誉会受损,你甚至可能面临法律诉讼。

你能做什么?

  1. 在集成任何第三方SDK之前,做尽职调查。不要只看SDK的功能介绍和代码示例,还要检查:

    • 开发者是谁?
       是知名公司(如Google、Facebook、Amazon)还是不知名的小公司?
    • 隐私政策在哪里?
       如果SDK没有隐私政策,或者隐私政策含糊不清("我们可能采集设备信息用于改善服务"),这是一个危险信号。
    • 其他开发者的评价如何?
       在Stack Overflow、Reddit、GitHub Issues中搜索这个SDK,看看有没有人抱怨隐私问题。
    • SDK的权限需求合理吗?
       如果一个"崩溃报告SDK"要求访问位置、相机、麦克风,这明显不合理。
  2. 优先使用开源SDK,或者至少能看到源代码的SDK。开源SDK的代码是公开的,任何人都可以审查它在做什么。即使你自己没有时间审查,社区中的其他开发者也可能已经审查过了。论文中提到的Fingerprint.js就是一个开源的指纹库——虽然它明确承认自己在做指纹,但至少是透明的。

  3. 定期审计你的App中集成的SDK。SDK会更新版本,新版本可能引入新的数据采集行为。建议:

    • 每次更新SDK时,检查更新日志(changelog),看看有没有新的权限需求或API调用
    • 使用静态分析工具(如Exodus Privacy、ClassyShark)扫描你的APK,看看有哪些SDK、它们调用了哪些敏感API
    • 如果发现某个SDK的行为变得可疑(比如突然开始采集位置信息),考虑换一个替代品或自己实现相关功能
  4. 考虑"最小权限原则"——只集成你真正需要的SDK。很多开发者会集成一大堆SDK(广告、分析、崩溃报告、推送通知、社交分享、地图、支付……),但其中很多可能根本没用上。每多集成一个SDK,就多一个潜在的隐私风险。问自己:

    • 这个SDK提供的功能对我的App核心体验是必需的吗?
    • 我能用更简单的方式实现同样的功能吗?(比如用Android自带的API而不是第三方SDK)
    • 如果去掉这个SDK,会有多少用户受影响?
  5. 如果你的App处理敏感数据(金融、医疗、儿童),要格外小心。论文发现Finance和Medical类App很少使用指纹SDK,可能是因为这些领域有更严格的隐私法规(如HIPAA、PCI DSS)。如果你的App属于这些类别,集成第三方SDK前一定要咨询法律顾问,确保不违反相关法规。

给平台和监管者:现有的反指纹政策有巨大漏洞

现实情况:反指纹政策只针对广告,但广告只占30%

Apple的App Tracking Transparency(ATT)和Google的Privacy Sandbox都有一个共同的假设:指纹追踪主要来自广告行业。但论文用22.8万个SDK和17.8万个App的数据证明了这个假设是错误的——广告SDK只占指纹追踪的30.56%,剩下70%来自分析SDK(10.65%)、安全/反欺诈SDK(11.75%)、工具类SDK(23.09%)、以及目的不明的SDK(23.92%)

这意味着什么?即使Privacy Sandbox完美地隔离了所有广告SDK,仍然有70%的指纹追踪不受影响。更糟糕的是,论文发现广告SDK和安全SDK的指纹行为高度重叠(通过t-SNE可视化),无法通过API调用模式自动区分——这意味着"允许反欺诈指纹,禁止广告指纹"的政策在技术上不可行。

你能做什么?

  1. 扩展反指纹政策的范围,不要只针对广告。建议:

    • 所有采集超过一定阈值(如20个)设备信号的SDK都需要用户明确同意
      ,不管它的目的是广告、分析、反欺诈还是其他。论文发现指纹SDK平均采集75.5个信号,远超正常App功能所需。
    • 不要依赖SDK的自我声明
      ("我是反欺诈SDK所以可以豁免"),因为这容易被滥用。应该基于实际行为(采集了多少信号、发送到哪里)来判断。
    • 对"目的不明"的SDK格外警惕
      。论文发现24%的指纹SDK目的不明,这是一个巨大的黑洞。可以要求所有SDK在上架前提供详细的功能描述和隐私声明,否则不允许被App集成。
  2. 大幅扩展"需要用户同意"的API列表。Apple的Required Reason API目前只限制30个API,但论文发现504个独特的指纹信号,其中只有21个被超过50%的SDK采集。这说明指纹技术非常多样化,攻击者可以用各种不同的API组合达到同样的效果。建议:

    • 采用"默认禁止,白名单允许"的策略
      ——所有可以返回设备信息的API默认需要用户同意,除非开发者能证明必要性(比如"我的相机App需要知道屏幕分辨率来调整预览画面")。
    • 特别关注位置API
      。论文发现86%的指纹SDK采集位置信息,这是最严重的隐私风险之一。位置信息本身就是高熵数据(可以唯一识别用户),结合设备指纹可以做跨App追踪。
    • 限制批量API调用
      。论文发现指纹SDK的典型特征是"在短时间内调用大量不同的设备信息API"。可以在操作系统层面检测这种行为,如果一个App在1秒内调用了20个不同的设备信息API,弹窗警告用户"这个App可能在做设备指纹追踪"。
  3. 建立SDK透明度机制,让开发者和用户知道SDK在做什么。建议:

    • 强制SDK提供"营养标签"
      (类似App Store的Privacy Nutrition Labels),列出采集的所有数据类型、用途、是否与第三方共享。
    • 建立公开的SDK数据库
      (类似Google Play SDK Index),让任何人都可以查询某个SDK的隐私行为。论文发现很多SDK在Maven仓库中没有足够的元数据,这让开发者和用户都无法做出知情决策。
    • 要求App在隐私政策中列出所有集成的第三方SDK
      ,而不是只说"我们使用第三方服务来改善用户体验"。用户有权知道他们的数据被分享给了哪些公司。
  4. 投资于自动化检测技术,但不要完全依赖它。论文开发的污点分析工具可以检测SDK是否采集了大量设备信号,但这只是第一步。还需要:

    • 动态分析
      ——在沙箱中运行App,监控它实际发送了哪些数据到哪些服务器。静态分析只能看到代码,但代码可能被混淆或动态生成。
    • 行为聚类
      ——用机器学习识别"典型的指纹行为模式",即使SDK使用了不同的API组合。论文的t-SNE可视化是一个好的起点。
    • 人工审核
      ——对于高风险的SDK(采集大量敏感信息、目的不明、来自不知名开发者),应该由专家团队人工审核代码和隐私政策。

每期研究论文发群里,可以找膀子聊天
下边是广告环节

小肩膀教育十年安全逆向教学
小肩膀教育作为国内十年逆向老机构,数十年如一日录制教程,涵盖网络爬虫、JS逆向、安卓逆向、IOS逆向、小程序逆向,AI逆向和指纹浏览器开发等多个版块,完全从零基础开始教学。
加入小肩膀,是加入了逆向技术圈子,互相学习、资源共享,欢迎加入小肩膀教育

海外IP代理
海外IP代理做的人很多,有贵的也有便宜的,那为什么和小肩膀合作呢?
因为和我们合作我们就有了联系,来找小肩膀合作购买海外动态、静态住宅和包月不限量IP的,价格绝对优惠。
有事一起合作,小肩膀十年老教育品牌。

海外数据采集
AI时代,必须有高质量的数据采集服务搭配才可以。
小肩膀教育提供海外数据采集代采集服务!
只要是有海外的数据采集需求:亚马逊、谷歌、ebay、雅虎、领英、X、youtube、TIKTOK等等,都可以来合作。

小肩膀本人联系方式↓

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-05 01:55:41 HTTP/2.0 GET : https://c.mffb.com.cn/a/473708.html
  2. 运行时间 : 0.200009s [ 吞吐率:5.00req/s ] 内存消耗:4,355.23kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=1fdddcf85f908b7ec5ed1b0324a37402
  1. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/runtime/temp/cefbf809ba1a84190cb04b0cb7abcf79.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/c.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001005s ] mysql:host=127.0.0.1;port=3306;dbname=c_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001689s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000817s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000718s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001380s ]
  6. SELECT * FROM `set` [ RunTime:0.000607s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001661s ]
  8. SELECT * FROM `article` WHERE `id` = 473708 LIMIT 1 [ RunTime:0.001299s ]
  9. UPDATE `article` SET `lasttime` = 1775325341 WHERE `id` = 473708 [ RunTime:0.001543s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000690s ]
  11. SELECT * FROM `article` WHERE `id` < 473708 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001185s ]
  12. SELECT * FROM `article` WHERE `id` > 473708 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001183s ]
  13. SELECT * FROM `article` WHERE `id` < 473708 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001570s ]
  14. SELECT * FROM `article` WHERE `id` < 473708 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001724s ]
  15. SELECT * FROM `article` WHERE `id` < 473708 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001663s ]
0.203768s