3分钟
rulesServer
设置请求规则的服务(支持http/https/websocket请求)
exports.rulesServer = (server, options) => {
// options 同上,initial.js的options是同一个对象
server.on('request', (req, res) => {
const oReq = req.originalReq;
const oRes = req.originalRes;
req.clientIp: 请求的客户端IP,注意:挂在req里面
oReq.id: 请求的ID,每个请求对应一个唯一的ID
oReq.headers: 请求的原始headers,而req.headers包含了一些插件自定义字段
oReq.ruleValue: 配置的规则值, 如:whistle.xxx://ruleValue
oReq.url: 请求的完整url
oReq.realUrl: 请求的真实url,一般为空
oReq.method: 请求方法
oReq.clientPort: 请求的客户端端口
oReq.globalValue: pattern @globalValue
oReq.proxyValue: 配置的代理规则,一般为空
oReq.pacValue: 配置的pac规则,一般为空
oRes.serverIp: 服务端IP,只有在server或resServer、resStatsServer才能获取到
oRes.statusCode: 响应状态码,同 oRes.serverIp
// 获取抓包数据,不需要等待响应完成
// 这里unsafe主要是提醒不要在回调里面返回规则
// 如果这样不会触发响应
req.unsafe_getReqSession((s) => {
// 如果设置了 enable://hide 会获取到空数据
if (!s) {
return;
}
// do sth
}):
// 获取完整的抓包数据,要等待响应完成
// 这里unsafe主要是提醒不要在回调里面返回规则
// 如果这样不会触发响应
req.unsafe_getSession((s) => {
// 如果设置了 enable://hide 会获取到空数据
if (!s) {
return;
}
// do sth
}):
// 获取WebSocket或Socket请求的帧数据列表
// 返回 1~16 个帧数据
// 这里unsafe主要是提醒不要在回调里面返回规则
// 如果这样不会触发响应
req.unsafe_getFrames((list) => {
// 如果为空表示该长连接已断开
if (!list) {
return;
}
// do sth
}):
});
};
学员评价