ProxyPin 中文文档 下载 App

ProxyPin onRequest 钩子 修改请求发出前

典型使用场景

场景一:自动注入鉴权 Token

测试环境需要临时给请求加 Token,不想改 App 代码:

function onRequest(context, request) {
  // 只对 API 请求生效
  if (request.url.includes('/api/')) {
    request.headers['Authorization'] = 'Bearer test-token-xyz';
    context.log('注入 Token 到 ' + request.url);
  }
  return request;
}

场景二:API 版本切换

临时测试新版 API,但不想改 App 里的所有路径:

function onRequest(context, request) {
  // 把 v1 路径的请求转到 v2
  if (request.url.includes('/api/v1/')) {
    request.url = request.url.replace('/api/v1/', '/api/v2/');
    context.log('API 版本切换 v1→v2');
  }
  return request;
}

场景三:请求参数修改

把 GET 请求里的某个查询参数改掉:

function onRequest(context, request) {
  if (request.method === 'GET' && request.url.includes('/users')) {
    // 替换 query 参数
    let url = new URL(request.url);
    url.searchParams.set('page', '2');
    url.searchParams.set('debug', 'true');
    request.url = url.toString();
  }
  return request;
}

场景四:条件性屏蔽请求

某些请求不希望发出去,但又不想配置全局屏蔽规则(影响范围太大):

function onRequest(context, request) {
  // 屏蔽支付确认请求(只在调试时)
  if (request.url.includes('/payment/confirm')) {
    context.log('DEBUG: 屏蔽支付确认请求');
    return null;  // 返回 null = 屏蔽
  }
  return request;
}

场景五:添加调试头

给所有请求加自定义 Header,让后端知道这是调试流量:

function onRequest(context, request) {
  request.headers['X-Debug-Source'] = 'ProxyPin-Debug';
  request.headers['X-Debug-Timestamp'] = Date.now().toString();
  return request;
}

错误处理

脚本执行出错时:

调试脚本时建议多加 context.log() 打印关键节点信息。