V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
MagicalCarl
V2EX  ›  程序员

好奇 B 站是如何追踪我的

  •  
  •   MagicalCarl · 7h 48m ago · 2533 views

    做了下面的实验:

    1. 在 iPhone 中下载 bilibili ,未登录且未开启跟踪的情况下刷某类冷门视频,卸载并重新安装 bilibili 后,首页的推荐出现了该类冷门视频的推荐(我这里称之为命中);切换 WiFi 和蜂窝网络后仍然能够成功命中推荐。系统中没有安装其他 bilibili 系的应用。
    2. 在 Android (小米)中下载了 bilibili 重复上述的 1 ,结果相似,且在设置中刷新广告 id 仍然能够命中,但在恢复出厂设置后重新安装,首页不再推荐该类视频。
    16 replies    2026-05-07 19:48:01 +08:00
    mizuki9
        1
    mizuki9  
       7h 34m ago
    小米有虚拟身份 ID 。应用程序通过此 ID 投放个性化广告,重置后广告会重新个性化推荐。这个可以在设置里直接重置,不用恢复出厂。
    iPhone 不知道
    xtreme1
        2
    xtreme1  
       7h 25m ago
    keychain
    artiga033
        3
    artiga033  
       7h 23m ago via Android
    不懂苹果。

    Android 这边的话,国内厂商都有自己的系统级广告 id ,然后 imei 、Wi-Fi 、蓝牙信息很多都是没有权限控制的。而且和你同一网络环境或者你附近的人的设备也会被用来无线/蓝牙扫描以建立和你的相对关系。
    其次就是输入法,大部分被害妄想的“被监控”感都是因为输入法...
    实际上参考浏览器指纹,根据这些拼凑的信息,只要能够一定概率推断出你是不是你就行了,并不需要完全准确,反正广告这种东西推送错了也不是什么致命的问题。
    miyuki
        4
    miyuki  
       7h 9m ago
    wifi mac
    beyondstars
        5
    beyondstars  
       7h 7m ago
    设备指纹这块,只要 app 收集的数据足够多足够全,就有足够的把握判断前后两个实例是否是运行在同一台设备上。
    DamonHu
        6
    DamonHu  
       7h 6m ago
    禁止跟踪只是不能读取系统的 idfa 标识,但是可以自己根据系统时间戳之类生成随机的字符串类似于自定义标识。配合 keychain 或者 icloud 同步都可以在卸载后依旧保存在系统。重装后恢复就行了

    keychain 的介绍[https://blog.hudd.cn/356.html]( https://blog.hudd.cn/356.html)
    finab
        7
    finab  
       7h 5m ago
    生成了一个 uuid 当做设备标识符存放在 keychain 中,这个卸载不会移除,下次安装时读取。
    ca2oh4
        8
    ca2oh4  
       6h 33m ago
    @finab 我就是说 pdd 怎么重新下载怎么有卸载前的登录态
    tigerZhang
        9
    tigerZhang  
       6h 18m ago
    @xtreme1 正解
    cwxiaos
        10
    cwxiaos  
       5h 55m ago via iPhone
    除了 keychain ,还有设备指纹,也不知道读了什么,抓包研究过

    ```
    https://app.bilibili.com/x/resource/fingerprint
    ```

    这个 api 上报了数据之后,返回相同的 device id

    ```
    {
    "code": 0,
    "message": "OK",
    "ttl": 1,
    "data": {
    "bili_deviceId": "9C26755D7F8224E544255454395FB4A120230324001723EBAACB6F2A27D8EB23"
    }
    }
    ```

    而且,/x/*之下的部分 api 会携带参数,导致即使 mitm 修改 deviceID ,服务端也会返回相同的推荐数据,研究至此就不浪费时间了,懒得写脚本去搞它了

    直接安装的就不说了,keychain 删不掉,除非重置,而使用以下方法,仍然可以获取到正确的 device id

    Livecontainer 安装 -> 新建容器&清空原容器数据和 keychain -> 使用新容器打开 app ,抓包仍然可以返回正确的 device id

    目前测试可以避免跟踪的方法:

    使用 livecontainer 安装 -> 卸载时删除容器 keychain&清空数据 -> 卸载 liveconatiner -> 使用 sidestore 等重新安装 livecontainer -> 重新安装 bilibili app
    Hypixel
        11
    Hypixel  
       5h 46m ago
    Android 上实现这个很简单,最基本的 ANDROID_ID 就能做到,这个卸载重装是不会变的,再结合其他的如 Widevine Device ID 基本上就能实现
    cwxiaos
        12
    cwxiaos  
       4h 34m ago via iPhone
    @cwxiaos 这是以前的白色版本,看了下现在的版本,这个 api 没了
    lel020
        13
    lel020  
       4h 24m ago
    @Hypixel 最基本的 ANDROID_ID 多少年前就获取不到了,Widevine 国内 app 应该没有使用这种东西的,
    Domado
        14
    Domado  
       4h 2m ago
    iOS 这边,能利用钥匙串,你卸载了还能保留追踪用户信息,安卓这边途径就更多了,身份 ID ,app suite ,设备识别码,写入信息到公共目录等等
    catamaran
        15
    catamaran  
       3h 43m ago
    补充个跟这个无关的场景,厂家的数据是可以买卖的,比如你浏览了淘宝,京东会给你推相关的商品(只是举例)
    Cheons
        16
    Cheons  
       2h 11m ago via Android
    广告联盟,厂商数据是能互通的。
    B 站 YouTube ,能互通。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3256 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 13:59 · PVG 21:59 · LAX 06:59 · JFK 09:59
    ♥ Do have faith in what you're doing.