没有网站时如何托管 app-ads.txt
爬虫真正需要什么,三种无需建站就能提供主机的方法,每种方法的重定向陷阱,以及如何确认它可以正常工作。
你不需要网站,只需要一个由你控制的主机名,以纯文本、HTTP 200、无重定向的方式提供 /app-ads.txt。把这个地址填入商店详情的开发者网站字段——在 App Store 上是 Marketing URL——爬虫就会在那里读取文件。AdMob 明确把 Firebase Hosting 列为可接受的方式。
几分钟就能搞定
AppFoyer 托管本指南所讲的页面——隐私政策、服务条款、支持、账号删除和 app-ads.txt——放在它们自己的子域名上,你无需自己的域名或服务器。一个应用免费,而且商店要求的任何内容都绝不放在付费墙后面。
核查于 2026年10月12日。 商店政策会变,有时不会事先通知。下文所有内容都链接到官方文档,以那个页面为准,而不是本页。如果两者不一致,以商店为准。 本指南译自英文;引用的商店文档保留英文原文。
你不需要网站,只需要一个由你控制的主机名,以纯文本、HTTP 200、无重定向的方式提供 /app-ads.txt。 把这个地址填入商店详情的开发者网站字段——在 App Store 上是 Marketing URL,在 Google Play 上是 Store listing contact details(商店详情联系信息)下的 Website——爬虫就会在那里读取文件。
AdMob 直接说明了这一点:“If you don’t have a suitable website that allows the uploading of an app-ads.txt file at the root level, you can use Firebase Hosting to host your app-ads.txt file.”(译文:如果你没有合适的、允许在根目录上传 app-ads.txt 文件的网站,可以使用 Firebase Hosting 托管你的 app-ads.txt 文件。)平台托管是预期的做法,而不是变通办法。
爬虫真正需要什么
爬虫不会按包名查找你的应用。它从你的商店详情中取出开发者网站,保留主机名,然后在其根目录抓取 /app-ads.txt。AdMob 的规则:
- 根目录,而不是路径。 指向
example.com/myapp的列表会在example.com/app-ads.txt处检查。 - 一级子域名。 爬虫会 “probe[s] up to one subdomain level from the developer website”(译文:从开发者网站起最多探测一级子域名)。
www.和m.被视为域名本身。 - 直接提供。
200 OK、Content-Type: text/plain、无重定向、无需登录、robots.txt中没有任何规则阻止它。
所以要做的事情是:一个不会变动的地址,正确地提供一个文本文件,持续数年。下面三种方法都能做到;区别在于你需要维护多少。
方法 1:Firebase Hosting
这是 AdMob 点名的方法。一个免费的 Firebase 项目会给你一个主机名,例如 your-project.web.app。
- 在 Firebase 控制台中创建项目,并安装 Firebase CLI。
- 在一个空文件夹中运行
firebase init hosting,保留默认的public目录。 - 把你的
app-ads.txt放进public/,与生成的index.html放在一起。 - 运行
firebase deploy --only hosting。 - 在每个商店详情中把
https://your-project.web.app设为开发者网站。
陷阱:如果你以后连接了自定义域名,并选择把 web.app 地址重定向到该域名,那么列表中的地址就会返回重定向。要么让列表继续使用直接提供文件的那个地址,要么把列表更新为新域名。
方法 2:GitHub Pages 或其他静态托管
任何静态托管都可以,只要文件最终位于你所声明主机名的根目录。
在 GitHub Pages 上这个细节很重要:项目站点位于 username.github.io/repo/,但爬虫只检查 username.github.io/app-ads.txt。文件必须放在用户站点中——即名为 username.github.io 的仓库——或者该项目需要有自己的自定义域名。
同样的重定向陷阱也适用:一旦配置了自定义域名,GitHub Pages 会把 github.io 地址重定向到它。请声明那个无需跳转就能提供文件的地址。
方法 3:托管的合规页面
如果你还需要隐私政策、支持页面或账号删除 URL——而带广告的应用几乎总是需要第一项——同一个主机可以提供所有这些内容。这正是 AppFoyer 所做的:每个应用都有自己的子域名,以纯文本、无重定向的方式提供 app-ads.txt,旁边就是商店要求的各个页面。对于开发者网站为 AppFoyer 地址的两个商店上的应用,AdMob 报告 “app-ads.txt file found and verified”(已找到并验证 app-ads.txt 文件)(2026 年 10 月核实)。我们目前还没有来自其他广告网络的抓取结果。
在爬虫之前先自己检查
curl -i https://your-host.example/app-ads.txt
你需要看到 HTTP/2 200(或 HTTP/1.1 200 OK)、content-type: text/plain、没有 location: 头,并且正文中有你的那些行。这里出现 301 或 302 是最常见的隐形失败。
然后等待。AdMob 表示 “it can take up to 24 hours for AdMob to crawl and verify your app-ads.txt files”(译文:AdMob 抓取并验证你的 app-ads.txt 文件可能需要最多 24 小时)。状态位于 Apps → View all apps → app-ads.txt;如果过了一天仍显示未找到,未找到问题指南会按顺序逐一排查原因。
权威来源
- Set up app-ads.txt — AdMob 帮助中心。关于 Firebase Hosting 的那句话、根目录和子域名规则以及 24 小时这一数字均出自此页面。
- Understand app-ads.txt file statuses — AdMob 帮助中心。状态在哪里查看,以及每种状态的含义。
- ads.txt / app-ads.txt specification — IAB Tech Lab。