composer如何查看包的下载量和流行度?(packagist.org API调用示例)

5次阅读

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

composer如何查看包的下载量和流行度?(packagist.org API调用示例)

Packagist API 能查下载量吗?

不能。Packagist 官方 API(https://packagist.org/api/)不提供任何下载量(downloads)、安装量或实时流行度数据。你调用 /packages/{vendor}/{package} 返回的 json 里,downloads 字段是**所有时间累计的估算值**,且早已停止更新——自 2021 年起就固定在某个数字不再变动。

downloads 字段里的数字哪来的?

是 Packagist 在关闭统计前最后一次抓取的快照,来源是镜像同步日志和部分 CDN 日志,本身就不完整,也不区分真实安装与 CI 构建、本地 composer install 或 bot 请求。它既不是月度数据,也不含去重逻辑,更无法反映当前活跃度。

  • 比如 monolog/monologdownloads 显示约 3.2 亿,但这是 2020 年底的冻结值
  • 新包哪怕每周被装上千次,该字段也永远显示 0
  • 字段名误导性强,实际含义接近“历史痕迹存档”,不是指标

想看真实热度,有什么替代方案?

得绕开 Packagist API,转向外部信号源。靠谱的只有两个:

  • GitHub starsforks:直接反映开发者关注度,适合开源包。用 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;依赖数只建议手动点开页面扫一眼——毕竟多数人关心的只是“这包是不是被主流项目用了”,而不是精确到个位的数字。

text=ZqhQzanResources