V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
MagicalCarl

好奇 B 站是如何追踪我的

  •  1
     
  •   MagicalCarl · 1 day ago · 3746 views

    做了下面的实验:

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

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

    keychain 的介绍[https://blog.hudd.cn/356.html]( https://blog.hudd.cn/356.html)
    finab
        7
    finab  
       1 day ago
    生成了一个 uuid 当做设备标识符存放在 keychain 中,这个卸载不会移除,下次安装时读取。
    ca2oh4
        8
    ca2oh4  
       1 day ago
    @finab 我就是说 pdd 怎么重新下载怎么有卸载前的登录态
    tigerZhang
        9
    tigerZhang  
       1 day ago
    @xtreme1 正解
    cwxiaos
        10
    cwxiaos  
       1 day 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  
       1 day ago
    Android 上实现这个很简单,最基本的 ANDROID_ID 就能做到,这个卸载重装是不会变的,再结合其他的如 Widevine Device ID 基本上就能实现
    cwxiaos
        12
    cwxiaos  
       1 day ago via iPhone
    @cwxiaos 这是以前的白色版本,看了下现在的版本,这个 api 没了
    lel020
        13
    lel020  
       1 day ago
    @Hypixel 最基本的 ANDROID_ID 多少年前就获取不到了,Widevine 国内 app 应该没有使用这种东西的,
    Domado
        14
    Domado  
       1 day ago
    iOS 这边,能利用钥匙串,你卸载了还能保留追踪用户信息,安卓这边途径就更多了,身份 ID ,app suite ,设备识别码,写入信息到公共目录等等
    catamaran
        15
    catamaran  
       1 day ago
    补充个跟这个无关的场景,厂家的数据是可以买卖的,比如你浏览了淘宝,京东会给你推相关的商品(只是举例)
    Cheons
        16
    Cheons  
       1 day ago via Android
    广告联盟,厂商数据是能互通的。
    B 站 YouTube ,能互通。
    flynaj
        17
    flynaj  
       21h 52m ago via Android
    是不是还是同一个 WiFi ,一家人一个人搜了某个东西,所有人都会受到相关广告
    peter986
        18
    peter986  
       19h 26m ago
    这种很容易实现的
    docx
        19
    docx  
       18h 14m ago via iPhone
    能跟踪的特征码太多了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3283 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 12:49 · PVG 20:49 · LAX 05:49 · JFK 08:49
    ♥ Do have faith in what you're doing.