不能。packagist api 的 downloads 字段是2021年起冻结的不完整历史快照,非实时下载量;真实热度应查 github stars 或爬取 dependents 页面解析依赖数。

Packagist API 能查下载量吗?
不能。Packagist 官方 API(https://packagist.org/api/)不提供任何下载量(downloads)、安装量或实时流行度数据。你调用 /packages/{vendor}/{package} 返回的 JSON 里,downloads 字段是**所有时间累计的估算值**,且早已停止更新——自 2021 年起就固定在某个数字不再变动。
那 downloads 字段里的数字哪来的?
是 Packagist 在关闭统计前最后一次抓取的快照,来源是镜像同步日志和部分 CDN 日志,本身就不完整,也不区分真实安装与 CI 构建、本地 composer install 或 bot 请求。它既不是月度数据,也不含去重逻辑,更无法反映当前活跃度。
- 比如
monolog/monolog的downloads显示约 3.2 亿,但这是 2020 年底的冻结值 - 新包哪怕每周被装上千次,该字段也永远显示
0 - 字段名误导性强,实际含义接近“历史痕迹存档”,不是指标
想看真实热度,有什么替代方案?
得绕开 Packagist API,转向外部信号源。靠谱的只有两个:
-
GitHub stars和forks:直接反映开发者关注度,适合开源包。用 GitHub REST API 查/repos/{owner}/{repo},注意要带Accept: application/vnd.github.v3+json -
dependents数(即多少其他包在composer.json中声明了它):Packagist 页面上可见,API 不暴露,但可通过爬取https://packagist.org/packages/{vendor}/{package}/dependents的 HTML 解析(需遵守 robots.txt 和速率限制)
别碰第三方“下载量排行榜”网站——它们要么用过期 Packagist 数据,要么伪造请求刷数,没有可信来源。
如果非要写个脚本查依赖数,要注意什么?
HTML 解析脆弱,但比幻想 API 有数据更现实。关键点:
- 依赖页 URL 是
https://packagist.org/packages/{vendor}/{package}/dependents?page=1,总页数藏在<div class="float-right">Page 1 of X</div>里 - 每页最多 20 个依赖项,
X可能超百,别硬写死循环上限 - 响应可能返回 429(too many requests),必须加
sleep(1)且带上User-Agent头,否则 IP 会被限流 - 不要用正则解析 HTML,用
DOMDocument或轻量simple_html_dom,否则遇到换行或空格就崩
真要自动化,优先查 GitHub stars;依赖数只建议手动点开页面扫一眼——毕竟多数人关心的只是“这包是不是被主流项目用了”,而不是精确到个位的数字。










