网络代理(Fire TV上的开发者工具)
开发者工具菜单提供一个网络代理选项,以便您检查HTTP流量。如果您的应用与远程服务或网站通信,则检查其生成的HTTP或HTTPS流量通常很有用。这包括您的应用发起的请求及其收到的响应,以及包含Cookie、缓存信息和其他信息的HTTP标头。
网络代理
如果您的应用与远程服务或网站通信,则检查其生成的HTTP或HTTPS流量通常很有用。这包括您的应用发起的请求及其收到的响应,以及包含Cookie、缓存信息和其他信息的HTTP标头。
网络代理选项允许您指定所有网络流量将流经的代理的主机名和端口,允许您观察发送到您的应用或从中发送的数据。代理主机和您的Fire TV必须位于同一网络上。
使用Charles代理处理HTTPS和加密数据
如果您的应用使用敏感信息,您很可能依赖HTTPS连接来防止窃听和中间人攻击。在这种情况下,流量在源和目标之间通过SSL进行加密,使其保持私密性 — 即使您通过网络代理选项配置自己的代理也无法访问数据。
某些代理支持SSL代理,允许您查看网络流量,即使网络流量已加密。Charles代理是一个提供此功能的常见实用工具。当您的应用尝试与远程服务器通信时,Charles代理会拦截服务器证书,并动态生成和签署自己的证书。它使用此替代证书与您的应用建立安全连接,然后使用它收到的原始服务器证书安全地连接到远程站点,从而允许您以纯文本形式查看应用与SSL Web服务器之间的通信。
要在Charles代理中利用SSL代理,您的应用必须信任用于签署Charles代理生成的替代证书的证书颁发机构 (Charles CA)。在Fire OS 5上,只需在设备上安装证书就足够了,因为所有应用都隐式信任在设备级别安装的证书。在Fire OS 6上,每个应用都必须通过在res/xml/network_security_config.xml
中列出证书来明确指定它信任哪些证书。
要确定测试设备上安装的Fire OS版本,请转到Settings(设置)> My Fire TV(我的Fire TV)> About(关于)> Fire TV,然后查看“Software Version”(软件版本)详细信息。您还可以查看Fire TV设备及其对应的Fire OS版本的完整列表。
以下步骤假定您已经安装并配置了Charles代理。如果您不熟悉应用,请参阅文档。
信任FOS 5上的Charles CA
- 从Charles代理应用中获取PEM格式的证书文件。从菜单中,选择Help(帮助)> SSL Proxying(SSL代理)> Save Charles Root Certificate…(保存Charles根证书...)。
- 将证书文件上传到您的Fire TV设备:
adb push charles-ssl-proxying-certificate.pem /storage/emulated/0/Download
- 调出您刚上传的文件的“证书安装程序”对话框:
adb shell am start -a "android.intent.action.VIEW" -d "file:///storage/emulated/0/Download/charles-ssl-proxying-certificate.pem" -t "application/x-x509-ca-cert"
-
提供一个方便记忆的名称,并确保在Credential use(凭证使用)下选择VPN and apps(VPN和应用)。
- 按确定安装证书。系统将要求您使用您的亚马逊凭证进行身份验证,然后屏幕通知将确认操作成功。
信任FOS 6上的Charles CA
- 按如上所述获取并安装FOS 5的证书文件。
-
更新您Android项目的
AndroidManifest.xml
以包含网络安全配置文件:<?xml version="1.0" encoding="utf-8"?> <manifest ... > <application android:networkSecurityConfig="@xml/network_security_config" ... > ... </application> </manifest>
- 如果IDE和构建工具没有自动设置此标记,请在该元素中添加
android:debuggable="true"
。请参阅有关如何配置CA以进行调试的详细信息。 -
在您的Android项目中添加以下
res/xml/network_security_config.xml
,以显式信任所有已安装的证书:<?xml version="1.0" encoding="utf-8"?> <network-security-config> <debug-overrides> <trust-anchors> <!-- Trust the following CA while debuggable only --> <certificates src="user"/> </trust-anchors> </debug-overrides> </network-security-config>
-或-
- 按如上所述获取FOS 5的证书文件,但不要将其安装在设备上。
- 而是将文件复制到Android项目的
res/raw
子目录中,从而直接将文件嵌入到您的应用中。为了方便起见,可以重命名该文件(例如,res/raw/my_ca
)。 -
如上所述,更新您的Android项目清单以添加网络安全配置文件,如
res/xml/network_security_config.xml
,但更改src属性,以使用您为证书选择的文件名:... <!-- Trust the following CA while debuggable only --> <certificates src="@raw/my_ca"/> ...
检查加密流量
将设备配置为信任Charles CA证书后,您可以在设备上启用网络代理,并开始观察进出应用的加密流量。按照列出的顺序执行以下步骤非常重要。
使用Charles代理检查加密流量:
- 确保Charles代理正在运行。
-
在Charles代理应用中打开SSL代理。从菜单中,选择Proxy(代理)> SSL Proxy Settings…(SSL代理设置...),然后使用Add(添加)指定要观察的主机。子域(如
www
)被认为是不同的域,应单独列出。 -
在您的设备上,将网络代理模式设置为手动,并指定运行Charles代理的主机名(或IP地址)和端口号。
- 启动您的应用。
现在,您可以查看应用与您在Charles代理中为其启用SSL代理的服务器终端节点之间的安全网络流量。数据未加密,以供Charles代理显示,然后重新加密以传送到其最终目的地。您可以看到每个请求和响应的明文标题和正文。
有关使用Charles代理检查应用的网络流量的更多信息,请参阅文档。
另请参阅
更多详细信息,请参阅以下内容:
Last updated: 2021年1月28日