安装

创建文件/etc/yum.repos.d/Charles.repo

1
2
3
4
[charlesproxy]
name=Charles Proxy Repository
baseurl=https://www.charlesproxy.com/packages/yum
gpgkey=https://www.charlesproxy.com/packages/yum/PublicKey

执行安装:

1
yum install charles-proxy

安装完成后,会生成一个/usr/bin/charles的执行文件,可直接运行。

运行报错

执行charles命令报错:because /lib64/libm.so.6: version 'GLIBC_2.27' not found (required by /usr/lib/charles-proxy/jdk/lib/server/libjvm.so)

解决办法,安装GLIBC_2.27库。

下载https://mirrors.tuna.tsinghua.edu.cn/gnu/libc/glibc-2.27.tar.gz

1
2
3
4
5
6
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/libc/glibc-2.27.tar.gz --no-check-certificate
tar -zxvf glibc-2.27.tar.gz
cd glibc-2.27
mkdir build && cd build
../configure --prefix=/opt/glibc-2.27
make && make install

configure报错

执行configure报错:These critical programs are missing or too old: bison compiler

报错原因为缺少bison依赖和gcc编译器,以下2个步骤都需要执行:

1.安装bison

1
yum install bison

2.查看版本gcc --version,版本过低,需升级gcc

  • 下载并解压

    1
    2
    wget https://mirrors.cloud.tencent.com/gnu/gcc/gcc-10.4.0/gcc-10.4.0.tar.gz --no-check-certificate
    tar -zxvf gcc-10.4.0.tar.gz
  • 安装依赖:

    1
    2
    3
    4
    5
    yum -y install bzip2 #已安装可以跳过这一步
    # 中标麒麟系统需要以下依赖
    # yum -y install gmp mpfr mpc isl bzip2
    cd gcc-10.4.0
    ./contrib/download_prerequisites
  • 配置

    1
    2
    mkdir build && cd build
    ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

    在执行该步骤如果出现A compiler with support for C++11 language features is required错误,先安装c++编译器:yum install gcc-c++

  • 编译并安装

    1
    make && make install

    该步骤耗时很长,需耐心等候。

make报错

执行make操作时,报各种代码错误,诸如:

  • gcc-11编译glibc-2.27:error: argument 1 of type ‘struct __jmp_buf_tag *’ declared as a pointer [-Werror=array-parameter=]
  • gcc-10编译glibc-2.27:error: array subscript 1 is outside the bounds of an interior zero-length array ‘struct dtv_slotinfo[0]’ [-Werror=zero-length-bounds]

最终解决方案gcc-10.4.0搭配glibc-2.32

1
2
3
4
5
6
https://mirrors.tuna.tsinghua.edu.cn/gnu/libc/glibc-2.32.tar.gz --no-check-certificate
tar -zxvf glibc-2.32.tar.gz
cd glibc-2.32
mkdir build && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --libexecdir=/usr/lib
make && make install

注意:这里的configure使用了官方的参数,参数--prefix=/usr是必须的。最终成功安装glibc-2.32,该项包含2.27版本。

1
strings /lib64/libm.so.6 |grep ^GLIBC

生成证书

导出charles根证书

1
charles ssl export charles-root.pem

将证书安装到linux系统

1
2
mv charles-root.pem /etc/ssl/certs/
update-ca-trust force-enable

配置

charles默认使用的配置文件为~/.charles.config,将其复制出来并进行修改:

  • 设置访问控制,charles默认有访问限制,将其完全放开,设置如下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <accessControlConfiguration>
    <warn>true</warn>
    <ipRanges>
    <ipRange>
    <ip>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    </ip>
    <mask>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    <int>0</int>
    </mask>
    </ipRange>
    </ipRanges>
    </accessControlConfiguration>
  • 启用https代理,在sslLocations节点下添加如下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <sslLocations>
    <locationPatterns>
    <locationMatch>
    <location>
    <host>*</host>
    <port>*</port>
    </location>
    <enabled>true</enabled>
    </locationMatch>
    </locationPatterns>
    </sslLocations>
  • 配置本地路由,使用百度作为测试:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <entry>
    <string>Map Local</string>
    <mapLocal>
    <toolEnabled>true</toolEnabled>
    <mappings>
    <mapLocalMapping>
    <sourceLocation>
    <protocol>https</protocol>
    <host>www.baidu.com</host>
    <port>443</port>
    <path>/</path>
    </sourceLocation>
    <dest>/root/charles/test.txt</dest>
    <enabled>true</enabled>
    <caseSensitive>true</caseSensitive>
    </mapLocalMapping>
    </mappings>
    </mapLocal>
    </entry>

之后使用新的配置文件启动:

1
charles -config /path/to/your-config.xml

客户端访问https://chls.pro/ssl地址获取并安装charles证书,并将证书受信即可进行https代理。

charles官方文档地址:https://www.charlesproxy.com/documentation

附录

升级make

1
2
3
4
5
6
7
8
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/make/make-4.2.tar.gz --no-check-certificate
tar -xvf make-4.2.tar.gz
cd make-4.2
mkdir build && cd build
../configure --prefix=/usr
sh build.sh
make install
make -v # 检查版本是否升级成功

安装python3

1
2
3
4
5
6
7
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz
tar -zxf Python-3.8.0.tgz
cd Python-3.8.0
mkdir build && cd build
mkdir /usr/local/python3
../configure --prefix=/usr/local/python3
make && make install

建立软链接

1
ln -s /usr/local/python3/bin/python3  /usr/bin/python3

资源地址

gnu官方地址:http://ftp.gnu.org/gnu/

腾讯云镜像:https://mirrors.cloud.tencent.com/gnu/

清华镜像:https://mirrors.tuna.tsinghua.edu.cn/gnu/

资源 对应目录
gcc /gcc/
glibc /libc/
make /make/

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1j20h7lk5sr7f