MAC和移动端实现charles和代理软件共存【100%生效】


本意

想要实现电脑连接代理软件(不限于具体某个软件),并开启charles,手机和电脑连接同一个wifi,手机连接电脑代理,实现手机请求对应代理软件设置的国家的网页,并在电脑端实现抓包。

charles与代理软件共存说明了如果通过让所有HTTP(S)流量都走Charles,然后Charles 再设置外部代理(External Proxy)为代理软件 的本地代理即可,这样流量依次经过两个代理,既能抓包,又能FQ。

方案

方案一:

网上看了很多教程基本上都是这一种方案:

下载 chrome 插件  SwitchyOmega  

如下配置,配置本地ip,和 代理软件所占的端口号,注意这里不是 charles 的端口号,然后在 chrome 插件栏小图标中选择为 自己设定的模式:proxy。

 这样,即可实现本地 ip 变为 代理软件 连接的国家 ip ,并在电脑端可以实现charles 抓包,但是手机连接的代理,查询 ip 依然为国内 ip,无法代理到 电脑连接的 国家,

==参考自这里==

方案二:

上述方案,手机查询IP地址,依然显示为国内,即手机没有代理成功。

我们可以这样配置:

让请求先通过charles,charles再转发给vpn。 指定http(s)代理端口为charles,charles设置外部代理为电脑的代理软件。最终访问网络的是vpn的网络,charles作为前置代理。 步骤: 1、打开网络偏好设置=》高级=》代理,设置网页代理、安全网页代理、socks代理都为本地服务器,端口号为本地开charles端口号(这里是8866)(这步不重要)

 2、最重要一步,这一步配置决定了手机可以开启和 Mac 一样的 国家,

打开 charles ,选择 proxy=》External Proxy Settings=》勾选前两个,设置为本地 代理软件 的服务器和 端口

==参考自这里==

==概念参考这里==

遇到的问题

安卓下Charles安装了证书仍提示unknown

安卓机已安装了证书,部分https的请求还是无法抓取,
可能会遇到的情况 method的是connect
提示:
主要是因为以下原因

安卓系统

从Android N开始,您需要向您的应用添加配置,以使其信任Charles SSL Proxying生成的SSL证书。这意味着您只能将SSL代理与您控制的应用一起使用。

为了将您的应用程序配置为信任Charles,您需要将网络安全配置文件添加 到您的应用程序。该文件可以覆盖系统默认值,使您的应用程序可以信任用户安装的CA证书(例如Charles Root证书)。您可以指定这仅适用于应用程序的调试版本,以便生产版本使用默认的信任配置文件。

将文件 res / xml / network_security_config.xml添加到您的应用中:

<!-信任用户仅在可调试时添加了CA –> 然后在您的应用清单中添加对此文件的引用,如下所示:

<?xml版本= “ 1.0” 编码= “ utf-8” ?> <清单... > <应用程序android:networkSecurityConfig = “ @ xml / ne

官方文档:https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/