1. 介绍
Charles 其实是一个本地代理服务器,它提供了很多的功能例如:抓包、反向代理、查看 HTTP 报文等一系列的工具。这是 Charles 的启动页面,给我的感觉非常的好看和优雅:
2. 使用
打开后 Charles 的界面分布非常的简单,如下图所示:
首先需要保证代理已经开启(MacOS 则对应着 Mac Proxy)
接着打开 Proxy Settings,记录下本地 HTTP 代理的端口号:
然后在 Chrome 中通过 SwitchyOmega 代理插件将请求转发到 Charles 的本地 HTTP 代理上:
Map Remote
Map Remote 功能允许将某一个请求的转发到指定的域名、端口号、请求路径上。假如我们想将请求 http://example.org/api/users
转发到本地的 http://localhost:8080/users
上,那么我们就可以像下图一样配置:
同时它也支持通配符模式,如下:
这样当访问下面的 URL 时:
http://example.org/api/users
http://example.org/api/posts
都会被映射到:
http://localhost:8080/users
http://localhost:8080/posts
作为测试,我们可以运行本地 Python Flask 服务:
from flask import Flask
from werkzeug.routing import BaseConverter
class RegexConverter(BaseConverter):
def __init__(self, map, *args):
super().__init__(map)
self.map = map
self.regex = args[0]
app = Flask(__name__)
app.url_map.converters['regex'] = RegexConverter
@app.route('/<regex(".*"):url>')
def index(url):
return 'Request, URL=/{}'.format(url)
if __name__ == '__main__':
app.run(port=8080)
这样就可以很容易地实现本地请求域名+请求路径重写了: