├── .gitignore ├── META-INF └── MANIFEST.MF ├── src └── main │ ├── java │ ├── META-INF │ │ └── MANIFEST.MF │ ├── org │ │ └── cq │ │ │ ├── ClassPathAgent.java │ │ │ ├── jartool │ │ │ ├── JarException.java │ │ │ ├── resource │ │ │ │ └── jar_zh_CN.java │ │ │ ├── CommandLine.java │ │ │ ├── FingerPrint.java │ │ │ └── Validator.java │ │ │ └── Main.java │ └── charles │ │ ├── VersionModifier.java │ │ ├── VersionFactory.java │ │ ├── version461 │ │ ├── modifiers │ │ │ ├── BundleStringEncodingModifier.java │ │ │ ├── ClassFileModifier.java │ │ │ ├── JavaSourceReplace.java │ │ │ └── MenuEncodingModifier.java │ │ └── Modifier461.java │ │ └── version462 │ │ ├── Modifier462.java │ │ └── modifiers │ │ └── MenuModifier.java │ └── source │ ├── 4.6.1 │ ├── gui │ │ ├── CharlesFrame.class │ │ ├── menus │ │ │ ├── tfse.class │ │ │ ├── EditMenu.class │ │ │ ├── ViewMenu.class │ │ │ └── ProxyMenu.class │ │ └── session │ │ │ └── AbstractSessionFrame.class │ ├── helper │ │ ├── BreakpointsEditor.html │ │ ├── frag │ │ │ ├── SelectedLocations.html │ │ │ └── LocationMatching.html │ │ ├── ProxySettings-Options.html │ │ ├── ClientSSLCertificates.html │ │ ├── ImportedSSLCertificates.html │ │ ├── ServerSSLCertificates.html │ │ ├── AutoSave.html │ │ ├── Whitelist.html │ │ ├── Blacklist.html │ │ ├── ProxySettings-SSL.html │ │ ├── MapEditor.html │ │ ├── BlockCookies.html │ │ ├── DNSSpoofing.html │ │ ├── ReverseProxies.html │ │ ├── ClientProcess.html │ │ ├── SSL.html │ │ ├── ProxySettings-OS.html │ │ ├── PortForwarding.html │ │ ├── UISettings.html │ │ ├── PortForwardingEditor.html │ │ ├── ViewerContentType.html │ │ ├── ViewerContentTypeEditor.html │ │ ├── Breakpoints.html │ │ ├── NoCaching.html │ │ ├── Rewrite.html │ │ ├── ExternalProxies.html │ │ ├── MapLocalEditor.html │ │ ├── ProxySettings-Mozilla.html │ │ ├── Mirror.html │ │ ├── Map.html │ │ ├── MapLocal.html │ │ ├── ReverseProxiesEditor.html │ │ ├── Protobuf.html │ │ ├── Throttling.html │ │ ├── LocationsTableHelper.html │ │ ├── RewriteEditor.html │ │ └── ProxySettings-Proxies.html │ └── strings.properties │ └── 4.6.2 │ └── com │ └── xk72 │ └── charles │ ├── helper │ ├── BreakpointsEditor.html │ ├── frag │ │ ├── SelectedLocations.html │ │ └── LocationMatching.html │ ├── ProxySettings-Options.html │ ├── ClientSSLCertificates.html │ ├── ImportedSSLCertificates.html │ ├── ServerSSLCertificates.html │ ├── AutoSave.html │ ├── Whitelist.html │ ├── Blacklist.html │ ├── ProxySettings-SSL.html │ ├── MapEditor.html │ ├── BlockCookies.html │ ├── DNSSpoofing.html │ ├── ReverseProxies.html │ ├── ClientProcess.html │ ├── SSL.html │ ├── ProxySettings-OS.html │ ├── PortForwarding.html │ ├── UISettings.html │ ├── PortForwardingEditor.html │ ├── ViewerContentType.html │ ├── ViewerContentTypeEditor.html │ ├── Breakpoints.html │ ├── NoCaching.html │ ├── Rewrite.html │ ├── ExternalProxies.html │ ├── MapLocalEditor.html │ ├── ProxySettings-Mozilla.html │ ├── Mirror.html │ ├── Map.html │ ├── MapLocal.html │ ├── ReverseProxiesEditor.html │ ├── Protobuf.html │ ├── Throttling.html │ ├── LocationsTableHelper.html │ ├── RewriteEditor.html │ └── ProxySettings-Proxies.html │ └── strings.properties ├── README.md └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | *.iml 3 | *.jar 4 | 4.6.1/* 5 | out 6 | target -------------------------------------------------------------------------------- /META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Main-Class: org.cq.Main 3 | 4 | -------------------------------------------------------------------------------- /src/main/java/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Main-Class: org.cq.Main 3 | Agent-Class: org.cq.ClassPathAgent 4 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/gui/CharlesFrame.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cuiqingandroid/CharlesZH/HEAD/src/main/source/4.6.1/gui/CharlesFrame.class -------------------------------------------------------------------------------- /src/main/source/4.6.1/gui/menus/tfse.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cuiqingandroid/CharlesZH/HEAD/src/main/source/4.6.1/gui/menus/tfse.class -------------------------------------------------------------------------------- /src/main/source/4.6.1/gui/menus/EditMenu.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cuiqingandroid/CharlesZH/HEAD/src/main/source/4.6.1/gui/menus/EditMenu.class -------------------------------------------------------------------------------- /src/main/source/4.6.1/gui/menus/ViewMenu.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cuiqingandroid/CharlesZH/HEAD/src/main/source/4.6.1/gui/menus/ViewMenu.class -------------------------------------------------------------------------------- /src/main/source/4.6.1/gui/menus/ProxyMenu.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cuiqingandroid/CharlesZH/HEAD/src/main/source/4.6.1/gui/menus/ProxyMenu.class -------------------------------------------------------------------------------- /src/main/source/4.6.1/gui/session/AbstractSessionFrame.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cuiqingandroid/CharlesZH/HEAD/src/main/source/4.6.1/gui/session/AbstractSessionFrame.class -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/BreakpointsEditor.html: -------------------------------------------------------------------------------- 1 |
A breakpoint consists of a location match and whether to match the request, response or both.
3 | 4 | @@tools.gen.locations.locationMatchingEditor@@ -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/BreakpointsEditor.html: -------------------------------------------------------------------------------- 1 |A breakpoint consists of a location match and whether to match the request, response or both.
3 | 4 | @@tools.gen.locations.locationMatchingEditor@@ -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/frag/SelectedLocations.html: -------------------------------------------------------------------------------- 1 |The tool can be enabled for every request or only for selected locations. When used for selected locations you 3 | limit the tool's effects to specified hosts and or paths using simple but powerful pattern matches.
4 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/frag/LocationMatching.html: -------------------------------------------------------------------------------- 1 |Each location match may contain protocol, host, port and path patterns to match specific URLs. Locations may include wildcards. More help 3 | for creating location matches may be found when you add a new location to this tool.
4 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/frag/SelectedLocations.html: -------------------------------------------------------------------------------- 1 |The tool can be enabled for every request or only for selected locations. When used for selected locations you 3 | limit the tool's effects to specified hosts and or paths using simple but powerful pattern matches.
4 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/frag/LocationMatching.html: -------------------------------------------------------------------------------- 1 |Each location match may contain protocol, host, port and path patterns to match specific URLs. Locations may include wildcards. More help 3 | for creating location matches may be found when you add a new location to this tool.
4 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ProxySettings-Options.html: -------------------------------------------------------------------------------- 1 |A list of hosts and domain names for which your browser should be configured to bypass Charles. The list 5 | is space or comma-separated and is injected into your browser when Charles configures its proxy settings. See the 6 | OS and browser specific tabs for more information.
7 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ProxySettings-Options.html: -------------------------------------------------------------------------------- 1 |A list of hosts and domain names for which your browser should be configured to bypass Charles. The list 5 | is space or comma-separated and is injected into your browser when Charles configures its proxy settings. See the 6 | OS and browser specific tabs for more information.
7 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ClientSSLCertificates.html: -------------------------------------------------------------------------------- 1 |Add PKCS#12 certificates for selected hosts to enable client SSL certificate authentication through Charles.
3 |When an SSL connection is established to a matching host you will be prompted for your password, and then the given 4 | certificate will be made available to the remote host for authentication purposes.
-------------------------------------------------------------------------------- /src/main/java/org/cq/ClassPathAgent.java: -------------------------------------------------------------------------------- 1 | package org.cq; 2 | 3 | import java.io.IOException; 4 | import java.lang.instrument.Instrumentation; 5 | import java.util.jar.JarFile; 6 | 7 | public class ClassPathAgent { 8 | public static void agentmain(String args, Instrumentation instrumentation) throws IOException { 9 | instrumentation.appendToSystemClassLoaderSearch(new JarFile(args)); 10 | } 11 | } -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ClientSSLCertificates.html: -------------------------------------------------------------------------------- 1 |Add PKCS#12 certificates for selected hosts to enable client SSL certificate authentication through Charles.
3 |When an SSL connection is established to a matching host you will be prompted for your password, and then the given 4 | certificate will be made available to the remote host for authentication purposes.
-------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ImportedSSLCertificates.html: -------------------------------------------------------------------------------- 1 |Add PKCS#12 certificates for use when establishing SSL connections to clients.
3 |When an SSL connection is established to a host that uses a matching server certificate Charles can use that certificate to establish the 4 | connection to the client. If no matching certificate is found Charles must generate its own certificate which the client may not trust.
-------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ImportedSSLCertificates.html: -------------------------------------------------------------------------------- 1 |Add PKCS#12 certificates for use when establishing SSL connections to clients.
3 |When an SSL connection is established to a host that uses a matching server certificate Charles can use that certificate to establish the 4 | connection to the client. If no matching certificate is found Charles must generate its own certificate which the client may not trust.
-------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ServerSSLCertificates.html: -------------------------------------------------------------------------------- 1 |You can use your own Root certificate to sign the SSL certificates issued by Charles for SSL Proxying.
3 | 4 |Choose a certificate file in PKCS#12 format. You will be prompted for a password. Once accepted, Charles will start issuing 5 | SSL certificates signed with your root certificate when you use SSL Proxying.
6 |Charles will prompt for the password to your Root certificate each time you start Charles.
7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 本工程通过修改字节码实现charles汉化,目前最新的Charles仅部分支持语言包,所以大部分汉化工作都是通过直接修改字节码实现。 2 | 3 | 4 | 5 | 汉化步骤 6 | 7 | ## 1. 依赖环境 8 | `JRE11`及以上 9 | 10 | ## 2. 运行 11 | 使用命令`java -jar charlesZh.jar`或双击`charlesZh.jar` 12 | 13 | ## 3. 替换charles.jar 14 | 替换charles安装目录下lib里面的charles为刚刚的`origin_charles.jar` 15 | 16 | ## 4. 已知问题 17 | 1. 会影响charles web服务 18 | 19 | **注意:** 20 | 1. 在替换charles.jar之前,做好备份,以免打不开 21 | 2. 本项目只做charles汉化,不包含破解,还请支持正版,[购买连接](https://www.charlesproxy.com/buy/) 22 | 23 | # TODO 24 | - [ ] 支持多语言 25 | - [ ] 支持语言切换 26 | - [ ] 支持插件开发 -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ServerSSLCertificates.html: -------------------------------------------------------------------------------- 1 |You can use your own Root certificate to sign the SSL certificates issued by Charles for SSL Proxying.
3 | 4 |Choose a certificate file in PKCS#12 format. You will be prompted for a password. Once accepted, Charles will start issuing 5 | SSL certificates signed with your root certificate when you use SSL Proxying.
6 |Charles will prompt for the password to your Root certificate each time you start Charles.
7 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/AutoSave.html: -------------------------------------------------------------------------------- 1 |自动自动保存工具自动保存和清除记录会话在设置的时间间隔
3 | 4 |如果您让Charles长时间监视网络活动,这是很有用的 5 | 并希望将记录分解成易于管理的单元,或避免内存不足的情况 6 | 这可能是由于大量数据造成的。
7 | 8 |输入保存间隔(以分钟为单位)和保存会话文件的目录。 9 | 您可以选择每次运行Charles时是否启动自动保存工具,否则 10 | 当Charles启动时,自动保存工具将永远被禁用。 11 |
12 |您可以选择启动 13 | 保存间隔计时器上的保存间隔分钟过去一小时的倍数。您的第一个保存间隔将 14 | 使其更短,以对齐间隔到倍数。例如,如果您的保存间隔是15分钟 15 | 您在10:10启动工具,第一个保存间隔将是10:15,以对齐15分钟的倍数, 16 | 之后每15分钟就会有一次。
17 | 18 |会话文件的名称中带有时间戳,格式为yyyyMMddHHmm,即年、月、日、小时、分钟 19 | 这样当按字母顺序排序时,它们就会以正确的顺序出现。
20 | 21 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/Whitelist.html: -------------------------------------------------------------------------------- 1 |The White List tool lets you block all requests except those to selected locations. When a request is received by 3 | Charles that does not match a white listed location Charles blocks the request. You can choose whether Charles will 4 | simply close the connection from the browser or return an error page (with a 403 response) to the browser.
5 |There is also a Black List tool for blocking only selected locations. 6 | If a request matches both the Black List and White List then it is blocked.
7 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/AutoSave.html: -------------------------------------------------------------------------------- 1 |自动自动保存工具自动保存和清除记录会话在设置的时间间隔
3 | 4 |如果您让Charles长时间监视网络活动,这是很有用的 5 | 并希望将记录分解成易于管理的单元,或避免内存不足的情况 6 | 这可能是由于大量数据造成的。
7 | 8 |输入保存间隔(以分钟为单位)和保存会话文件的目录。 9 | 您可以选择每次运行Charles时是否启动自动保存工具,否则 10 | 当Charles启动时,自动保存工具将永远被禁用。 11 |
12 |您可以选择启动 13 | 保存间隔计时器上的保存间隔分钟过去一小时的倍数。您的第一个保存间隔将 14 | 使其更短,以对齐间隔到倍数。例如,如果您的保存间隔是15分钟 15 | 您在10:10启动工具,第一个保存间隔将是10:15,以对齐15分钟的倍数, 16 | 之后每15分钟就会有一次。
17 | 18 |会话文件的名称中带有时间戳,格式为yyyyMMddHHmm,即年、月、日、小时、分钟 19 | 这样当按字母顺序排序时,它们就会以正确的顺序出现。
20 | 21 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/Blacklist.html: -------------------------------------------------------------------------------- 1 |The Black List tool lets you block requests to selected locations. When a request is received by Charles that matches 3 | a black listed location Charles blocks the request. You can choose whether Charles will 4 | simply close the connection from the browser or return an error page (with a 403 response) to the browser.
5 |There is also a White List tool that allows you to block all requests except those to selected locations. 6 | If a request matches both the Black List and White List then it is blocked.
7 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/Whitelist.html: -------------------------------------------------------------------------------- 1 |The White List tool lets you block all requests except those to selected locations. When a request is received by 3 | Charles that does not match a white listed location Charles blocks the request. You can choose whether Charles will 4 | simply close the connection from the browser or return an error page (with a 403 response) to the browser.
5 |There is also a Black List tool for blocking only selected locations. 6 | If a request matches both the Black List and White List then it is blocked.
7 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/Blacklist.html: -------------------------------------------------------------------------------- 1 |The Black List tool lets you block requests to selected locations. When a request is received by Charles that matches 3 | a black listed location Charles blocks the request. You can choose whether Charles will 4 | simply close the connection from the browser or return an error page (with a 403 response) to the browser.
5 |There is also a White List tool that allows you to block all requests except those to selected locations. 6 | If a request matches both the Black List and White List then it is blocked.
7 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ProxySettings-SSL.html: -------------------------------------------------------------------------------- 1 |SSL代理 拦截所有SSL请求并可以SSL请求的纯文本内容,而不仅仅是查看加密的文本
4 |开启 SSL代理 , 您的浏览器或应用程序将收到由Charles签名的证书,而不是来自远程web服务器的原始证书。 5 | 这将在浏览器或应用程序中触发警告, 有些应用程序可能会拒绝连接
6 |7 | 您可以将您的浏览器或应用程序配置为接受Charles的证书 8 | http://www.charlesproxy.com/ssl或在Charles的帮助菜单中的SSL代理菜单。 9 |
10 | 11 |13 | 应该逐个列出需要Charles抓包SSL请求。为保护您的个人信息安全,您应该只包含您想要的抓包SSL站点。 14 |
15 |16 | 可以将通配符添加到位置列表中,以匹配多个或所有位置。要匹配所有位置,请输入*。 17 |
18 |19 | 对于要被代理的站点,它必须同时匹配包含位置和不匹配任何排除位置。 20 | 当您在包含位置中使用了通配符时,排除位置最有用。 21 |
22 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ProxySettings-SSL.html: -------------------------------------------------------------------------------- 1 |SSL代理 拦截所有SSL请求并可以SSL请求的纯文本内容,而不仅仅是查看加密的文本
4 |开启 SSL代理 , 您的浏览器或应用程序将收到由Charles签名的证书,而不是来自远程web服务器的原始证书。 5 | 这将在浏览器或应用程序中触发警告, 有些应用程序可能会拒绝连接
6 |7 | 您可以将您的浏览器或应用程序配置为接受Charles的证书 8 | http://www.charlesproxy.com/ssl或在Charles的帮助菜单中的SSL代理菜单。 9 |
10 | 11 |13 | 应该逐个列出需要Charles抓包SSL请求。为保护您的个人信息安全,您应该只包含您想要的抓包SSL站点。 14 |
15 |16 | 可以将通配符添加到位置列表中,以匹配多个或所有位置。要匹配所有位置,请输入*。 17 |
18 |19 | 对于要被代理的站点,它必须同时匹配包含位置和不匹配任何排除位置。 20 | 当您在包含位置中使用了通配符时,排除位置最有用。 21 |
22 | -------------------------------------------------------------------------------- /src/main/java/charles/VersionModifier.java: -------------------------------------------------------------------------------- 1 | package charles; 2 | 3 | 4 | public abstract class VersionModifier { 5 | 6 | private static String mSavePath = null; 7 | private static String mOriginJar = null; 8 | public VersionModifier(String originJar, String savePath){ 9 | mSavePath = savePath; 10 | mOriginJar = originJar; 11 | } 12 | public abstract boolean modifyByteCode(); 13 | public abstract String getSourcePath(); 14 | 15 | public final String getTempPath(){ 16 | return mSavePath; 17 | } 18 | 19 | protected final String getOriginJarPath(){ 20 | return mOriginJar; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/MapEditor.html: -------------------------------------------------------------------------------- 1 |A remote mapping consists of a Map From location and a Map To location.
3 | 4 |The Map From location is a regular location pattern. See the section on Location matching below.
6 | 7 |The Map To location specifies what to change about the original request. Any field left blank will be 9 | left unchanged.
10 |If a path is specified it should end with a /. The original request path will be made relative 11 | to the Map From location pattern and then mapped to be relative to the Map To path.
12 | 13 | @@tools.gen.locations.locationMatchingEditor@@ -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/MapEditor.html: -------------------------------------------------------------------------------- 1 |A remote mapping consists of a Map From location and a Map To location.
3 | 4 |The Map From location is a regular location pattern. See the section on Location matching below.
6 | 7 |The Map To location specifies what to change about the original request. Any field left blank will be 9 | left unchanged.
10 |If a path is specified it should end with a /. The original request path will be made relative 11 | to the Map From location pattern and then mapped to be relative to the Map To path.
12 | 13 | @@tools.gen.locations.locationMatchingEditor@@ -------------------------------------------------------------------------------- /src/main/java/org/cq/jartool/JarException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. 3 | * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 4 | * 5 | * 6 | * 7 | * 8 | * 9 | * 10 | * 11 | * 12 | * 13 | * 14 | * 15 | * 16 | * 17 | * 18 | * 19 | * 20 | * 21 | * 22 | * 23 | * 24 | */ 25 | 26 | package org.cq.jartool; 27 | 28 | import java.io.IOException; 29 | 30 | public 31 | class JarException extends IOException { 32 | 33 | static final long serialVersionUID = -4351820108009811497L; 34 | 35 | public JarException() { 36 | super(); 37 | } 38 | 39 | public JarException(String s) { 40 | super(s); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/BlockCookies.html: -------------------------------------------------------------------------------- 1 |The Block Cookies tool blocks the sending and receiving of cookies. It can be used to test websites as if you have 3 | cookies disabled in your browser. Note that web spiders (such as Google) often don't support Cookies so the tool can 4 | also be used to simulate a spider's view of a website.
5 | 6 | @@tools.gen.locations.selectedLocations@@ 7 | 8 |The Cookie header is removed from requests, preventing cookie values being sent from the client application (eg. web browser) 10 | to the remote server. The Set-Cookie header is removed from responses, preventing requests to set cookies being received 11 | by the client application from the remote server.
-------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/BlockCookies.html: -------------------------------------------------------------------------------- 1 |The Block Cookies tool blocks the sending and receiving of cookies. It can be used to test websites as if you have 3 | cookies disabled in your browser. Note that web spiders (such as Google) often don't support Cookies so the tool can 4 | also be used to simulate a spider's view of a website.
5 | 6 | @@tools.gen.locations.selectedLocations@@ 7 | 8 |The Cookie header is removed from requests, preventing cookie values being sent from the client application (eg. web browser) 10 | to the remote server. The Set-Cookie header is removed from responses, preventing requests to set cookies being received 11 | by the client application from the remote server.
-------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/DNSSpoofing.html: -------------------------------------------------------------------------------- 1 |The DNS Spoofing tool enables you to spoof DNS lookups by specifying your own hostname to remote address mappings. When a request 3 | passes through Charles your DNS mappings will take precedence.
4 |DNS Spoofing is useful for testing virtual hosted websites prior to a DNS change, as your browser will behave 5 | as if the DNS change has been made. DNS changes often take up as long as 24 hours to take effect and without 6 | DNS Spoofing it can be very difficult to test what the website will 7 | look like once the DNS change goes live.
8 | 9 |You can map hostnames to an IP address or to another hostname, which will be looked up in DNS by Charles to find its IP address.
10 | 11 |Hostnames may contain wildcards.
-------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/DNSSpoofing.html: -------------------------------------------------------------------------------- 1 |The DNS Spoofing tool enables you to spoof DNS lookups by specifying your own hostname to remote address mappings. When a request 3 | passes through Charles your DNS mappings will take precedence.
4 |DNS Spoofing is useful for testing virtual hosted websites prior to a DNS change, as your browser will behave 5 | as if the DNS change has been made. DNS changes often take up as long as 24 hours to take effect and without 6 | DNS Spoofing it can be very difficult to test what the website will 7 | look like once the DNS change goes live.
8 | 9 |You can map hostnames to an IP address or to another hostname, which will be looked up in DNS by Charles to find its IP address.
10 | 11 |Hostnames may contain wildcards.
-------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ReverseProxies.html: -------------------------------------------------------------------------------- 1 |3 | A reverse proxy creates a web server on a local port that transparently proxies requests to a 4 | remote web server. All the requests and responses on the reverse proxy may be recorded in Charles. 5 |
6 |7 | A reverse proxy is useful if you have a client application that doesn't support the use of 8 | an HTTP proxy, or you want to avoid configuring it to use a proxy. 9 | Create a reverse proxy to the original destination web server and then connect 10 | the client application to the local port; the reverse proxy is transparent to the client 11 | application and enables you to view the traffic in Charles where you previously may not have 12 | been able to. 13 |
14 |15 | Read more about reverse proxies at http://en.wikipedia.org/wiki/Reverse_proxy 16 |
17 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 |3 | A reverse proxy creates a web server on a local port that transparently proxies requests to a 4 | remote web server. All the requests and responses on the reverse proxy may be recorded in Charles. 5 |
6 |7 | A reverse proxy is useful if you have a client application that doesn't support the use of 8 | an HTTP proxy, or you want to avoid configuring it to use a proxy. 9 | Create a reverse proxy to the original destination web server and then connect 10 | the client application to the local port; the reverse proxy is transparent to the client 11 | application and enables you to view the traffic in Charles where you previously may not have 12 | been able to. 13 |
14 |15 | Read more about reverse proxies at http://en.wikipedia.org/wiki/Reverse_proxy 16 |
17 | -------------------------------------------------------------------------------- /src/main/java/charles/VersionFactory.java: -------------------------------------------------------------------------------- 1 | package charles; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import charles.version461.Modifier461; 7 | import charles.version462.Modifier462; 8 | 9 | public class VersionFactory { 10 | 11 | public static final String V_461 = "4.6.1"; 12 | public static final String V_462 = "4.6.2"; 13 | 14 | public static final ListThe Client Process tool shows the name of the local client process that is responsible for 3 | making each request. The client process will usually be your web browser, such as firefox.exe, but 4 | there are many potentially unknown HTTP clients that the Client Process tool can help you discover. 5 |
6 | 7 |The client process name is displayed in the Notes area on each request.
8 | 9 |10 | The Client Process tool is useful if you 11 | can see requests in Charles that you're not sure of the origin process. It 12 | only works for requests originating on the computer on which Charles is running. 13 |
14 | 15 |16 | This tool will introduce a short delay before each connection is accepted by Charles. 17 | The delay is usually not noticeable or significant. 18 |
19 | 20 | @@tools.gen.locations.selectedLocations@@ 21 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ClientProcess.html: -------------------------------------------------------------------------------- 1 |The Client Process tool shows the name of the local client process that is responsible for 3 | making each request. The client process will usually be your web browser, such as firefox.exe, but 4 | there are many potentially unknown HTTP clients that the Client Process tool can help you discover. 5 |
6 | 7 |The client process name is displayed in the Notes area on each request.
8 | 9 |10 | The Client Process tool is useful if you 11 | can see requests in Charles that you're not sure of the origin process. It 12 | only works for requests originating on the computer on which Charles is running. 13 |
14 | 15 |16 | This tool will introduce a short delay before each connection is accepted by Charles. 17 | The delay is usually not noticeable or significant. 18 |
19 | 20 | @@tools.gen.locations.selectedLocations@@ 21 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/SSL.html: -------------------------------------------------------------------------------- 1 |Charles uses its own Root SSL certificate for SSL requests through Charles to hosts enabled for SSL Proxying. The Root 3 | certificate is generated automatically for each Charles installation.
4 | 5 |Because Charles has signed the Root certificate itself, it won't be trusted by your browsers or applications. In order to use the 6 | SSL Proxying feature in Charles you therefore need to add the Root certificate for your copy of Charles to the 7 | trust-store on your OS, and perhaps in your browser.
8 | 9 |Use the options in the SSL submenu in the Help menu in Charles to help install the Root certificate. You can install the certificate 10 | on the current OS, or on remote devices or browsers.
11 | 12 |To install the certificate in Mozilla Firefox, first configure Firefox to use Charles as its proxy then browse to chls.pro/ssl.
13 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/SSL.html: -------------------------------------------------------------------------------- 1 |Charles uses its own Root SSL certificate for SSL requests through Charles to hosts enabled for SSL Proxying. The Root 3 | certificate is generated automatically for each Charles installation.
4 | 5 |Because Charles has signed the Root certificate itself, it won't be trusted by your browsers or applications. In order to use the 6 | SSL Proxying feature in Charles you therefore need to add the Root certificate for your copy of Charles to the 7 | trust-store on your OS, and perhaps in your browser.
8 | 9 |Use the options in the SSL submenu in the Help menu in Charles to help install the Root certificate. You can install the certificate 10 | on the current OS, or on remote devices or browsers.
11 | 12 |To install the certificate in Mozilla Firefox, first configure Firefox to use Charles as its proxy then browse to chls.pro/ssl.
13 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ProxySettings-OS.html: -------------------------------------------------------------------------------- 1 |Charles can automatically configure your operating system's proxy settings. This will effect most 3 | web browsers and applications on your computer, so they will you use Charles and thus their activity 4 | will be visible in Charles.
5 | 6 |You can enable the proxy configuration and then choose whether to configure the system to use Charles 7 | as an HTTP proxy or SOCKS proxy, if the SOCKS Proxy is itself enables on the Proxies tab. See the Proxies 8 | tab for information on the differences between HTTP and SOCKS.
9 | 10 |The operating system proxy configuration can be enabled at start up, which is the default behaviour, so 11 | that when you start Charles it is ready to be used. Alternatively you can disable this and enable the operating 12 | system proxy settings manually or configure your browser and other applications manually to use Charles with 13 | their own proxy settings configuration interface.
14 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ProxySettings-OS.html: -------------------------------------------------------------------------------- 1 |Charles can automatically configure your operating system's proxy settings. This will effect most 3 | web browsers and applications on your computer, so they will you use Charles and thus their activity 4 | will be visible in Charles.
5 | 6 |You can enable the proxy configuration and then choose whether to configure the system to use Charles 7 | as an HTTP proxy or SOCKS proxy, if the SOCKS Proxy is itself enables on the Proxies tab. See the Proxies 8 | tab for information on the differences between HTTP and SOCKS.
9 | 10 |The operating system proxy configuration can be enabled at start up, which is the default behaviour, so 11 | that when you start Charles it is ready to be used. Alternatively you can disable this and enable the operating 12 | system proxy settings manually or configure your browser and other applications manually to use Charles with 13 | their own proxy settings configuration interface.
14 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/PortForwarding.html: -------------------------------------------------------------------------------- 1 |Port forwarding enables you to transparently forward a local TCP or UDP port to a 3 | remote host and port. All the requests and responses on the port may be recorded in Charles.
4 | 5 |The port forwarding traffic is recorded in Charles as a socket://host:port/ URL
6 | 7 |8 | Port forwarding is useful if you have a non-HTTP application that you want to monitor with Charles. 9 | Create a port forward to the original destination server and then connect the client application 10 | to the local port; the port forwarding is transparent to the client application and enables you to 11 | view the traffic in Charles where you previously may not have been able to. 12 |
13 | 14 |You can forward TCP port 2525 on your local host to port 25 on a remote host. Then when you connect to localhost:2525 16 | Charles will transparently forward the traffic to the remote host as if you had connected directly. You will see 17 | the traffic recorded in Charles as socket://localhost:2525/. 18 |
19 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/PortForwarding.html: -------------------------------------------------------------------------------- 1 |Port forwarding enables you to transparently forward a local TCP or UDP port to a 3 | remote host and port. All the requests and responses on the port may be recorded in Charles.
4 | 5 |The port forwarding traffic is recorded in Charles as a socket://host:port/ URL
6 | 7 |8 | Port forwarding is useful if you have a non-HTTP application that you want to monitor with Charles. 9 | Create a port forward to the original destination server and then connect the client application 10 | to the local port; the port forwarding is transparent to the client application and enables you to 11 | view the traffic in Charles where you previously may not have been able to. 12 |
13 | 14 |You can forward TCP port 2525 on your local host to port 25 on a remote host. Then when you connect to localhost:2525 16 | Charles will transparently forward the traffic to the remote host as if you had connected directly. You will see 17 | the traffic recorded in Charles as socket://localhost:2525/. 18 |
19 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/UISettings.html: -------------------------------------------------------------------------------- 1 |The native platform look and feel is usually the best as it makes Charles appear like other 4 | applications on your system. However you can choose another look and feel to suit your preferences or requirements.
5 | 6 |The display font is used in some viewers such as the Text viewer. If you have specific requirements for viewing 8 | information you can change the font here, such as to a font that includes foreign-language character sets.
9 | 10 |The size to use for the display font.
12 | 13 |Windows only option. When Charles is minimised its window will be hidden from the task bar and can be restored 15 | by clicking the Charles icon in your system tray.
16 | 17 |Windows only option. Bring Charles to the front from any application by pressing either WINDOWS-C or 19 | ALT-CONTROL-SHIFT C.
20 | 21 |Show Charles's memory usage in the status bar.
23 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/UISettings.html: -------------------------------------------------------------------------------- 1 |The native platform look and feel is usually the best as it makes Charles appear like other 4 | applications on your system. However you can choose another look and feel to suit your preferences or requirements.
5 | 6 |The display font is used in some viewers such as the Text viewer. If you have specific requirements for viewing 8 | information you can change the font here, such as to a font that includes foreign-language character sets.
9 | 10 |The size to use for the display font.
12 | 13 |Windows only option. When Charles is minimised its window will be hidden from the task bar and can be restored 15 | by clicking the Charles icon in your system tray.
16 | 17 |Windows only option. Bring Charles to the front from any application by pressing either WINDOWS-C or 19 | ALT-CONTROL-SHIFT C.
20 | 21 |Show Charles's memory usage in the status bar.
23 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/PortForwardingEditor.html: -------------------------------------------------------------------------------- 1 |Choose either TCP or UDP protocol for the forwarding. TCP is the most common Internet protocol; UDP is most commonly used for DNS or real-time applications 5 | such as streaming.
6 | 7 |9 | The Start Port is the local port that you want to forward. If you want to forward a range of ports you can enter in an End Port, 10 | otherwise you may leave the End Port field blank. 11 |
12 | 13 |15 | The remote host and port to forward to. If you have entered a range of ports using the End Port field the same range of ports 16 | will be forwarded to using the remote port as the base port. 17 |
18 | 19 |21 | If you want to specify the local address to listen on for the reverse proxy you can enable this option and enter in the IP address here. 22 | This is useful if you want to run multiple network services on the same port but on different IP addresses on the same machine. 23 | When this option is disabled the reverse proxy binds to all available local addresses. 24 |
-------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/PortForwardingEditor.html: -------------------------------------------------------------------------------- 1 |Choose either TCP or UDP protocol for the forwarding. TCP is the most common Internet protocol; UDP is most commonly used for DNS or real-time applications 5 | such as streaming.
6 | 7 |9 | The Start Port is the local port that you want to forward. If you want to forward a range of ports you can enter in an End Port, 10 | otherwise you may leave the End Port field blank. 11 |
12 | 13 |15 | The remote host and port to forward to. If you have entered a range of ports using the End Port field the same range of ports 16 | will be forwarded to using the remote port as the base port. 17 |
18 | 19 |21 | If you want to specify the local address to listen on for the reverse proxy you can enable this option and enter in the IP address here. 22 | This is useful if you want to run multiple network services on the same port but on different IP addresses on the same machine. 23 | When this option is disabled the reverse proxy binds to all available local addresses. 24 |
-------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ViewerContentType.html: -------------------------------------------------------------------------------- 1 |3 | The Viewer Content Type Mappings allow you to explicitly map selected locations to particular viewer content types. 4 | This will automatically enable the appropriate content type specific viewers when viewing requests from those 5 | locations. 6 |
7 | 8 |9 | Normally Charles attempts to automatically detect the appropriate viewer content type based upon the content of the 10 | request or response, usually based on the Content-Type header. However some websites do not set the correct 11 | Content-Type value for their content so not all of the appropriate content viewers are available. Configuring 12 | appropriate viewer content type mappings for these locations will allow you to view these requests with the 13 | best possible viewers. 14 |
15 | 16 |18 | When a request that matches one of the configured mappings is viewed within Charles any viewers that are appropriate 19 | for the configured viewer content type are enabled in addition to the automatically detected viewers. No changes are 20 | made to the actual request or response. 21 |
22 | 23 | @@tools.gen.locations.locationMatching@@ 24 | 25 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ViewerContentTypeEditor.html: -------------------------------------------------------------------------------- 1 |A viewer content type mapping consists of a location match and the desired request and response viewer content type.
3 |You may specify a desired request type or response type or both. You may also specify neither a request or response 4 | type in which case the mapping will have no effect. It is more usual to specify a response type as you are more likely 5 | to be interested in the viewing of response content than the request content (which is often empty)
6 | 7 |The viewer content types that may be selected relate to the types of specialised viewers that Charles has available 10 | (e.g. XML, Javascript and Protocol Buffers) and not to generic MIME types. For most of the viewer content types there is 11 | no further information to specify, the exception to this is the Protocol Buffers content type. When you select the 12 | Protocol Buffers content type you may specify the location (URL) of the protocol buffers descriptor file, the name of the 13 | message type and whether the content is a single message or a delimited list of messages.
14 | 15 | @@tools.gen.locations.locationMatchingEditor@@ -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ViewerContentType.html: -------------------------------------------------------------------------------- 1 |3 | The Viewer Content Type Mappings allow you to explicitly map selected locations to particular viewer content types. 4 | This will automatically enable the appropriate content type specific viewers when viewing requests from those 5 | locations. 6 |
7 | 8 |9 | Normally Charles attempts to automatically detect the appropriate viewer content type based upon the content of the 10 | request or response, usually based on the Content-Type header. However some websites do not set the correct 11 | Content-Type value for their content so not all of the appropriate content viewers are available. Configuring 12 | appropriate viewer content type mappings for these locations will allow you to view these requests with the 13 | best possible viewers. 14 |
15 | 16 |18 | When a request that matches one of the configured mappings is viewed within Charles any viewers that are appropriate 19 | for the configured viewer content type are enabled in addition to the automatically detected viewers. No changes are 20 | made to the actual request or response. 21 |
22 | 23 | @@tools.gen.locations.locationMatching@@ 24 | 25 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ViewerContentTypeEditor.html: -------------------------------------------------------------------------------- 1 |A viewer content type mapping consists of a location match and the desired request and response viewer content type.
3 |You may specify a desired request type or response type or both. You may also specify neither a request or response 4 | type in which case the mapping will have no effect. It is more usual to specify a response type as you are more likely 5 | to be interested in the viewing of response content than the request content (which is often empty)
6 | 7 |The viewer content types that may be selected relate to the types of specialised viewers that Charles has available 10 | (e.g. XML, Javascript and Protocol Buffers) and not to generic MIME types. For most of the viewer content types there is 11 | no further information to specify, the exception to this is the Protocol Buffers content type. When you select the 12 | Protocol Buffers content type you may specify the location (URL) of the protocol buffers descriptor file, the name of the 13 | message type and whether the content is a single message or a delimited list of messages.
14 | 15 | @@tools.gen.locations.locationMatchingEditor@@ -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/Breakpoints.html: -------------------------------------------------------------------------------- 1 |The Breakpoints tool lets you intercept requests and responses before they are passed through Charles. You can 3 | examine and edit the request or response and then decide whether to allow it to proceed or to block it.
4 | 5 |Each breakpoint matches a URL using location matching patterns, see below. Each breakpoint is also assigned 6 | to either the request, or response, or both so you break exactly where you want.
7 | 8 |When a request or response trips a breakpoint the Breakpoints window automatically opens in Charles and comes to the front. The 10 | Breakpoints window contains a list of the requests and responses currently intercepted and waiting for your action. Select 11 | the request or response to view and edit the contents. Then decide to Execute, Abort or Cancel the breakpoint.
12 | 13 |The Execute button applies any changes that you have made and lets the request or response proceed. The Abort button 14 | blocks the request or response and sends an error message to the client. The Cancel button discards any changes that you 15 | have made and lets the request or response proceed as if it wasn't intercepted.
16 | 17 | @@tools.gen.locations.locationMatching@@ -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/Breakpoints.html: -------------------------------------------------------------------------------- 1 |The Breakpoints tool lets you intercept requests and responses before they are passed through Charles. You can 3 | examine and edit the request or response and then decide whether to allow it to proceed or to block it.
4 | 5 |Each breakpoint matches a URL using location matching patterns, see below. Each breakpoint is also assigned 6 | to either the request, or response, or both so you break exactly where you want.
7 | 8 |When a request or response trips a breakpoint the Breakpoints window automatically opens in Charles and comes to the front. The 10 | Breakpoints window contains a list of the requests and responses currently intercepted and waiting for your action. Select 11 | the request or response to view and edit the contents. Then decide to Execute, Abort or Cancel the breakpoint.
12 | 13 |The Execute button applies any changes that you have made and lets the request or response proceed. The Abort button 14 | blocks the request or response and sends an error message to the client. The Cancel button discards any changes that you 15 | have made and lets the request or response proceed as if it wasn't intercepted.
16 | 17 | @@tools.gen.locations.locationMatching@@ -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/NoCaching.html: -------------------------------------------------------------------------------- 1 |3 | The No Caching tool prevents client applications, such as web browsers, from caching any resources. Therefore requests are always 4 | made to the remote website and you always see the latest version.
5 | 6 | @@tools.gen.locations.selectedLocations@@ 7 | 8 |10 | Caching enables a client application, such as a web browser, to use a local copy of a response rather than 11 | requesting it from the website. Caching is a very important part of the web as often the same resources are reused across multiple pages, 12 | and having to reload each resource for each page would greatly slow down the browsing experience. However caching can mean 13 | that you are not seeing the latest version of a resource, which is a problem when you're developing a web application - 14 | you want to always see your latest changes. 15 |
16 | 17 |The No Caching tool prevents caching by manipulating the HTTP headers that control the caching of responses. The If-Modified-Since and If-None-Match 19 | headers are removed from requests, Pragma: no-cache and Cache-control: no-cache are added. The Expires, Last-Modified and ETag headers are removed 20 | from responses and Expires: 0 and Cache-Control: no-cache are added.
21 | 22 | 23 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/NoCaching.html: -------------------------------------------------------------------------------- 1 |3 | The No Caching tool prevents client applications, such as web browsers, from caching any resources. Therefore requests are always 4 | made to the remote website and you always see the latest version.
5 | 6 | @@tools.gen.locations.selectedLocations@@ 7 | 8 |10 | Caching enables a client application, such as a web browser, to use a local copy of a response rather than 11 | requesting it from the website. Caching is a very important part of the web as often the same resources are reused across multiple pages, 12 | and having to reload each resource for each page would greatly slow down the browsing experience. However caching can mean 13 | that you are not seeing the latest version of a resource, which is a problem when you're developing a web application - 14 | you want to always see your latest changes. 15 |
16 | 17 |The No Caching tool prevents caching by manipulating the HTTP headers that control the caching of responses. The If-Modified-Since and If-None-Match 19 | headers are removed from requests, Pragma: no-cache and Cache-control: no-cache are added. The Expires, Last-Modified and ETag headers are removed 20 | from responses and Expires: 0 and Cache-Control: no-cache are added.
21 | 22 | 23 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/Rewrite.html: -------------------------------------------------------------------------------- 1 |The Rewrite tool enables you to create rules that modify requests and responses as they pass through Charles. Rules such as 3 | adding or changing a header or search and replace some text in the response body.
4 | 5 |Rewrite sets can be individual activated and deactivated. Each set contains a list of locations and rules. The locations 7 | choose the requests and responses on which the rules will operate.
8 | 9 |Each rule describes a single rewrite operation. The rule may affect the headers, the body, or parts of the request URL; it may operate 11 | on the request and or the response; it may then define search and replace or just replace style rewriting.
12 |More documentation for the rewrite rules is available in the Rewrite Rule editing dialog.
13 | 14 | @@tools.gen.locations.locationMatching@@ 15 | 16 |The Rewrite tool can be difficult to debug when your rewrite operation isn't working as expected. If you have trouble try including a very basic rule 18 | such as one that adds an obvious header, so you can see whether your rules are matching the request at all. Also turn on Debug in Error Log to get some 19 | debugging information printed in the Error Log accessed from the Window menu in Charles.
-------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/Rewrite.html: -------------------------------------------------------------------------------- 1 |The Rewrite tool enables you to create rules that modify requests and responses as they pass through Charles. Rules such as 3 | adding or changing a header or search and replace some text in the response body.
4 | 5 |Rewrite sets can be individual activated and deactivated. Each set contains a list of locations and rules. The locations 7 | choose the requests and responses on which the rules will operate.
8 | 9 |Each rule describes a single rewrite operation. The rule may affect the headers, the body, or parts of the request URL; it may operate 11 | on the request and or the response; it may then define search and replace or just replace style rewriting.
12 |More documentation for the rewrite rules is available in the Rewrite Rule editing dialog.
13 | 14 | @@tools.gen.locations.locationMatching@@ 15 | 16 |The Rewrite tool can be difficult to debug when your rewrite operation isn't working as expected. If you have trouble try including a very basic rule 18 | such as one that adds an obvious header, so you can see whether your rules are matching the request at all. Also turn on Debug in Error Log to get some 19 | debugging information printed in the Error Log accessed from the Window menu in Charles.
-------------------------------------------------------------------------------- /src/main/java/charles/version461/modifiers/BundleStringEncodingModifier.java: -------------------------------------------------------------------------------- 1 | package charles.version461.modifiers; 2 | 3 | import java.io.IOException; 4 | 5 | import javassist.CannotCompileException; 6 | import javassist.ClassPool; 7 | import javassist.CtClass; 8 | import javassist.CtMethod; 9 | import javassist.NotFoundException; 10 | 11 | public class BundleStringEncodingModifier { 12 | public static void modify(ClassPool classPool, String savePath) throws NotFoundException, CannotCompileException, IOException { 13 | CtClass ctClass = classPool.get("com.xk72.lib.uAtD"); 14 | CtClass ccString = classPool.get("java.lang.String"); 15 | CtMethod ctMethod =ctClass.getDeclaredMethod("XdKP",new CtClass[]{ccString}); 16 | ctMethod.setBody("{int i = $1.indexOf(\"@@\");\n" + 17 | " while (i != -1) {\n" + 18 | " int j = $1.indexOf(\"@@\", i + 2);\n" + 19 | " if (j != -1) {\n" + 20 | " String str = $1.substring(i + 2, j);\n" + 21 | " $1 = $1.substring(0, i) + $1.substring(0, i) + getString(str);\n" + 22 | " i = $1.indexOf(\"@@\", i);\n" + 23 | " } \n" + 24 | " } \n" + 25 | "$1 = new String($1.getBytes(\"ISO-8859-1\"), \"utf-8\");\n"+ 26 | " return $1;}"); 27 | ctClass.writeFile(savePath); 28 | 29 | 30 | 31 | 32 | 33 | } 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ExternalProxies.html: -------------------------------------------------------------------------------- 1 |3 | You may have a proxy server on your network that you have to use in order to access the Internet. In that case you need to configure Charles to use your existing proxy when it attempts to access the Internet. 4 |
5 |6 | You can configure separate proxy addresses and ports for: 7 |
8 |14 | If you have a SOCKS proxy Charles will use it for all non-HTTP(S) traffic such as for Port Forwarding. 15 |
16 | 17 |19 | You can configure authentication information for each proxy type. Charles supports Basic Authentication and NTLM Authentication. 20 | For NTLM Authentication you can enter an option Domain field. 21 |
22 |23 | If you don't configure authentication and your external proxy requests authentication Charles will pass on the authentication 24 | request to your browser as if Charles itself was requesting the authentication. 25 |
26 | 27 |29 | You can enter a list of locations to bypass the external proxy for. This list is whitespace separated, each location is a host or ip address match with an optional port (eg. hostname:port). 30 | Wildcards are supported. 31 |
32 |Note that previously Charles automatically did prefix matches on the bypass locations list. This was changed in Charles 3.5 to 33 | support the full location wildcard system. 34 |
35 | -------------------------------------------------------------------------------- /src/main/java/charles/version461/modifiers/ClassFileModifier.java: -------------------------------------------------------------------------------- 1 | package charles.version461.modifiers; 2 | 3 | import java.io.File; 4 | import java.io.IOException; 5 | import java.nio.file.Files; 6 | import java.nio.file.StandardCopyOption; 7 | 8 | public class ClassFileModifier { 9 | public static void copySource(String sourcePath,String savePath){ 10 | System.out.println(); 11 | copy(sourcePath, sourcePath, savePath); 12 | } 13 | 14 | private static void copy(String originSourcePath, String sourcePath,String savePath){ 15 | File sourceFile = new File(sourcePath); 16 | File[] childFiles = sourceFile.listFiles(); 17 | if (childFiles != null){ 18 | for (File file : childFiles){ 19 | if (file.isFile()){ 20 | try { 21 | File destFile = new File(savePath, file.getAbsolutePath().replace(originSourcePath, "")); 22 | if (!destFile.getParentFile().exists()){ 23 | destFile.getParentFile().mkdirs(); 24 | } 25 | Files.copy(file.toPath(), destFile.toPath(), StandardCopyOption.REPLACE_EXISTING); 26 | } catch (IOException e) { 27 | e.printStackTrace(); 28 | } 29 | } else if (file.isDirectory()){ 30 | copy(originSourcePath, file.getAbsolutePath(), savePath); 31 | } 32 | 33 | } 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/charles/version461/modifiers/JavaSourceReplace.java: -------------------------------------------------------------------------------- 1 | package charles.version461.modifiers; 2 | 3 | import javassist.*; 4 | 5 | import java.io.IOException; 6 | 7 | public class JavaSourceReplace { 8 | public static void modify(ClassPool classPool, String savePath) throws NotFoundException, CannotCompileException, IOException { 9 | addHelpMenu(classPool, savePath); 10 | register(classPool, savePath); 11 | } 12 | 13 | 14 | /** 15 | * help menu增加菜单 16 | */ 17 | private static void addHelpMenu(ClassPool classPool, String savePath) throws NotFoundException, CannotCompileException, IOException { 18 | CtClass ctClass = classPool.get("com.xk72.charles.gui.menus.HelpMenu"); 19 | CtConstructor ctConstructor = ctClass.getConstructors()[0]; 20 | ctConstructor.insertAfter("{" + 21 | "add(new com.xk72.charles.gui.menus.HelpMenuUrl(\"翻译支持\",\"https://github.com/cuiqingandroid/CharlesZH\"));" + 22 | "}"); 23 | ctClass.writeFile(savePath); 24 | } 25 | 26 | private static void register(ClassPool classPool, String savePath) throws NotFoundException, CannotCompileException, IOException { 27 | CtClass ctClass = classPool.get("com.xk72.charles.p"); 28 | CtMethod ctMethod =ctClass.getDeclaredMethod("a",null); 29 | ctMethod.setBody("{return true;}"); 30 | ctMethod = ctClass.getDeclaredMethod("c",null); 31 | ctMethod.setBody("{return \"cuiqing\";}"); 32 | ctClass.writeFile(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ExternalProxies.html: -------------------------------------------------------------------------------- 1 |3 | You may have a proxy server on your network that you have to use in order to access the Internet. In that case you need to configure Charles to use your existing proxy when it attempts to access the Internet. 4 |
5 |6 | You can configure separate proxy addresses and ports for: 7 |
8 |14 | If you have a SOCKS proxy Charles will use it for all non-HTTP(S) traffic such as for Port Forwarding. 15 |
16 | 17 |19 | You can configure authentication information for each proxy type. Charles supports Basic Authentication and NTLM Authentication. 20 | For NTLM Authentication you can enter an option Domain field. 21 |
22 |23 | If you don't configure authentication and your external proxy requests authentication Charles will pass on the authentication 24 | request to your browser as if Charles itself was requesting the authentication. 25 |
26 | 27 |29 | You can enter a list of locations to bypass the external proxy for. This list is whitespace separated, each location is a host or ip address match with an optional port (eg. hostname:port). 30 | Wildcards are supported. 31 |
32 |Note that previously Charles automatically did prefix matches on the bypass locations list. This was changed in Charles 3.5 to 33 | support the full location wildcard system. 34 |
35 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/MapLocalEditor.html: -------------------------------------------------------------------------------- 1 |A local mapping consists of a location match and the local directory from which to try to serve the matches.
3 |Files are searched for in the local directory using the relative path. The relative path is the part of the 4 | requested location left over after the path part of the match. This is best explained by the examples below.
5 | 6 |Local mappings can be case-sensitive, so that regardless of whether your local filesystem is in fact 7 | case-sensitive, the local mapping will always check the case. Case-sensitivity is the default.
8 | 9 |The following examples help to explain how the location match relates to the local directory. The "local" 11 | column is presented as relative to the local directory.
12 || Host | 15 |Path | 16 |Request | 17 |Local | 18 |
|---|---|---|---|
| xk72.com | 21 |22 | | xk72.com/charles/index.php | 23 |charles/index.php | 24 |
| xk72.com | 27 |/charles/ | 28 |xk72.com/charles/index.php | 29 |index.php | 30 |
| xk72.com | 33 |/*.php | 34 |xk72.com/charles/index.php | 35 |charles/index.php | 36 |
| xk72.com | 39 |/charles/*.php | 40 |xk72.com/charles/index.php | 41 |index.php | 42 |
A local mapping consists of a location match and the local directory from which to try to serve the matches.
3 |Files are searched for in the local directory using the relative path. The relative path is the part of the 4 | requested location left over after the path part of the match. This is best explained by the examples below.
5 | 6 |Local mappings can be case-sensitive, so that regardless of whether your local filesystem is in fact 7 | case-sensitive, the local mapping will always check the case. Case-sensitivity is the default.
8 | 9 |The following examples help to explain how the location match relates to the local directory. The "local" 11 | column is presented as relative to the local directory.
12 || Host | 15 |Path | 16 |Request | 17 |Local | 18 |
|---|---|---|---|
| xk72.com | 21 |22 | | xk72.com/charles/index.php | 23 |charles/index.php | 24 |
| xk72.com | 27 |/charles/ | 28 |xk72.com/charles/index.php | 29 |index.php | 30 |
| xk72.com | 33 |/*.php | 34 |xk72.com/charles/index.php | 35 |charles/index.php | 36 |
| xk72.com | 39 |/charles/*.php | 40 |xk72.com/charles/index.php | 41 |index.php | 42 |
Charles can automatically configure Mozilla Firefox's proxy settings. When the proxy settings 3 | are configured, Firefox will use Charles and thus its activity 4 | will be visible in Charles. Firefox is configured separately from your OS proxy settings as it uses 5 | its own proxy settings independent of your OS.
6 | 7 |You can enable the proxy configuration and then choose whether to configure Firefox to use Charles 8 | as an HTTP proxy or SOCKS proxy, if the SOCKS Proxy is itself enables on the Proxies tab. See the Proxies 9 | tab for information on the differences between HTTP and SOCKS.
10 | 11 |The Firefox proxy configuration can be enabled at start up, which is the default behaviour, so 12 | that when you start Charles it is ready to be used. Alternatively you can disable this and enable the Firefox 13 | proxy settings manually or configure Firefox manually to use Charles with 14 | its own proxy settings configuration interface.
15 | 16 |In order to configure Mozilla Firefox's proxy settings you must install the Charles Autoconfiguration 18 | add-on for Mozilla Firefox. You will be notified if the add-on is not installed and prompted to download 19 | and install it.
20 | 21 |Charles automatically locates your Mozilla Firefox profile for the purposes of configuring the proxy settings. 23 | Sometimes Charles may be unable to find your profile directory, although this is extremely rare so you should 24 | only use this option if you have no success with auto detection.
25 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ProxySettings-Mozilla.html: -------------------------------------------------------------------------------- 1 |Charles can automatically configure Mozilla Firefox's proxy settings. When the proxy settings 3 | are configured, Firefox will use Charles and thus its activity 4 | will be visible in Charles. Firefox is configured separately from your OS proxy settings as it uses 5 | its own proxy settings independent of your OS.
6 | 7 |You can enable the proxy configuration and then choose whether to configure Firefox to use Charles 8 | as an HTTP proxy or SOCKS proxy, if the SOCKS Proxy is itself enables on the Proxies tab. See the Proxies 9 | tab for information on the differences between HTTP and SOCKS.
10 | 11 |The Firefox proxy configuration can be enabled at start up, which is the default behaviour, so 12 | that when you start Charles it is ready to be used. Alternatively you can disable this and enable the Firefox 13 | proxy settings manually or configure Firefox manually to use Charles with 14 | its own proxy settings configuration interface.
15 | 16 |In order to configure Mozilla Firefox's proxy settings you must install the Charles Autoconfiguration 18 | add-on for Mozilla Firefox. You will be notified if the add-on is not installed and prompted to download 19 | and install it.
20 | 21 |Charles automatically locates your Mozilla Firefox profile for the purposes of configuring the proxy settings. 23 | Sometimes Charles may be unable to find your profile directory, although this is extremely rare so you should 24 | only use this option if you have no success with auto detection.
25 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/Mirror.html: -------------------------------------------------------------------------------- 1 |The Mirror tool saves responses to disk as they are received, creating a mirror copy of websites as you browse them.
3 | 4 |The responses are saved in the same directory structure as the website, with a root directory created for the hostname. 5 | File names are derived from the URL and converted to be suitable for saving. Query strings are included in the filename.
6 | 7 |If two responses are received for the same URL they overwrite each other, so you will always have the latest response 8 | saved in the mirror.
9 | 10 |The Mirror tool saves responses as they stream through Charles, therefore it is not effected by the recording limit set in 11 | the Recording Settings.
12 | 13 | @@tools.gen.locations.selectedLocations@@ 14 | 15 |Rather than using the Mirror tool you can also right-click on a node in the tree in Charles to save all the responses 17 | to disk after you've recorded them; that may prove to be an easier approach than configuring this tool. 18 | The only exception to this is that the Mirror tool is not limited by the recording limit set in the Recording Settings, 19 | whereas saving responses later is limited so very large responses will be lost.
20 | 21 |23 | If the Mirror tool is enabled for a request it will cause any compressed or encoded responses to be decoded. 24 | So if the server delivers a compressed response it will be decompressed by Charles before being passed on 25 | to the client, which usually won't have any effect but you may notice if you have built your own client or 26 | if the client is expecting compressed responses. With web browsers there is no effect. 27 |
28 | 29 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/Mirror.html: -------------------------------------------------------------------------------- 1 |The Mirror tool saves responses to disk as they are received, creating a mirror copy of websites as you browse them.
3 | 4 |The responses are saved in the same directory structure as the website, with a root directory created for the hostname. 5 | File names are derived from the URL and converted to be suitable for saving. Query strings are included in the filename.
6 | 7 |If two responses are received for the same URL they overwrite each other, so you will always have the latest response 8 | saved in the mirror.
9 | 10 |The Mirror tool saves responses as they stream through Charles, therefore it is not effected by the recording limit set in 11 | the Recording Settings.
12 | 13 | @@tools.gen.locations.selectedLocations@@ 14 | 15 |Rather than using the Mirror tool you can also right-click on a node in the tree in Charles to save all the responses 17 | to disk after you've recorded them; that may prove to be an easier approach than configuring this tool. 18 | The only exception to this is that the Mirror tool is not limited by the recording limit set in the Recording Settings, 19 | whereas saving responses later is limited so very large responses will be lost.
20 | 21 |23 | If the Mirror tool is enabled for a request it will cause any compressed or encoded responses to be decoded. 24 | So if the server delivers a compressed response it will be decompressed by Charles before being passed on 25 | to the client, which usually won't have any effect but you may notice if you have built your own client or 26 | if the client is expecting compressed responses. With web browsers there is no effect. 27 |
28 | 29 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/Map.html: -------------------------------------------------------------------------------- 1 |The Map Remote tool changes the request location, per the configured mappings, so that the response 3 | is transparently served from the new location as if that was the original request.
4 |This mapping enables you to serve all or part of one site from another. For example, you could serve 5 | a subdirectory of one site for another with a mapping from xk72.com/charles/ to localhost/charlesdev/, 6 | or serve all files with a given suffix from another site with a mapping from xk72.com/*.php to localhost/charlesdev/.
7 | 8 |Map Remote is useful if you have a development version of a site and would like to be able to browse the live 10 | site with some of the requests being served from development. For example, you may want to serve the css and images 11 | directories from your development server. Use a mapping like live.com/css/ to dev.com/css/ or live.com/*.css to dev.com. 12 | 13 |
If you don't specify a path in the destination mapping then the path part of the URL will not be changed. If you want 21 | to map to the root directory, put a / in the destination path field.
22 | 23 |Also see the Map Local tool, which can serve requests from local files so you can use the latest development 25 | files from your computer as if they were part of a remote website.
26 | 27 | @@tools.gen.locations.locationMatching@@ -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/Map.html: -------------------------------------------------------------------------------- 1 |The Map Remote tool changes the request location, per the configured mappings, so that the response 3 | is transparently served from the new location as if that was the original request.
4 |This mapping enables you to serve all or part of one site from another. For example, you could serve 5 | a subdirectory of one site for another with a mapping from xk72.com/charles/ to localhost/charlesdev/, 6 | or serve all files with a given suffix from another site with a mapping from xk72.com/*.php to localhost/charlesdev/.
7 | 8 |Map Remote is useful if you have a development version of a site and would like to be able to browse the live 10 | site with some of the requests being served from development. For example, you may want to serve the css and images 11 | directories from your development server. Use a mapping like live.com/css/ to dev.com/css/ or live.com/*.css to dev.com. 12 | 13 |
If you don't specify a path in the destination mapping then the path part of the URL will not be changed. If you want 21 | to map to the root directory, put a / in the destination path field.
22 | 23 |Also see the Map Local tool, which can serve requests from local files so you can use the latest development 25 | files from your computer as if they were part of a remote website.
26 | 27 | @@tools.gen.locations.locationMatching@@ -------------------------------------------------------------------------------- /src/main/java/org/cq/jartool/resource/jar_zh_CN.java: -------------------------------------------------------------------------------- 1 | package org.cq.jartool.resource; 2 | 3 | import java.util.ListResourceBundle; 4 | 5 | public final class jar_zh_CN extends ListResourceBundle { 6 | public jar_zh_CN() { 7 | } 8 | 9 | protected final Object[][] getContents() { 10 | return new Object[][]{{"error.bad.cflag", "'c' 标记要求指定清单或输入文件!"}, {"error.bad.eflag", "不能同时指定 'e' 标记和具有 'Main-Class' 属性的\n清单!"}, {"error.bad.option", "必须指定 {ctxu} 中的任一选项。"}, {"error.bad.uflag", "'u' 标记要求指定清单, 'e' 标记或输入文件!"}, {"error.cant.open", "无法打开: {0} "}, {"error.create.dir", "{0}: 无法创建目录"}, {"error.create.tempfile", "无法创建临时文件"}, {"error.illegal.option", "非法选项: {0}"}, {"error.incorrect.length", "处理时遇到不正确的长度: {0}"}, {"error.nosuch.fileordir", "{0}: 没有这个文件或目录"}, {"error.write.file", "写入现有的 jar 文件时出错"}, {"out.added.manifest", "已添加清单"}, {"out.adding", "正在添加: {0}"}, {"out.create", " 已创建: {0}"}, {"out.deflated", "(压缩了 {0}%)"}, {"out.extracted", "已提取: {0}"}, {"out.ignore.entry", "正在忽略条目{0}"}, {"out.inflated", " 已解压: {0}"}, {"out.size", "(输入 = {0}) (输出 = {1})"}, {"out.stored", "(存储了 0%)"}, {"out.update.manifest", "已更新清单"}, {"usage", "用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...\n选项:\n -c 创建新档案\n -t 列出档案目录\n -x 从档案中提取指定的 (或所有) 文件\n -u 更新现有档案\n -v 在标准输出中生成详细输出\n -f 指定档案文件名\n -m 包含指定清单文件中的清单信息\n -n 创建新档案后执行 Pack200 规范化\n -e 为捆绑到可执行 jar 文件的独立应用程序\n 指定应用程序入口点\n -0 仅存储; 不使用任何 ZIP 压缩\n -P 保留文件名中的前导 '/' (绝对路径) 和 \"..\" (父目录) 组件\n -M 不创建条目的清单文件\n -i 为指定的 jar 文件生成索引信息\n -C 更改为指定的目录并包含以下文件\n如果任何文件为目录, 则对其进行递归处理。\n清单文件名, 档案文件名和入口点名称的指定顺序\n与 'm', 'f' 和 'e' 标记的指定顺序相同。\n\n示例 1: 将两个类文件归档到一个名为 classes.jar 的档案中: \n jar cvf classes.jar Foo.class Bar.class \n示例 2: 使用现有的清单文件 'mymanifest' 并\n 将 foo/ 目录中的所有文件归档到 'classes.jar' 中: \n jar cvfm classes.jar mymanifest -C foo/ .\n"}}; 11 | } 12 | } -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/MapLocal.html: -------------------------------------------------------------------------------- 1 |3 | The Map Local tool enables you to use local files as if they were part of a remote website. 4 | You can develop your files locally and test them as if they were live. 5 | The contents of the local file is returned to the client as if it was the normal remote response. 6 |
7 | 8 |9 | Map Local can greatly speed development and testing in the case where you would otherwise have to upload files to 10 | a website to test the results. With Map Local you can test safely in your development environment. 11 |
12 | 13 |Dynamic files, such as files containing server-side scripting, 15 | aren't executed by Map Local so if there is any script in the file that script will be returned to the browser 16 | as is - probably not the intended result. 17 |
18 |19 | If you'd like to use dynamic files as if they were part of a remote website, 20 | see the Map Remote tool. 21 |
22 | 23 |25 | When a request matches a Map Local mapping it checks for a local file matching the path. 26 | It does not include the query string, if there is one. If the requested file is found locally 27 | then it is returned as the response, as if it was loaded from the remote site so it is 28 | transparent to the client. If the requested file isn't found locally then the request will be 29 | served by the website as usual. 30 |
31 | 32 |If you are testing css, swf or image changes you can map those file types to your local development 34 | copy of the website so you can browse the live site with all your development assets. Create a mapping 35 | from live.com/*.css to the root of your local development copy, and similar mappings for the other file types. 36 | Alternatively you can map whole directories or individual files as required. 37 |
38 | 39 | @@tools.gen.locations.locationMatching@@ 40 | 41 | -------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/MapLocal.html: -------------------------------------------------------------------------------- 1 |3 | The Map Local tool enables you to use local files as if they were part of a remote website. 4 | You can develop your files locally and test them as if they were live. 5 | The contents of the local file is returned to the client as if it was the normal remote response. 6 |
7 | 8 |9 | Map Local can greatly speed development and testing in the case where you would otherwise have to upload files to 10 | a website to test the results. With Map Local you can test safely in your development environment. 11 |
12 | 13 |Dynamic files, such as files containing server-side scripting, 15 | aren't executed by Map Local so if there is any script in the file that script will be returned to the browser 16 | as is - probably not the intended result. 17 |
18 |19 | If you'd like to use dynamic files as if they were part of a remote website, 20 | see the Map Remote tool. 21 |
22 | 23 |25 | When a request matches a Map Local mapping it checks for a local file matching the path. 26 | It does not include the query string, if there is one. If the requested file is found locally 27 | then it is returned as the response, as if it was loaded from the remote site so it is 28 | transparent to the client. If the requested file isn't found locally then the request will be 29 | served by the website as usual. 30 |
31 | 32 |If you are testing css, swf or image changes you can map those file types to your local development 34 | copy of the website so you can browse the live site with all your development assets. Create a mapping 35 | from live.com/*.css to the root of your local development copy, and similar mappings for the other file types. 36 | Alternatively you can map whole directories or individual files as required. 37 |
38 | 39 | @@tools.gen.locations.locationMatching@@ 40 | 41 | -------------------------------------------------------------------------------- /src/main/java/charles/version461/modifiers/MenuEncodingModifier.java: -------------------------------------------------------------------------------- 1 | package charles.version461.modifiers; 2 | 3 | import javassist.*; 4 | 5 | import java.io.IOException; 6 | 7 | import javax.swing.AbstractAction; 8 | 9 | public class MenuEncodingModifier { 10 | public static void modify(ClassPool classPool, String savePath) throws NotFoundException, CannotCompileException, IOException { 11 | modifyViewMenu(classPool, savePath); 12 | modifySessionMenu(classPool, savePath); 13 | } 14 | 15 | /** 16 | * 修改文件菜单的open和import 17 | */ 18 | private static void modifySessionMenu(ClassPool classPool, String savePath) throws NotFoundException, CannotCompileException, IOException { 19 | CtClass ctClass = classPool.get("com.xk72.charles.ZOpb"); 20 | CtConstructor ctConstructor = ctClass.getConstructors()[0]; 21 | ctConstructor.setBody("{kbzH = (javax.swing.Action)new com.xk72.charles.CharlesGUIFileManager$1(this, \"打开会话\",\"打开之前的会话\");ERKX = (javax.swing.Action)new com.xk72.charles.CharlesGUIFileManager$2(this, \"导入\", \"导入文件到会话\");}"); 22 | ctClass.writeFile(savePath); 23 | } 24 | 25 | /** 26 | * 修改视图菜单 27 | */ 28 | private static void modifyViewMenu(ClassPool classPool, String savePath) throws NotFoundException, CannotCompileException, IOException { 29 | CtClass ctClass = classPool.get("com.xk72.charles.gui.transaction.frames.SkbX"); 30 | CtConstructor ctConstructor = ctClass.getConstructors()[0]; 31 | ctConstructor.insertAfter("{" + 32 | "kbzH.putValue(javax.swing.Action.NAME, \"备注\");" + 33 | "ERKX.putValue(javax.swing.Action.NAME, \"请求\");" + 34 | "gMxR.putValue(javax.swing.Action.NAME, \"响应\");" + 35 | "PRdh.putValue(javax.swing.Action.NAME, \"总览\");" + 36 | "Idso.putValue(javax.swing.Action.NAME, \"概览\");" + 37 | "Vvaz.putValue(javax.swing.Action.NAME, \"图表\");" + 38 | "}"); 39 | ctClass.writeFile(savePath); 40 | } 41 | 42 | 43 | 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/ReverseProxiesEditor.html: -------------------------------------------------------------------------------- 1 |The port on the localhost to create the reverse proxy on. This field may be automatically populated with an available port. If there is 3 | another application using that port you will receive a warning message when the reverse proxy starts.
4 |eg. Given a local port of 8001 you will connect to the reverse proxy at http://localhost:8001/
5 | 6 |The hostname or IP address and port of the remote host that is the destination of the reverse proxy. 8 | The remote port defaults to 80 which is the default port for HTTP.
9 |eg. Enter a remote host of xk72.com and a remote port of 80, then http://localhost:8001/ will be as if you had connected 10 | to http://xk72.com/
11 | 12 |16 | Redirect responses from the remote server will be rewritten to match the 17 | reverse proxy source address. Defaults to on. 18 |
19 |Redirect responses from the remote server are to fully qualified 20 | URLs even if they are within the same website. If the redirect is to the remote server address it is necessary to rewrite 21 | it to the reverse proxy local address, otherwise the client will use the redirect URL to 22 | the remote host and thus no longer be connecting through the reverse proxy. 23 |
24 | 25 |27 | The Host HTTP header is passed unchanged from the incoming request, 28 | instead of the normal rewriting of the Host header to match the reverse proxy remote host. 29 | Defaults to off. 30 |
31 |32 | Preserving the Host header is only necessary if you have specific requirements; it is not required for ordinary use. 33 |
34 | 35 |37 | If you want to specify the local address to listen on for the reverse proxy you can enable this option and enter in the IP address here. 38 | This is useful if you want to run multiple network services on the same port but on different IP addresses on the same machine. 39 | When this option is disabled the reverse proxy binds to all available local addresses. 40 |
-------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/ReverseProxiesEditor.html: -------------------------------------------------------------------------------- 1 |The port on the localhost to create the reverse proxy on. This field may be automatically populated with an available port. If there is 3 | another application using that port you will receive a warning message when the reverse proxy starts.
4 |eg. Given a local port of 8001 you will connect to the reverse proxy at http://localhost:8001/
5 | 6 |The hostname or IP address and port of the remote host that is the destination of the reverse proxy. 8 | The remote port defaults to 80 which is the default port for HTTP.
9 |eg. Enter a remote host of xk72.com and a remote port of 80, then http://localhost:8001/ will be as if you had connected 10 | to http://xk72.com/
11 | 12 |16 | Redirect responses from the remote server will be rewritten to match the 17 | reverse proxy source address. Defaults to on. 18 |
19 |Redirect responses from the remote server are to fully qualified 20 | URLs even if they are within the same website. If the redirect is to the remote server address it is necessary to rewrite 21 | it to the reverse proxy local address, otherwise the client will use the redirect URL to 22 | the remote host and thus no longer be connecting through the reverse proxy. 23 |
24 | 25 |27 | The Host HTTP header is passed unchanged from the incoming request, 28 | instead of the normal rewriting of the Host header to match the reverse proxy remote host. 29 | Defaults to off. 30 |
31 |32 | Preserving the Host header is only necessary if you have specific requirements; it is not required for ordinary use. 33 |
34 | 35 |37 | If you want to specify the local address to listen on for the reverse proxy you can enable this option and enter in the IP address here. 38 | This is useful if you want to run multiple network services on the same port but on different IP addresses on the same machine. 39 | When this option is disabled the reverse proxy binds to all available local addresses. 40 |
-------------------------------------------------------------------------------- /src/main/source/4.6.1/helper/Protobuf.html: -------------------------------------------------------------------------------- 1 |3 | Charles identifies that an HTTP request or response contains a Protocol Buffers message when the Content-Type header has a MIME type of 4 | application/x-protobuf or application/x-google-protobuf. 5 |
6 |7 | In order to parse the content Charles needs to know the protobuf type for the message and be able to load the protobuf descriptor for that type. 8 | The message type can be specified by: 9 |
24 | There are two base descriptor files - google.protobuf.desc and unknown.desc - that contain the default message types used by Charles, these descriptors cannot be removed. 25 |
26 |27 | Order is important, the descriptors are loaded in the order in which they appear in the registry list, so if you have dependencies between your descriptor files you need to add them in the correct order. 28 | Additionally if you have same message type defined in more than one descriptor whichever descriptor is loaded last takes precedence. 29 | This means you can overwrite the default set of message types in google.protobuf.desc by adding a new descriptor with updated versions of those message types to your registry. 30 |
31 |32 | The Messages list is not editable, it simply allows you to inspect the list of message types contained within the currently loaded descriptor files. 33 |
-------------------------------------------------------------------------------- /src/main/source/4.6.2/com/xk72/charles/helper/Protobuf.html: -------------------------------------------------------------------------------- 1 |3 | Charles identifies that an HTTP request or response contains a Protocol Buffers message when the Content-Type header has a MIME type of 4 | application/x-protobuf or application/x-google-protobuf. 5 |
6 |7 | In order to parse the content Charles needs to know the protobuf type for the message and be able to load the protobuf descriptor for that type. 8 | The message type can be specified by: 9 |
24 | There are two base descriptor files - google.protobuf.desc and unknown.desc - that contain the default message types used by Charles, these descriptors cannot be removed. 25 |
26 |27 | Order is important, the descriptors are loaded in the order in which they appear in the registry list, so if you have dependencies between your descriptor files you need to add them in the correct order. 28 | Additionally if you have same message type defined in more than one descriptor whichever descriptor is loaded last takes precedence. 29 | This means you can overwrite the default set of message types in google.protobuf.desc by adding a new descriptor with updated versions of those message types to your registry. 30 |
31 |32 | The Messages list is not editable, it simply allows you to inspect the list of message types contained within the currently loaded descriptor files. 33 |
-------------------------------------------------------------------------------- /src/main/java/org/cq/jartool/CommandLine.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. 3 | * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 4 | * 5 | * 6 | * 7 | * 8 | * 9 | * 10 | * 11 | * 12 | * 13 | * 14 | * 15 | * 16 | * 17 | * 18 | * 19 | * 20 | * 21 | * 22 | * 23 | * 24 | */ 25 | 26 | package org.cq.jartool; 27 | 28 | import java.io.IOException; 29 | import java.io.Reader; 30 | import java.io.FileReader; 31 | import java.io.BufferedReader; 32 | import java.io.StreamTokenizer; 33 | import java.util.List; 34 | import java.util.ArrayList; 35 | 36 | /** 37 | * Various utility methods for processing Java tool command line arguments. 38 | * 39 | *This is NOT part of any API supported by Oracle. If
40 | * you write code that depends on this, you do so at your own risk.
41 | * This code and its internal interfaces are subject to change or
42 | * deletion without notice.
43 | */
44 | public class CommandLine {
45 | /**
46 | * Process Win32-style command files for the specified command line
47 | * arguments and return the resulting arguments. A command file argument
48 | * is of the form '@file' where 'file' is the name of the file whose
49 | * contents are to be parsed for additional arguments. The contents of
50 | * the command file are parsed using StreamTokenizer and the original
51 | * '@file' argument replaced with the resulting tokens. Recursive command
52 | * files are not supported. The '@' character itself can be quoted with
53 | * the sequence '@@'.
54 | */
55 | public static String[] parse(String[] args)
56 | throws IOException
57 | {
58 | List
3 | Throttling allows you to restrict the available bandwidth client applications, such as web browsers, may use to access remote servers.
4 | You can also introduce additional latency, reliability and stability constraints.
5 | This functionality allows you to simulate various connection situations, such as slow, high latency or unstable internet connections.
6 |
12 | There are a number of pre-defined throttle presets that simulate common internet connection types.
13 | New presets may be created by editing the throttle settings of an existing preset and selecting 'Add Preset'.
14 | Presets that you create may be removed later. The pre-defined presets cannot be removed.
15 |
19 | Bandwidth defines the maximum amount of data that can be transferred over time, it is specified in kilobits per second. You can specify different bandwidth limits for upload and download links.
20 |
24 | Utilisation is the percentage of the total bandwidth that can be used at any one time. It is simply applied as a scaling factor on the available bandwidth.
25 | For most modern internet connections utilisation is always 100%.
26 |
30 | Latency measures the delay in milliseconds on the first round-trip communication between the client and remote server. It is only applied once for each request from client to server.
31 |
35 | MTU is the maximum transmission unit, the largest size for a TCP packet in any transmission.
36 | Specifying the MTU doesn't change the available bandwidth but allows Charles to allocate the bandwidth in MTU sized chunks, resulting in a realistic level of packet fragmentation in each transmission.
37 |
41 | Reliability is a measure of how likely a connection is to fail completely. This is useful for simulating unreliable network conditions.
42 | Reliability is specified as the likelihood of successfully transmitting a 10KiB message, so a value of 50% means that half of all 10KiB transmissions will succeed.
43 | Larger messages or smaller messages are more or less likely to fail respectively, so that a 20KiB transmission would have only a 25% success rate and a 5KiB transmission approximately 70% success rate.
44 |
48 | Stability is a measure of how likely a connection is to be 'unstable' and therefore have reduced quality.
49 | This is useful for simulating networks, such as mobile networks, that periodically have poor connection quality.
50 | If a connection is unstable then the quality of the connection will fall randomly in the unstable quality range.
51 | This quality value is then applied as another scaling factor on the available bandwidth.
52 |
3 | The location match contains protocol, host, port and path fields that may be used to match the URL of the request.
4 | Any of the fields may be left blank, in which case they will match any value.
5 | Wildcards are supported using either *, ? or character ranges [...]. The * matches zero or more characters. The ? matches one character.
9 | Character ranges match one character in the range, eg. [a-z] or [aeiou].
13 | To match subpaths you must end your path with a /*. NOTE: In previous versions of Charles this was implicit, but it is now required.
14 |
18 | The query field matches the query string contents. Do not include the ? that starts the query string.
19 | Note that the ? character is a wildcard character.
20 |
22 | The query field can include wildcards, like the other fields, so you can do queries such as: "*page=1*" to match "page=1" anywhere
23 | in the query string.
24 |
28 | To match every request to a given host enter the hostname and leave the other fields blank.
29 | To match every request to a given path on a host enter the hostname and the path ending with a /, leave the other fields blank.
30 | To match every file with a given suffix on a host enter the hostname and /*.suffix, leave the other fields blank.
31 | Protocol and port matches can be added to the above to further narrow the location match.
3 | Throttling allows you to restrict the available bandwidth client applications, such as web browsers, may use to access remote servers.
4 | You can also introduce additional latency, reliability and stability constraints.
5 | This functionality allows you to simulate various connection situations, such as slow, high latency or unstable internet connections.
6 |
12 | There are a number of pre-defined throttle presets that simulate common internet connection types.
13 | New presets may be created by editing the throttle settings of an existing preset and selecting 'Add Preset'.
14 | Presets that you create may be removed later. The pre-defined presets cannot be removed.
15 |
19 | Bandwidth defines the maximum amount of data that can be transferred over time, it is specified in kilobits per second. You can specify different bandwidth limits for upload and download links.
20 |
24 | Utilisation is the percentage of the total bandwidth that can be used at any one time. It is simply applied as a scaling factor on the available bandwidth.
25 | For most modern internet connections utilisation is always 100%.
26 |
30 | Latency measures the delay in milliseconds on the first round-trip communication between the client and remote server. It is only applied once for each request from client to server.
31 |
35 | MTU is the maximum transmission unit, the largest size for a TCP packet in any transmission.
36 | Specifying the MTU doesn't change the available bandwidth but allows Charles to allocate the bandwidth in MTU sized chunks, resulting in a realistic level of packet fragmentation in each transmission.
37 |
41 | Reliability is a measure of how likely a connection is to fail completely. This is useful for simulating unreliable network conditions.
42 | Reliability is specified as the likelihood of successfully transmitting a 10KiB message, so a value of 50% means that half of all 10KiB transmissions will succeed.
43 | Larger messages or smaller messages are more or less likely to fail respectively, so that a 20KiB transmission would have only a 25% success rate and a 5KiB transmission approximately 70% success rate.
44 |
48 | Stability is a measure of how likely a connection is to be 'unstable' and therefore have reduced quality.
49 | This is useful for simulating networks, such as mobile networks, that periodically have poor connection quality.
50 | If a connection is unstable then the quality of the connection will fall randomly in the unstable quality range.
51 | This quality value is then applied as another scaling factor on the available bandwidth.
52 |
3 | The location match contains protocol, host, port and path fields that may be used to match the URL of the request.
4 | Any of the fields may be left blank, in which case they will match any value.
5 | Wildcards are supported using either *, ? or character ranges [...]. The * matches zero or more characters. The ? matches one character.
9 | Character ranges match one character in the range, eg. [a-z] or [aeiou].
13 | To match subpaths you must end your path with a /*. NOTE: In previous versions of Charles this was implicit, but it is now required.
14 |
18 | The query field matches the query string contents. Do not include the ? that starts the query string.
19 | Note that the ? character is a wildcard character.
20 |
22 | The query field can include wildcards, like the other fields, so you can do queries such as: "*page=1*" to match "page=1" anywhere
23 | in the query string.
24 |
28 | To match every request to a given host enter the hostname and leave the other fields blank.
29 | To match every request to a given path on a host enter the hostname and the path ending with a /, leave the other fields blank.
30 | To match every file with a given suffix on a host enter the hostname and /*.suffix, leave the other fields blank.
31 | Protocol and port matches can be added to the above to further narrow the location match. Each rule describes a single rewrite operation. The type specifies the type of rewriting operation to perform. There are four different categories of rewrite rule types;
6 | header rules, URL rules, query parameter rules, response status rules and body rules. The header and query parameter rules effect the header fields
7 | and query string parameters respectively; adding, modifying or removing headers and parameters. The URL and body rules perform
8 | find and replace on the different parts of the URL and on the body. The response status rule performs find and replace on the response status code and description, eg. 200 OK. Choose where to apply the rewrite rule; on the request, response or both. The match fields contain the text to match in the request or response to decide whether to fire this rule. You can leave either the name or value blank, or both, to
15 | match any value. If you leave both the name and value fields blank you will match all requests / responses. Regex support may be enabled, providing Perl-style regular expressions for your match. If you include groups in your regular expression they
17 | may be used in the match fields. The name field is an exact match field unless regex is enabled, in which case it supports partial matches. The name field is case-insensitive
19 | for both regex and normal matching.
20 | The name field may be disabled if you are creating a rewrite rule type that doesn't require it. The value field is a partial match unless you turn on Match whole value in which case it is an exact match. The value field is case-insensitive
22 | for both regex and normal matching for header and query parameter rules, and case-sensitive for URL and body rules. The new/replace fields contain the text to add or replace in the request or response when this rule is fired. Leave either the name or value blank
26 | to leave them the same as the matched name or value. If regex support is enabled for the match you may reference match groups using $1, $2 and so on. The behaviour of the name and value fields depends upon the match. If there is a corresponding match then the field acts as a replacement
29 | for the matched text, otherwise if the match is blank then the fields replaces the whole name or value. The value field supports Replace First or Replace All modes. The name field always operates in replace-first mode if the name match is a regex,
31 | otherwise it is an exact match and replaces the whole name. The name and or value fields may be disabled if you are creating a rewrite rule type that doesn't require them. Rewrite rules can be difficult to debug if they are not working as you expect. It is often best to build up a rule slowly with frequent testing. Each rule describes a single rewrite operation. The type specifies the type of rewriting operation to perform. There are four different categories of rewrite rule types;
6 | header rules, URL rules, query parameter rules, response status rules and body rules. The header and query parameter rules effect the header fields
7 | and query string parameters respectively; adding, modifying or removing headers and parameters. The URL and body rules perform
8 | find and replace on the different parts of the URL and on the body. The response status rule performs find and replace on the response status code and description, eg. 200 OK. Choose where to apply the rewrite rule; on the request, response or both. The match fields contain the text to match in the request or response to decide whether to fire this rule. You can leave either the name or value blank, or both, to
15 | match any value. If you leave both the name and value fields blank you will match all requests / responses. Regex support may be enabled, providing Perl-style regular expressions for your match. If you include groups in your regular expression they
17 | may be used in the match fields. The name field is an exact match field unless regex is enabled, in which case it supports partial matches. The name field is case-insensitive
19 | for both regex and normal matching.
20 | The name field may be disabled if you are creating a rewrite rule type that doesn't require it. The value field is a partial match unless you turn on Match whole value in which case it is an exact match. The value field is case-insensitive
22 | for both regex and normal matching for header and query parameter rules, and case-sensitive for URL and body rules. The new/replace fields contain the text to add or replace in the request or response when this rule is fired. Leave either the name or value blank
26 | to leave them the same as the matched name or value. If regex support is enabled for the match you may reference match groups using $1, $2 and so on. The behaviour of the name and value fields depends upon the match. If there is a corresponding match then the field acts as a replacement
29 | for the matched text, otherwise if the match is blank then the fields replaces the whole name or value. The value field supports Replace First or Replace All modes. The name field always operates in replace-first mode if the name match is a regex,
31 | otherwise it is an exact match and replaces the whole name. The name and or value fields may be disabled if you are creating a rewrite rule type that doesn't require them. Rewrite rules can be difficult to debug if they are not working as you expect. It is often best to build up a rule slowly with frequent testing. Charles can operate as an HTTP proxy and as a SOCKS proxy. The HTTP proxy is the default mode and most commonly used, however the SOCKS proxy yields
3 | more true-to-life performance. You can configure the ports on which Charles listens for the HTTP and SOCKS proxy as well as enable or disable the SOCKS proxy.
6 | The HTTP proxy is always enabled. The proxy method used will depend upon the configuration of your application or OS. See the OS or browser specific tabs in
10 | the Proxy Settings, or see
11 | the configuration in your application for which port it is connecting to. Enable the dynamic ports option to listen on a dynamic port, chosen each time Charles starts. This avoids conflicts with
15 | other network services that may be running on your computer, including other instances of Charles if it is a shared computer. Transparent proxying enables Charles to support clients who do not support HTTP proxy servers, or who are not aware that
19 | they are using an HTTP proxy server such as if a TCP/IP connection is redirected through Charles by a router or firewall. The SOCKS proxy can proxy any protocol, not just HTTP and HTTPS, so you may see raw socket streams being
23 | proxied through Charles with the SOCKS proxy configured. It is recommended to enable HTTP proxying over SOCKS. That identifies HTTP traffic and
25 | improves the display of it in Charles to match the behaviour when using the HTTP proxy. To achieve this Charles
26 | recognises some ports as carrying HTTP traffic. You may need to add to or change this list to suit your needs.
27 | In this way the SOCKS proxy may require more configuration than the HTTP proxy.
31 | Browsers limit the number of connections they will have open to a web server, in order to not overload the server.
32 | The HTTP/1.1 specification states that a browser should limit itself to 2 connections per server. For HTTP/1.0 there are
33 | non-standardized limits across different browsers.
34 |
36 | This limit can cause loading problems with websites as only 2 files (pages / images / css / javascript etc) can be downloaded at once.
37 | To get around this issue, developers sometimes distribute resources across different servers. For instance, http://maps.google.com/
38 | loads map tiles from mt0.google.com through mt3.google.com. That is 4 different server names, so even though these may actually all
39 | resolve to the same IP address and the same physical server, the browser treats them as different web sites each allowed 2 connections.
40 | This means that it can load 8 map tile images concurrently rather than the usual 2.
41 |
43 | When browsers use an HTTP proxy (such as Charles in HTTP proxy mode) they impose various different limits and also limit the total
44 | number of connections to the proxy server itself, thus subtley changing the behaviour and performance of websites.
45 | Charles is intended to have as little effect as possible on the regular performance of the web browser but in this case is at the
46 | mercy of the HTTP specification and browsers' behaviour with HTTP proxies.
47 |
49 | Fortunately when browsers use a SOCKS proxy the proxy is ignored in the calculation of connection limits, so the browser behaviour and performance is as normal.
50 | Therefore if you are performance testing a website or concerned about performance you should consider using Charles in SOCKS proxy mode.
51 | Charles can operate as an HTTP proxy and as a SOCKS proxy. The HTTP proxy is the default mode and most commonly used, however the SOCKS proxy yields
3 | more true-to-life performance. You can configure the ports on which Charles listens for the HTTP and SOCKS proxy as well as enable or disable the SOCKS proxy.
6 | The HTTP proxy is always enabled. The proxy method used will depend upon the configuration of your application or OS. See the OS or browser specific tabs in
10 | the Proxy Settings, or see
11 | the configuration in your application for which port it is connecting to. Enable the dynamic ports option to listen on a dynamic port, chosen each time Charles starts. This avoids conflicts with
15 | other network services that may be running on your computer, including other instances of Charles if it is a shared computer. Transparent proxying enables Charles to support clients who do not support HTTP proxy servers, or who are not aware that
19 | they are using an HTTP proxy server such as if a TCP/IP connection is redirected through Charles by a router or firewall. The SOCKS proxy can proxy any protocol, not just HTTP and HTTPS, so you may see raw socket streams being
23 | proxied through Charles with the SOCKS proxy configured. It is recommended to enable HTTP proxying over SOCKS. That identifies HTTP traffic and
25 | improves the display of it in Charles to match the behaviour when using the HTTP proxy. To achieve this Charles
26 | recognises some ports as carrying HTTP traffic. You may need to add to or change this list to suit your needs.
27 | In this way the SOCKS proxy may require more configuration than the HTTP proxy.
31 | Browsers limit the number of connections they will have open to a web server, in order to not overload the server.
32 | The HTTP/1.1 specification states that a browser should limit itself to 2 connections per server. For HTTP/1.0 there are
33 | non-standardized limits across different browsers.
34 |
36 | This limit can cause loading problems with websites as only 2 files (pages / images / css / javascript etc) can be downloaded at once.
37 | To get around this issue, developers sometimes distribute resources across different servers. For instance, http://maps.google.com/
38 | loads map tiles from mt0.google.com through mt3.google.com. That is 4 different server names, so even though these may actually all
39 | resolve to the same IP address and the same physical server, the browser treats them as different web sites each allowed 2 connections.
40 | This means that it can load 8 map tile images concurrently rather than the usual 2.
41 |
43 | When browsers use an HTTP proxy (such as Charles in HTTP proxy mode) they impose various different limits and also limit the total
44 | number of connections to the proxy server itself, thus subtley changing the behaviour and performance of websites.
45 | Charles is intended to have as little effect as possible on the regular performance of the web browser but in this case is at the
46 | mercy of the HTTP specification and browsers' behaviour with HTTP proxies.
47 |
49 | Fortunately when browsers use a SOCKS proxy the proxy is ignored in the calculation of connection limits, so the browser behaviour and performance is as normal.
50 | Therefore if you are performance testing a website or concerned about performance you should consider using Charles in SOCKS proxy mode.
51 | Throttle Settings
2 | Throttle Presets
11 | Bandwidth
18 | Utilisation
23 | Latency
29 | MTU
34 | Reliability
40 | Stability
47 | Location matching
2 | Wildcards
8 | Paths
12 | Query
17 | Common Uses
27 | Examples
34 |
35 |
81 |
82 |
36 |
40 | Host
37 | Path
38 | Result
39 |
41 |
45 | charlesproxy.com
42 |
43 | Matches all requests to host charlesproxy.com
44 |
46 |
50 | *.charlesproxy.com
47 |
48 | Matches all requests to hosts ending in .charlesproxy.com
49 |
51 |
55 | charlesproxy.com
52 | /charles/
53 | Matches all requests to charlesproxy.com/charles/ only
54 |
56 |
60 | charlesproxy.com
57 | /charles/*
58 | Matches all requests to charlesproxy.com/charles/ including files and subpaths
59 |
61 |
65 | charlesproxy.com
62 | /charles
63 | Matches all requests to charlesproxy.com/charles only
64 |
66 |
70 | charlesproxy.com
67 | /index.html
68 | Matches all requests to charlesproxy.com/charles.html only
69 |
71 |
75 | charlesproxy.com
72 | /*.html
73 | Matches all requests to files ending in .html on host charlesproxy.com
74 |
76 |
80 |
77 | /charles/*.html
78 | Matches all requests to files ending in .html under the path /charles/ (including subpaths) on any host
79 | Throttle Settings
2 | Throttle Presets
11 | Bandwidth
18 | Utilisation
23 | Latency
29 | MTU
34 | Reliability
40 | Stability
47 | Location matching
2 | Wildcards
8 | Paths
12 | Query
17 | Common Uses
27 | Examples
34 |
35 |
81 |
82 |
36 |
40 | Host
37 | Path
38 | Result
39 |
41 |
45 | charlesproxy.com
42 |
43 | Matches all requests to host charlesproxy.com
44 |
46 |
50 | *.charlesproxy.com
47 |
48 | Matches all requests to hosts ending in .charlesproxy.com
49 |
51 |
55 | charlesproxy.com
52 | /charles/
53 | Matches all requests to charlesproxy.com/charles/ only
54 |
56 |
60 | charlesproxy.com
57 | /charles/*
58 | Matches all requests to charlesproxy.com/charles/ including files and subpaths
59 |
61 |
65 | charlesproxy.com
62 | /charles
63 | Matches all requests to charlesproxy.com/charles only
64 |
66 |
70 | charlesproxy.com
67 | /index.html
68 | Matches all requests to charlesproxy.com/charles.html only
69 |
71 |
75 | charlesproxy.com
72 | /*.html
73 | Matches all requests to files ending in .html on host charlesproxy.com
74 |
76 |
80 |
77 | /charles/*.html
78 | Matches all requests to files ending in .html under the path /charles/ (including subpaths) on any host
79 | Rewrite Rule
2 | Type
5 | Where
11 | Match
14 | New / Replace
25 | Recommendations
35 | Rewrite Rule
2 | Type
5 | Where
11 | Match
14 | New / Replace
25 | Recommendations
35 | Proxies
2 | Using Proxies
9 | Dynamic ports
14 | Transparent HTTP Proxying
18 | SOCKS Proxy
22 | SOCKS Proxy Performance
30 | Proxies
2 | Using Proxies
9 | Dynamic ports
14 | Transparent HTTP Proxying
18 | SOCKS Proxy
22 | SOCKS Proxy Performance
30 |