Immich 团队的 *.immich.cloud 域名被 Google 安全浏览服务错误地标记为“危险”,导致用户无法访问。团队通过 Google Search Console 申诉后,问题一度得到解决。然而,由于 Google 会自动抓取并标记新创建的预览环境,导致域名被反复封锁。为了彻底解决问题,团队决定将预览环境迁移到新的 immich.build 域名,并指出 Google 的安全机制对开源和自托管软件存在系统性缺陷。
网站被标记为危险
本月早些时候,所有 *.immich.cloud 网站突然被 Google 标记为危险网站,用户访问时会看到一个令人生畏的红色警告页面。
- 什么是 Google 安全浏览服务? 这是一项由 Google 提供的免费服务,旨在检测网站是否存在恶意软件、垃圾软件或社交工程(如网络钓鱼)。Chrome 和 Firefox 等主流浏览器都集成了这项服务。
- 被标记的后果是什么? 网站基本上对所有用户都变得无法访问。只有极少数技术用户知道这可能是误报,并懂得如何点击多层菜单来“访问这个不安全的网站”。
团队发现,不仅是用户的 Immich 部署,连他们自己的内部网站和预览环境也都被标记了。
通过 Google Search Console 申诉
几天后,团队意识到问题不会自行消失,唯一的官方解决途径是使用 Google Search Console。这意味着他们必须创建一个 Google 账户,并通过该工具为自己的网站请求审查。
Google Search Console 提供了一些细节,指出问题在于“欺骗性内容”。
Google 在您网站的某些页面上检测到了有害内容。我们建议您尽快将其删除。在此之前,Google Chrome 等浏览器将在用户访问或从您的网站下载某些文件时显示警告。
这些页面试图诱骗用户从事危险行为,例如安装不需要的软件或泄露个人信息。
报告中列出的“问题网址”实际上是团队用于开发测试的预览环境。最令人担忧的是,一个被标记的子域名会导致整个主域名被封锁。
团队在申诉请求中解释道:
Immich 是一个自托管应用程序,Immich 团队拥有并运营 immich.cloud 域名及子域名。被标记的网站是我们自己产品的部署,并未冒充任何其他实体或个人。
一两天后,申诉被接受,域名恢复了正常。
问题再次出现
然而,问题并没有就此结束。Immich 的工作流程允许开发者为 GitHub 上的拉取请求(Pull Request)自动创建预览环境。
- 当一个新的预览环境被创建时,系统会在 GitHub 上发布一个链接。
- Google 的爬虫会抓取到这个新链接。
- 随后,爬虫访问该预览网站,并再次将其标记为“欺骗性网站”。
- 最终,整个
immich.cloud域名再次被封锁。
这个循环导致问题反复发生,申诉获得的解封只是暂时的。
新的解决方案与更广泛的问题
为了从根本上解决这个问题,团队决定将所有预览环境迁移到一个全新的、专用的域名——immich.build。这样即使预览环境被标记,也不会影响到核心服务和其他用户的部署。
这次事件揭示了一个更广泛的问题:Google 安全浏览服务的设计似乎没有考虑到开源或自托管软件的特殊性。许多流行的开源项目都遇到过类似问题,例如:
- Gitea
- Mastodon
- Matrix
结论是,Google 拥有单方面将任何域名标记为危险并使其无法访问的权力。对于开发者来说,除了不断向 Google 提出申诉之外,似乎没有更好的应对方法。