脚本
脚本是Reqable的核心调试功能之一,支持编写python脚本处理HTTP请求和响应。Reqable提供了一套基于Python的API,在脚本中,我们可以对请求和响应的数据进行修改、替换或者删除,甚至还可以中断请求和响应。除了使用Reqable内置的API,用户还可以使用自己安装的各种Python包,例如requests等。
脚本可以通过菜单调试 -> 脚本 -> 启用开启脚本功能(快捷键Shift + Control + P),在脚本开启后,快捷操作栏上的将会显示脚本激活的图标。

点击以上图标,可以关闭脚本功能,脚本关闭后,图标将从快捷操作栏上消失。如果希望脚本功能图标常驻在快捷操作栏,可以使用右键快捷操作栏自定义进行固定。

为防止功能滥用,Reqable在移动端不提供此功能。
创建规则
创建一个脚本规则有下面几种方式:
- 调试菜单 -> 脚本 -> 添加规则
- 右键脚本图标 -> 添加规则
- 托盘 -> 脚本 -> 添加规则
- 脚本列表 -> 新建按钮
- 脚本列表 -> 右键菜单 -> 新建
- 调试列表 -> 选中一个列表项 -> 右键菜单 -> 脚本
- 快捷键
Shift + Alt + P
输入规则名称和匹配的URL,URL支持简单的Wildcard * 和 ? 匹配,然后编写Python脚本分别处理HTTP请求和响应。

编写脚本
脚本使用python3运行,必须使用python3的语法。脚本提供两个函数调用入口:onRequest和onResponse,顾名思义即请求和响应。
脚本修改后会自动保存,也可以手动使用快捷键 Control + S 立即保存。
onRequest
此函数在客户端请求发送给服务器前被调用,开发者可以在此函数作用域内对请求进行修改。 函数接收两个参数CaptureContext和HttpRequest并返回HttpRequest。
如果需要中断此请求,onRequest函数结果返回None即可!
onResponse
此函数在服务端响应发送给客户端前被调用,开发者可以在此函数作用域内对响应进行修改。 函数接收两个参数CaptureContext和HttpResponse并返回HttpResponse。
如果需要中断此响应,onResponse函数结果返回None即可!
生命周期
需要注意的是,onRequest 和 onResponse 两个函数的分别运行在不同的进程中,所以两个函数无法直接共享外部变量。如果需要共享数据,请使用CaptureContext的 shared 变量。
def onRequest(context, request):
context.shared = 'foobar'
return request
def onResponse(context, response):
print(context.shared) # print foobar
return response
API说明
已迁移至脚本API!
调试控制台
Reqable提供了脚本控制台功能,方便开发人员查看脚本的日志输出,以及脚本报错的backtrace信息。在脚本执行的过程中保持脚本编辑器窗口打开,所有的信息都会实时输出到右侧的控制台中。

上图示例中,我们编写了一个除零错误,控制台中也产生了相应的报错信息。
运行环境
脚本功能依赖于本机的python3环境,请务必保证本机设备上安装了python3。新手请参考Python3下载和安装。
要求Python3版本必须大于 3.6
如果本机上有多个python3环境,可以手动指定Python3 Home路径:右击脚本图标 -> 设置环境

管理规则
规则从上往下进行匹配,同一个请求可以匹配多个规则,越靠前越先执行。规则支持文件夹级别的管理,长按后拖动可以调整位置。同时支持导入和导出,方便与他人进行分享和协同。
