跳过导航 →

常见问题解答

常规问题

Charles中未显示本地主机流量

某些系统硬编码为不对本地主机流量使用代理,因此当您连接到http://localhost/时,它不会出现在Charles中。

解决方法是改为连接到http://localhost.charlesproxy.com/。该地址指向IP地址127.0.0.1,因此应与localhost功能相同,但优势在于它会通过Charles。无论Charles是否运行或您是否使用Charles,此方法都有效。如果您使用不同的端口(例如8080),只需像往常一样添加,例如localhost.charlesproxy.com:8080。

您还可以在该域名前添加任何内容,例如myapp.localhost.charlesproxy.com,它也将始终解析为127.0.0.1。

或者,您可以尝试在localhost后添加“.”,或用您的计算机名称替换localhost,或使用本地链接IP地址(例如192.168.1.2)。

如果Charles正在运行并且您使用Charles作为代理,您还可以使用local.charles作为localhost的替代。请注意,这仅在您使用Charles作为代理时有效,因此除非您特别希望在不使用Charles时请求失败,否则上述方法更可取。

永久链接

响应中出现奇怪字符

请检查服务器是否正确设置了字符编码或字符集,否则Charles会猜测,可能猜错。

您可能还需要选择能够显示响应中字符集的字体。您可以在“用户界面”选项卡的首选项中更改使用的字体。更改后需要重启Charles才能生效。

永久链接

Charles启动失败,提示“Failed to find Java VM”

Charles使用Java,因此您需要安装Java运行时环境(JRE)。您可以从Oracle下载Java

如果您使用32位版本的Charles,必须安装32位JRE;反之,如果您使用64位版本的Charles,必须安装64位JRE。

如果您已安装正确的JRE但仍收到“Failed to find Java VM”消息,请尝试重新安装Java——如果Charles找不到您的JRE,可能是您的注册表中包含一些无效信息,重新安装会纠正此问题。另外请注意,Charles需要JRE,如果仅安装了JDK,它将无法运行。安装JDK时通常会提供安装JRE的选项,因此通常这不是问题。

永久链接

Charles未运行时无法浏览

可能是您的浏览器代理设置已更改为使用Charles,但由于某些原因未更改回来。

首先尝试正常启动和退出Charles,看看是否能解决问题。因为如果Charles异常停止(如崩溃),它没有机会重置您的代理设置。重新启动时应能注意到此问题。

如果无效,您需要手动修复代理设置。具体操作取决于配置错误的应用程序:

Windows / Internet Explorer
首先退出Charles。然后转到控制面板中的Internet选项。转到“连接”选项卡,点击“局域网设置”。您会看到一个代理面板。取消选中“使用代理服务器”复选框。点击“确定”直到关闭Internet选项。

Mac OS X
打开系统偏好设置,进入“网络”偏好设置。选择适当的网络端口(如果有多个,可能需要重新配置多个),点击“配置”。转到“代理”选项卡。查看代理服务器列表,您会看到“网页代理”和“安全网页代理”处于活动状态。取消选中这些或根据您的网络需求重新配置。点击“立即应用”然后关闭网络偏好设置。

Firefox
首先退出Charles。然后打开Firefox偏好设置窗口,在“常规”选项卡中点击“连接设置”。选择“直接连接到互联网”或输入您的网络所需的代理设置。点击“确定”然后关闭偏好设置窗口。

永久链接

Charles崩溃

崩溃情况幸运地很少见!以下是可能导致崩溃的原因,或有助于我诊断并希望解决问题的信息...

已知问题

以下是我已知的Charles可能存在的问题及推荐解决方案:

NOD32 IMON

如果您运行NOD32防病毒软件并启用其IMON服务,可能会遇到Charles崩溃——Charles可能前一秒还在正常运行,下一秒就消失了,导致浏览器代理设置未恢复(幸运的是重新启动Charles可以修复此问题)。

目前NOD32没有修复方案,因此您需要禁用IMON或将Charles排除在外。后者是首选方案,因为您可以继续受益于IMON——尽管您可能还会发现它干扰其他应用程序。

将Charles排除在IMON之外
我们需要将Charles添加到排除列表中。Charles是Java应用程序,因此将Charles.exe应用程序添加到排除列表无效:您需要将JRE目录中launch4j-tmp目录内的Charles.exe添加到排除列表。

打开NOD32控制中心,点击IMON,点击“设置”按钮进入IMON设置。

转到“其他”选项卡,找到“排除”面板。点击“排除”面板中的“编辑...”按钮。将出现“排除应用程序”对话框。

点击“添加...”按钮。找到您的Java安装目录。通常位于C:Program FilesJavajre*,其中*是版本号。如果安装了多个JRE,请检查Charles使用的版本(使用“帮助”菜单中的“关于Java”)。在JRE文件夹中会有一个launch4j-tmp文件夹,其中包含需要排除的Charles.exe。

报告崩溃

如果您的未在上述问题中描述,请向我报告。以下信息将有助于诊断问题:

  • 您的操作系统名称和版本(例如Windows XP SP2)
  • Charles运行的Java版本,如“帮助”菜单中的“关于Java”所示
  • 查找Charles目录中创建的Java崩溃日志(例如C:\Program Files\Charles),它们将命名为hs_err_pid###.log。请将其中一个日志复制并粘贴到邮件中。

最后通过联系页面将所有信息发送给我。

永久链接

无法通过NTLM / Windows集成身份验证

Charles支持NTLM身份验证网站。您可以通过Charles访问NTLM身份验证网站而不会出现问题。

NTLM身份验证也称为“Windows NT挑战响应”和“集成Windows身份验证”,主要与IIS一起使用。

注意:要通过Charles使用NTLM身份验证,必须使用HTTP 1.1。有关配置浏览器使用HTTP 1.1的更多信息,请参阅相关文档。

永久链接

Mac OS X上的Adobe Flash未使用Charles

不幸的是,Mac OS X上的Flash存在问题。它不使用操作系统代理设置,并且似乎没有提供自己的代理设置。因此,当您在创作环境或独立运行Flash影片时,它们不会使用Charles。

但是,如果您在浏览器中运行Flash影片,它将使用正确的代理设置并使用Charles。

此问题的可能解决方法是使用Charles的反向代理功能,以便您可以使连接的URL实际通过Charles(例如http://localhost:12345/).

永久链接

Windows Vista上出现“Resource temporarily unavailable”错误

如果您在使用Charles时看到以下错误消息:

Resource temporarily unavailable: recv failed
尝试关闭您帐户上的“家长控制”以允许Charles运行。

永久链接

Charles内存不足

记录一段时间后,Charles将耗尽可用内存。要释放内存,您应清除当前会话。

如果经常内存不足,可以增加默认堆大小。

Windows

编辑C:Program FilesCharlesCharles.ini并将vm.heapsize.preferred更改为更大的数字。确保不要删除数字周围的任何字母或符号!

Mac OS X

在应用程序文件夹中找到Charles.app,右键点击并选择显示包内容。打开“Contents”文件夹并用文本编辑器(如Text Edit)打开Info.plist。找到VMOptions并更改-Xmx256m中的数字。确保不要删除数字周围的任何字母或符号!

Linux

编辑charles.sh文件并更改-Xmx256m中的数字。确保不要删除数字周围的任何字母或符号!

永久链接

VPN无法与Charles一起使用

尝试在建立VPN连接之前启动Charles。如果在VPN运行时退出并重新启动Charles,可能需要断开并重新连接VPN。

永久链接

运行多个Charles实例

如果需要在单个Windows机器上运行多个Charles实例(如在Citrix环境中),您需要对Charles的使用方式进行一些更改。

在Program Files中的Charles文件夹中,编辑Charles.ini文件并删除“single.instance=dde”行,然后保存Charles.ini文件。

每个用户需要配置Charles使用不同的端口。建议将Charles设置为使用动态端口。

如果需要以同一用户身份运行多个Charles实例,需要使用命令行选项来指示Charles使用不同的配置文件。

永久链接

Charles如何计算延迟?

Charles在“概述”选项卡上显示每个请求的延迟测量值。Charles通过测量从完成发送请求到开始接收响应之间的时间来计算延迟。因此延迟包括网络延迟和服务器延迟,即处理请求所花费的时间。

对于静态请求,服务器通常能够立即响应(除非负载过重),因此延迟值主要代表网络延迟。

对于动态请求或任何需要服务器进行处理的请求,您可以减去近似的网络延迟以确定服务器处理请求所花费的时间。

永久链接

标志是什么意思?

水壶是Charles传说的一部分。它曾经属于一个名叫Charles的人,但Charles并不是以他命名的。

永久链接

在Mac OS X上访问.local域很慢

这似乎是Mac OS X Lion中的一个故障,即使您在/etc/hosts文件中硬编码了.local域名,解析它们也需要5秒。您可以使用Charles的DNS欺骗工具代替/etc/hosts来解决此问题,但在不使用Charles时仍会遇到.local域名解析延迟。建议使用其他顶级域(如.dev)。

更多信息

永久链接

SSL

升级到Charles 3.4后SSL解密不再工作

Charles 3.4更改了SSL的默认行为,从“选择退出”变为“选择加入”。您现在必须为每个希望启用SSL代理的站点选择加入。此更改是为了改进Charles的行为。计算机上有许多应用程序需要SSL连接,并且会被Charles用于SSL代理的SSL证书混淆。此外,默认对所有站点启用SSL代理可能会给Charles用户带来无意的安全问题,例如如果您的网上银行站点被代理,您的密码将以明文形式显示在Charles中。

此更改意味着您现在需要告诉Charles要代理的每个SSL站点,或者您可以再次选择代理所有站点。

要为特定站点选择加入,右键点击树视图中的主机名并启用SSL代理。您可能需要重新启动浏览器以关闭其现有的非SSL代理连接。您还可以在“代理设置”对话框中控制SSL代理的主机列表。

要为所有站点选择加入,打开“代理设置”对话框,转到“SSL”选项卡,并在位置列表中输入*。

永久链接

浏览器或其他客户端中出现SSL证书警告

如果您使用Charles的SSL代理功能,会出现这些警告。您可以配置浏览器(或其他客户端应用程序)以信任Charles生成的SSL证书,或者您可以仅信任单个证书(如果浏览器或应用程序提供该选项)。

永久链接

Chrome中本地主机SSL流量失败,提示ERR_CONNECTION_CLOSED

默认情况下,如果SSL证书无效,Chrome会拒绝所有本地主机流量。无效证书可能是由于不信任Charles SSL证书,也可能是由于您的本地主机服务器使用的SSL证书已过期或名称错误。

在另一个浏览器中检查连接和证书,因为其他浏览器不那么严格。

如果是此问题,建议修复证书问题——例如续订证书或向证书添加正确的通用名称。

您还可以更改Chrome中的设置,使其不再直接拒绝这些证书。转到chrome://flags/#allow-insecure-localhost并启用允许从本地主机加载的资源使用无效证书

永久链接

许可

丢失许可证密钥

没问题!请使用丢失许可证密钥表单自动接收包含密钥的新电子邮件。如果仍无法恢复密钥,请通过联系表单与我联系并提交销售咨询。

永久链接

在安装期间部署许可证密钥

要在安装期间部署许可证密钥,您需要将Charles首选项文件复制到适当的位置。请使用正确的许可证密钥配置Charles副本,然后将首选项文件复制为源文件。

请确保您的安装具有足够的Charles许可证。

Charles首选项文件在不同操作系统中的位置不同:

  • Windows: %APPDATA%\Charles\charles.config
  • Mac OS X: ~/Library/Preferences/com.xk72.charles.config
  • Linux: ~/.charles.config

永久链接

iOS

在iPhone上使用Charles

要在iPhone上将Charles用作HTTP代理,您必须在iPhone设置的Wi-Fi网络中手动配置HTTP代理设置。

转到“设置”应用,点击“Wi-Fi”,找到您连接的网络,然后点击蓝色披露箭头以配置网络。滚动到“HTTP代理”设置,点击“手动”。在“服务器”字段中输入运行Charles的计算机的IP地址,在“端口”字段中输入Charles运行的端口(通常为8888)。将“身份验证”保留为“关闭”。

现在,您iPhone上的所有网络流量都将通过Charles发送。首次从iPhone连接时,您应在Charles中看到提示,询问您是否允许该流量。

记住在停止使用Charles时禁用“设置”中的HTTP代理,否则您的应用程序中会出现令人困惑的网络故障!

永久链接

iPhone应用程序内的SSL连接

模拟器

从Charles v3.9.3开始,“帮助”菜单中有一个项目“在iOS模拟器中安装Charles CA SSL证书”,它将自动在您的iOS模拟器中安装Charles的SSL CA证书。

或者,您可以更改代码以使NSURLConnection接受任何SSL证书。请参阅Stack Overflow上的问题和答案:http://stackoverflow.com/questions/933331/how-to-use-nsurlconnection-to-connect-with-ssl-for-an-untrusted-cert

如果您仅在Safari中浏览单个网站,可以在Safari中接受证书,这将对该站点有效。如果SSL站点仅用于加载资源(如图像),则需要直接访问它并接受证书才能工作。

设备

iOS 4及更高版本

在设备上,将HTTP代理设置为使用Charles,然后浏览到http://www.charlesproxy.com/getssl以安装证书。

SSL固定

请注意,某些应用程序实现了SSL证书固定,这意味着它们专门验证根证书。由于应用程序本身验证根证书,它将不接受Charles的证书并会失败连接。如果您已成功安装Charles根SSL证书并可以在Safari中使用SSL代理浏览SSL网站,但应用程序失败,则可能是SSL固定的问题。

永久链接

iOS 9上的SSL代理

在iOS设备上安装Charles的根SSL证书后,您将能够对应用程序使用SSL代理。从Charles 3.11.4开始,您现在可以在编译并在iOS 9上运行的应用程序中使用此功能,即使启用了应用程序传输安全(ATS)。

请注意,某些应用程序实现了SSL证书固定,这意味着它们专门验证根证书,并且无法与Charles一起使用。

如果您使用的是iOS 10.3或更高版本,需要额外步骤以信任Charles的根SSL证书。打开Settings.app并导航到General > About > Certificate Trust Settings,找到Charles Proxy证书,并启用它以完全信任(有关iOS 10中此更改的更多信息)。

如果您在使用自己的应用程序时继续遇到SSL代理问题,可以尝试禁用ATS。要禁用ATS,您需要向应用程序的Info.plist文件添加键,如下所示。有关更多信息,请参阅Apple的技术说明

在发布应用程序之前,请记得重新启用ATS以利用ATS提供的安全性。

<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>

永久链接

故障排除

Mac版Outlook无法检查邮件

Mac版Outlook与Charles不兼容。将您的邮件服务器主机名添加到“代理设置”的“绕过代理”文本区域中。例如,“mail.example.com”。这将配置您的系统在连接到邮件服务器时不使用Charles作为代理。

永久链接