一张截图就能看懂,我把这种“短链跳转”的链路追完了:你以为删了APP就安全,其实账号还在被试;把这份避坑清单收藏

前言 前几天在群里看到一条短链,随手点开发现跳了好几次才落地。为了搞清楚这条链路在做什么,我把它的每一步都追查清楚了。结论很简单:删除应用并不等于你从服务端“被忘记”;短链+重定向链能把信息、Token 或者埋点回传很多次,足以让人去试探你的账号是否存在、是否还能被登录或者触发某些行为。下面把我总结的原理、排查方法和实操避坑清单整理成一篇,方便收藏备用。
看一张“截图”能看懂什么(示意说明) 想象一张截图:浏览器 Network 面板里显示一连串请求,从 short.url 开始,随后是 click.tracker.com、analytics.example、cdn.example、play.google.com/installreferrer、最终跳到 app 的深度链接或 web 页面。每条请求旁有状态码(302、301、200),还有 Location、Set-Cookie、Referer、User-Agent、X-Forwarded-For 等头。截取这张图的关键信息就能还原链路:谁记录了点击、谁注入了参数、最终落地的是什么,以及服务端是否在那一步做了账号探测或触发了魔法链接/重置流程。
短链+重定向链到底在做什么(核心点)
- URL 短缩:把长链接变短并记录一次点击元数据(时间、IP、UA)。
- 重定向服务器:短链先 3xx 跳转到一家或多家中间服务(广告/统计/反作弊/流量分发),每一层都可能记录并追加参数(click_id、utm、token),或做条件分流。
- 客户端逻辑:最终落地页可能有 JS 进一步重定向、发送埋点、尝试唤醒 App(Universal Link、Intent、App Link),或者触发安装引导(带 install_referrer 参数)。
- 服务端探测:有些落地服务器会根据传入参数或 Referer 执行账号查验(比如判断邮箱/手机号是否存在),并返回不同的跳转或错误码,从而让触发方判断账号是否“活跃”。
- Deferred deep linking(延迟深度链接):即便未安装 App,点击到商店并安装后,安装 Referrer / SDK 可以把最初的 click_id 或参数传回 App。这样“点击记录”可以和后续安装行为关联。
为什么删除 APP 并不等于安全
- 服务器端信息仍然存在:账户信息、刷新令牌、授权关系、设备记录都保存在服务端,除非主动撤销或清除。
- OAuth/第三方授权:你可能用社交账户授权了应用,即便删除 App,那些授权还在第三方账户的应用访问列表里,能被再次利用或恢复。
- 安装追踪仍然有效:Play Install Referrer、第三方 SDK 或 Universal Link 能在重新安装或访问时把最初的 click_id 传回,证明“某个设备/用户曾经发生过点击”。
- 浏览器残留:如果通过浏览器登录过,Cookie、LocalStorage、Service Worker、Push 订阅等可能保留登录状态或可被利用做探测。
- 指纹识别和网络探针:攻击者可以通过 IP、UA、屏幕分辨率、字体列表等信息做设备指纹匹配,达到“我知道这是你” 的效果。
常见的“被试”场景(攻击或探测手法)
- 魔法链接探测:发送包含邮箱的重置/登陆请求,看返回的行为差异(是否返回 200、是否发送邮件、是否跳转到特定页面)来判断邮箱是否存在。
- 短链接+tracking probe:用短链发送到大量手机号/邮箱,追踪是否有回连、是否触发 app 唤醒或安装,从而识别活跃用户群体。
- OAuth 恢复链:诱导用户点击含有 OAuth 参数的重定向,若用户仍授权,会重新发放令牌或绑定设备。
- 隐蔽埋点:多层重定向里埋入分析/广告 SDK 的请求,记录点击与设备信息并上报第三方。
如何自己追踪短链跳转链(实操步骤) 1) 先用简单方式查看长链信息:
- curl 跟踪重定向(不执行 JS):curl -I -L -s -S --max-redirs 20 'https://短链' 重点看每一步的 HTTP 状态码和 Location 头。 2) 如果有 JS 重定向或 meta-refresh,用 headless 浏览器:
- 用 Puppeteer 或 Selenium 打开页面并观察 Network 面板,或者用无头 Chrome 的 devtools protocol 导出请求链。 3) 用抓包工具查看真实请求头与参数:
- Charles / Fiddler /mitmproxy(手机需配置代理并信任证书),可以看到实际的请求/响应、Set-Cookie、Referer 等。 4) 分析跳转链中的域名与参数:
- 搜域名谁家提供服务(广告/abs/analytics/shortener),搜索域名和参数名(如 click_id、referrer、token)。 5) 模拟安装链(如果想测 deferred deep link):
- Android 可用 adb + Play Install Referrer 测试,或在真实设备上通过代理抓包。 6) 查看服务端差异行为:
- 同一短链在不同条件下(不同 IP、不同 UA、带/不带 Referer)会有不同返回,可借此判断是否有账号试探逻辑。
给非技术人的快速工具与小技巧
- 预览缩短链接:部分短链服务提供“+”或“preview”功能(如 bit.ly 后加 + 可查看目标)。
- 在线解短链:unshorten.it、CheckShortURL 等网站可显示跳转链和最终目标。
- 安全打开:用沙箱/虚拟机或隐私浏览器打开未知短链,避免直接用主设备的登录状态点击。
- 若要确认是否被试:在账号服务的“设备与会话”页查看最近登录和已授权的应用;在第三方账号(Google/Facebook)里检查授权列表并撤销可疑项。
建议的操作步骤(遇到疑似被试的短链后) 1) 不立即点击未知短链,先用预览工具或 curl 查看目标。 2) 若已点击并怀疑账号被探测:
- 立刻在服务端撤销所有已知会话/登出所有设备(若服务支持)。
- 在相关第三方账户(Google、Apple、Facebook)里撤销该 App 的授权。
- 修改密码并开启两步验证(2FA),并刷新所有令牌。
- 清除浏览器 Cookie、LocalStorage、Service Worker;对手机做“清除应用数据并卸载”而不是只卸载。 3) 对 Android:Settings -> Apps -> [App] -> Storage -> Clear data,然后 Uninstall。对 iOS:长按删除后在服务端撤销授权并重置密码。 4) 定期在各大账号的安全中心查看“已登录设备”和“已授权应用”,并移除不认识的项。
一份可复制的避坑清单(收藏版)
- 点击前:用 unshorten/checkshorturl、curl -I 或短链“+”预览目标域名。
- 不明来源:用隔离的浏览器/虚拟机/临时设备打开。
- 删除 App:先清除数据(清缓存/清除存储)再卸载;在账户设置撤销授权。
- 登录保护:修改密码、开启 2FA;查看并移除所有已登录设备与旧会话。
- 授权管理:定期在 Google/Apple/Facebook 等处审核并撤销不必要的第三方授权。
- 抓包排查(进阶):用 mitmproxy/Charles 观察短链的完整跳转与埋点,关注 Location/Set-Cookie/Referer。
- 若怀疑被攻击:导出网络请求证据,联系服务方客服并提供时间/IP/短链信息以便核查。
结语 短链本身既方便又危险:它把很多中间步骤隐藏起来,使得信息、参数和追踪更容易流动。对普通用户来说,最实用的就是养成“点击前先看一眼目标”和“卸载前先清除数据并撤销授权”的习惯。把上面的避坑清单收藏起来,遇到不确定的短链先别慌,按步骤排查就好。需要的话我可以把常用的 curl / Puppeteer 命令模板整理成可直接复制的脚本,或者帮你分析一条具体的短链——发给我就行。


