技术指南

尽管智能手机在全球的普及度持续提升,但新兴市场的大部分民众仍在使用功能机。为保障所有用户均可访问 Free Basics 服务,我们重点对轻量化移动网站提供适配支持。

详细信息

为使网站能在 Free Basics 平台正常展示,并适配各类手机与流量套餐,您的移动网站必须满足 Free Basics 代理制定的多项技术要求。具体而言,移动网站在缺失以下技术时仍需完整可用:

  • JavaScript
  • iframe
  • 视频和高分辨率图片
  • Flash 和 Java 小程序

网站上线后,若检测到其中包含以上任意内容,我们将屏蔽您的网站,直至确认相关内容已全部移除。

JavaScript

为保证全设备兼容的使用体验,禁用 JavaScript 后您的服务仍需保持功能正常可用。这意味着您的内容不应依赖于 JavaScript 来提供任何核心用户体验,尤其是导航或其他核心功能。

iframe

我们可能会对 iframe 进行部分拦截限制,因此您的内容不可依托 iframe 运行。我们建议直接放弃使用 iframe,该组件通常会大幅降低移动浏览体验。

视频和大图资源

为节省 Free Basics 用户的流量消耗,请避免使用视频和高清大图等高耗流量资源。为保障基础访问体验,我们可能对部分视频和图片做压缩处理,极端情况下会直接不予展示。

Flash 和 Java 小程序

Free Basics 不支持 Flash 资源或 Java 小程序。若您的服务使用了此类技术,必须配套实现完善的降级兼容方案,将相关内容妥善隐藏,避免干扰网站的正常功能。

HTTPS 支持

Free Basics 会尽可能对传输数据加密。用户使用 Free Basics Android 应用时,流量默认采用端到端加密,除非您指定服务仅支持 HTTP。用户通过手机浏览器访问 Free Basics 网站时,我们会采用“双重证书”机制,双向加密用户设备与平台服务器之间的传输数据。如果您的服务器支持 HTTPS,我们还会对我们服务器与您服务器之间的流量进行加密。即使您的服务尚不支持 HTTPS,但除非您要求我们不使用双重证书 HTTPS,否则我们也会尽可能加密我们服务器与用户设备之间的信息。用户使用 Free Basics 移动网站时,数据会在我们的安全服务器上临时解密,以此保障各类服务正常运行,同时避免用户产生额外流量扣费。

数据临时解密期间,我们将严格保护用户隐私,仅保存您的服务域名和消耗流量大小(与端到端加密时的可见信息相同),并且 Cookie 也会以加密、不可读取的格式存储。

Internet.org 代理

用户在 Free Basics 内产生的所有流量都会通过 Internet.org 代理进行路由。该设计统一了流量传输链路,便于运营商识别对应服务并为其提供免流量计费。请务必注意:Internet.org 既不托管也不会缓存您的服务(您的服务仍在您自己的服务器中运行,且完全由您维护);通过检测从 Free Basics 开放平台传输的请求,您可以对您的内容实施区域屏蔽等控制手段,或衡量您的 Free Basics 平台数据流量。

IP 地址

  • 请注意,受 SSL 加密机制限制,Free Basics Android 应用不支持 x-iorg-fbs-uipx-iorg-fbs HTTP 标头字段。

由于所有请求都将通过 Internet.org 代理传递,HTTP 请求的 IP 地址将始终来自我们的服务器,而不是来自原始请求者。您可以从 X-IORG-FBS-UIP HTTP 标头字段(由我们的代理创建)中获取原始请求者的 IP。

我们的代理也遵循 X-Forwarded-For 约定,因此还可在该字段中找到相同的 IP 地址(即第一个非私有 IP 地址)。

检测请求

通过 Internet.org 代理传递的所有请求都将包含 X-IORG-FBS 字段(始终设置为 true)。只需检查标头中是否存在该字段即可。

除此之外,Internet.org 字符串还会包含于 Via 标头字段中,这是识别通过代理传递的请求的辅助方式。

来自 Android 应用的所有请求都将包含一个唯一的用户代理 HTTP 标头值(具体值取决于应用版本)。此类用户代理的示例如下:

Mozilla/5.0 (Linux;Android 7.1.2;Pixel Build/N2G47E; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 Mobile Safari/537.36[FBAN/InternetOrgApp;FBAV/7.0;]

若要检测请求,您可以检查字符串中是否包含“InternetOrgApp”。

Cookie

支持 Cookie。

用户代理(UA 字符串)

Internet.org 代理不会更改原始请求者的 UA 字符串。

分析与成效衡量

您可以在网站上使用追踪服务,例如 Google AnalyticsEffective MeasureChartbeat 等。但正如前文所述,当前我们的网页运行环境不支持 JavaScript,这一点请务必留意:许多分析服务的完整功能都依赖 JavaScript 实现,不过大部分服务商都提供了 JavaScript 不可用时的降级方案。请查阅您所使用分析服务的文档。

Google Analytics

为了让您在 Free Basics 平台内更轻松地使用不含 JavaScript 的 Google Analytics,下方提供了一些关于如何设置服务的指导。

检测国家/地区

为了正确检测用户所在国家/地区,您需要为 Google Analytics 请求正确填写 UIP 覆盖参数。最简单的方法是利用 X-IORG-FBS-UIP HTTP 标头字段(参阅 Internet.org 代理)。向 Google Analytics 发出的请求必须在服务器端设置 UIP 参数。

不依赖 JavaScript 进行追踪

若要在不依赖 JavaScript 的前提下完成流量分析,您需要通过自己服务的后端实现统计逻辑。

Google Analytics 请求可完全由后端管理,而服务器可负责管理 Cookie(或以其他方式区分用户)。您可以自行决定在请求中填写和使用哪些参数来进行分析。这可以使用 Google Analytics Measurement Protocol 完成。

如果您已有 iframe 解决方案,您需要在服务器端向 Google Analytics 地址发出 POST 请求。大多数参数将和 iframe 解决方案使用的参数一致

测试

在提交网站进行审核之前,您应该先测试网站,确保满足上述所有要求。以下资源可帮助您实时了解自己的准备情况。

Chrome 设备模拟器

Chrome 浏览器内置移动端模拟功能,可覆盖大多数测试场景。我们建议打开设备模拟,并针对以下情况测试您的整个网站:

相关说明可参阅:https://developer.chrome.com/devtools/docs/device-mode

Opera 模拟器

Opera 提供了专属模拟器,方便您对网站在 Opera Mini 浏览器上的渲染和运行方式进行更具体的测试。

相关说明可参阅:http://dev.opera.com/articles/installing-opera-mini-on-your-computer/