2026-03-11 20:08:29 +08:00
2026-03-11 20:08:29 +08:00
2026-03-11 20:08:29 +08:00
2026-03-11 20:08:29 +08:00
2026-03-11 20:08:29 +08:00
2026-03-11 20:08:29 +08:00
2026-03-11 20:08:29 +08:00

Favicon 代理 APICloudflare Pages

通过 HTTP API 代理获取任意网站的 favicon解决国内无法直连部分站点的问题。
使用 GoogleDuckDuckGo直连目标站 三路同时请求,谁先成功返回就用谁

说明Bing 没有公开的 favicon 接口,因此第二源使用 DuckDuckGo直连目标站https://域名/favicon.ico)作为第三路,真正起到“代理访问被墙站”的作用。

接口说明

  • 方法: GET
  • 路径: /api/favicon
  • 参数:
    • url / domain / u(必填):目标网站完整 URL 或域名,如 https://twitter.comgithub.com
    • size(可选):图标尺寸 16256默认 128仅对 Google 源生效)

示例

# 使用 url 参数
curl -o favicon.ico "https://你的 Pages 域名/api/favicon?url=https://twitter.com"

# 使用 domain 参数
curl -o favicon.ico "https://你的 Pages 域名/api/favicon?domain=github.com&size=64"

前端使用:

<img src="https://你的 Pages 域名/api/favicon?url=https://example.com" alt="favicon" width="32" height="32" />

部署到 Cloudflare Pages

方式一:通过 Wrangler CLI

  1. 安装 Wrangler

    npm install -g wrangler
    
  2. 登录 Cloudflare

    wrangler login
    
  3. 在项目根目录部署:

    wrangler pages deploy . --project-name=cf-favicon
    

    首次会提示创建项目,之后会得到 https://cf-favicon.pages.dev 这类地址。

方式二:通过 Git 连接(推荐)

  1. 将本仓库推送到 GitHub/GitLab。
  2. Cloudflare DashboardWorkers & PagesCreatePagesConnect to Git
  3. 选择仓库,构建配置:
    • Build command: 留空(无构建步骤)
    • Build output directory: /.(根目录即为静态资源)
  4. 保存并部署。
    部署完成后 API 地址为:https://你的项目名.pages.dev/api/favicon?...

项目结构

cf-favicon/
├── functions/
│   └── api/
│       └── favicon.js   # Favicon 代理 API 实现
├── public/
│   └── favicon.ico      # 可选:默认图标,当所有外部源都失败时返回此文件
├── index.html           # 简单说明页(可选)
├── wrangler.toml        # 可选,用于 wrangler 部署
└── README.md

行为说明

  • 请求会同时发往 GoogleDuckDuckGo目标站 /favicon.ico 以及 目标站首页 HTML 中的 <link rel="icon">(支持 ico/png/jpg/webp/svg 等),采用“先成功先返回”,减少单点失败。
  • 回退:若三路均失败,会尝试返回 public/favicon.ico;若该文件存在则返回 200 并带响应头 X-Favicon-Fallback: true,否则返回 502。
  • 运行在 Cloudflare 边缘,请求从 CF 出去,相当于代理访问,适合在国内环境调用以获取国外站点的 favicon。
  • 成功时返回图片二进制和 Cache-Control: public, max-age=86400;失败时返回 400/502 及 JSON 错误信息。

License

MIT

Description
cf-favicon (Cloudflare Workers / Pages Functions)
Readme 34 KiB
Languages
JavaScript 75.8%
HTML 24.2%