urlscan.io 上手:陌生链接先看截图、跳转链与可见性

推荐网址11小时前发布 一方
0 00

urlscan.io 是一项把网址交给远程浏览器跑一遍、再把过程记录下来的免费服务。它替你访问页面,留下截图、跳转链、请求过的域名和 IP、DOM 快照。对写博客、做运营、审友链的人来说,它像一张链接体检表:链接最终落在哪个域名、有没有顺手加载第三方脚本,都能在这里看到。

urlscan.io 做什么:远程浏览器替你打开链接

提交之后,urlscan 的自动流程会像普通用户那样访问这个地址,并记录由此产生的活动。官方文档列出的观察项包括:联系过的域名与 IP、从这些域名请求的资源(JavaScript、CSS 等)、页面截图、DOM 快照、页面写入的 cookie,以及 JavaScript 全局变量。整个过程在你的浏览器之外完成,不需要在本机打开目标页面。

拿到结果,可以按下面的顺序看:

  • 截图:先看页面外观是否在冒充某个品牌或服务;
  • DOM 与源码:看标题、表单提交地址、藏在页面里的跳转脚本;
  • 请求清单:看加载了哪些第三方域名,有没有陌生的接口地址;
  • 跳转链:看提交的短链最终落到哪里,中间经过几跳;
  • 元数据:ASN、GeoIP、DNS 反查、Cisco Umbrella 排名、Wappalyzer 技术识别。

它还带钓鱼与品牌仿冒判定。官方文档写明,当前覆盖 1500 多个全球品牌,命中后会在结果里标出被仿冒的品牌。这类判定适合当线索用,不宜当结论:识别基于页面特征,误报和漏报都会出现。

提交一次扫描:网页端与 API 两种入口

轻量的用法是打开 urlscan.io 首页,把地址粘进输入框回车。结果通常要等一会儿才生成,页面会刷出截图与请求列表。要批量跑或接进自己的流程,走 API 更合适。

urlscan.io 首页的地址输入框与近期扫描列表
截图来源:urlscan.io(2026-11-03)

提交接口是 POST https://urlscan.io/api/v1/scan,请求体给出 url 与 visibility 两个字段,返回里带 uuid、结果页地址和结果 API 地址。官方的 Quickstart 指南说明,结果至少要 30 秒才会生成,需要拿 uuid 轮询;没完成时结果接口返回 404,已被删除的扫描返回 410。截图和 DOM 各有固定地址,拼上 uuid 就能取。

不想自己写轮询,可以用官方 Python 客户端 urlscan-python。2025 年 5 月 21 日的官方博客介绍了这个库,示例里用上下文管理器打开 Client,提交与取结果各一行。用 curl 也能完成,只是错误码和重试要自己处理。

结果页先看四块:判定、页面、清单、明细

区块能读到什么什么场景下用
verdicts 判定恶意评分、分类、被仿冒的品牌快速区分钓鱼页与正常页
page 页面最终 URL、状态码、服务器头、TLS 签发者与证书天数判断是否被跳转、证书是否刚签发
lists 清单联系过的域名、IP、ASN、证书、响应哈希找同族站点、做横向关联
data 明细每次请求与响应、cookie、控制台消息、全局变量、重定向链定位可疑脚本与跳转逻辑

结果接口文档把这些内容拆进 task、page、lists、data、meta、stats、verdicts 七个顶层键。恶意评分是 verdicts.urlscan.score,数值范围从 -100 到 100,越靠近 100 越可疑。系统标签 labels 只在商业版 urlscan Pro 里返回,社区版拿不到,看到别人截图里有这个字段也不必意外。

第三方博客 phish.report 记录过一套关联方法:先翻 HTTP 明细,挑一个在不同部署里名字稳定的资源文件,再按文件名或响应哈希回搜,把同一套模板的站点串起来。这个方法不依赖判定分数,适合需要写复盘的时候用。

可见性、配额与几个常见坑

三种可见性怎么选

提交时选的可见性,决定谁能看到这份结果,这一点比多数人想的更要紧。

  • public:进入首页与公开搜索结果,任何人都能查到;
  • unlisted:不出现在公开页面和搜索结果里,但 urlscan Pro 中经过审核的安全研究人员与安全公司可见;
  • private:只有提交者本人可见,把 uuid 分享给别人才能看。

可见性说明页还写着,扫描会在保留期结束后从系统中删除。如果链接里带手机号、邮箱、订单号这类能指向具体个人的信息,不要用 public。想留证据又要收窄范围,unlisted 是折中方案;只做自查就用 private。公开文章里引用结果页时,也顺手确认一下页面本身有没有不该露出的内容。

配额与速率限制

配额同时作用于网页端和 API,按分钟、小时、天三个窗口分别计算。只有返回 HTTP 200 的请求才计数,超限后同一动作返回 429。窗口按固定时段重置,日窗口在 UTC 零点归零,也就是北京时间早上八点前后才会刷新。每次响应都带 X-Rate-Limit 系列头,能读出当前动作在哪个窗口还剩多少,也可以直接请求 /api/v1/quotas 查额度,细节在 速率限制文档里。

免费账号的配额页显示,公开扫描每天 2500 次、unlisted 每天 500 次、private 每天 25 次、搜索请求每天 500 次。数字随账号状态变化,以你账号里的配额页为准。未登录时接口只给很小的额度,且按 IP 计算,所以真要用,先注册账号、建一个 API key。

几个容易踩的点:

  • 扫描结果不等于页面真实内容。目标站点可能对自动化访问返回另一个版本,或者直接弹人机验证;
  • 只能看到匿名可见的部分。需要登录才出现的内容,扫描拿不到;
  • 公开结果会被别人搜到,也可能被搜索引擎收录;
  • 判定分数不是证据链,既会误报,也会被有意规避。

官方在 2026 年 4 月 15 日的一篇研究文章里给了个很实用的观察点:用 Ultraviolet、Scramjet 这类客户端代理框架搭的钓鱼页,会在请求明细里留下 uv.bundle.js、uv.config.js、uv.handler.js 这些文件名,以及 __uv$config 这样的全局对象。作者的建议很直接——在 HTTP 明细里按文件名翻一遍,比只看截图更有信息量。对应的技术标签 tech.proxy.ultraviolet 与 tech.proxy.scramjet 目前只在 Pro 版提供。

适合谁,以及怎么开始

它适合三类人:写文章要核实外链的博主、需要审核落地页的运营、做初筛的安全与运维同学。它不适合当判断依据的全部,也替代不了本地沙箱和日志分析。

上手可以按这个顺序走:

  1. 先扫自己的站点,熟悉结果页里各块的位置;
  2. 再扫一条自己确认安全的短链,看跳转链是怎么被记录的;
  3. 遇到可疑链接,用 unlisted 提交,减少别人顺着结果页找到你;
  4. 需要日常巡检时接 API,把结论写进自己的记录表。

如果平时还会在浏览器里处理来路不明的数据,CyberChef 这类工具可以先做解码和格式判断;想自己搭自动化浏览器流程,可以参考 browser-use 的实践记录。看结果里的证书信息时,ACME 证书自动化那篇能帮你判断证书刚签发意味着什么。

常见问题

扫一次要等多久?

接口文档写的是至少 30 秒,页面复杂时会更久。结果没生成时接口返回 404,别当成提交失败。

结果一定会公开吗?

不一定。可见性在提交时决定,只有 public 才会进入首页和公开搜索。拿不准用途时先用 private,确认无害再考虑公开。

能不能只查技术栈?

可以看 page 里的 Server 头,以及 meta 中 Wappalyzer 的识别结果。识别基于页面特征,单页应用与自研框架常常认不出来。

© 版权声明

相关文章