1.0.7 • Published 5 months ago

whistle.data-checker v1.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

whistle.data-checker

options

{
  name: 'whistle.data-checker',
  script: '/usr/local/lib/node_modules/whistle/lib/plugins/load-plugin',
  value: '/Users/aidenmo/projects/web/whistle.data-checker',
  version: '1.0.0',
  CUSTOM_CERT_HEADER: 'x-whistle-exists-custom-cert',
  ENABLE_CAPTURE_HEADER: 'x-whistle-enable-capture',
  RULE_VALUE_HEADER: 'x-whistle-rule-value',
  SNI_VALUE_HEADER: 'x-whistle-sni-value',
  RULE_URL_HEADER: 'x-whistle-rule-url',
  MAX_AGE_HEADER: 'x-whistle-max-age',
  ETAG_HEADER: 'x-whistle-etag',
  FULL_URL_HEADER: 'x-whistle-full-url',
  REAL_URL_HEADER: 'x-whistle-real-url',
  RELATIVE_URL_HEADER: 'x-whistle-relative-url',
  EXTRA_URL_HEADER: 'x-whistle-extra-url',
  REQ_ID_HEADER: 'x-whistle-req-id',
  PIPE_VALUE_HEADER: 'x-whistle-pipe-value',
  CUSTOM_PARSER_HEADER: 'x-whistle-frame-parser',
  STATUS_CODE_HEADER: 'x-whistle-status-code',
  PLUGIN_REQUEST_HEADER: 'x-whistle-plugin-request',
  LOCAL_HOST_HEADER: 'x-whistle-local-host',
  HOST_VALUE_HEADER: 'x-whistle-local-host',
  PROXY_VALUE_HEADER: 'x-whistle-proxy-value',
  PAC_VALUE_HEADER: 'x-whistle-pac-value',
  METHOD_HEADER: 'x-whistle-method',
  CLIENT_IP_HEADER: 'x-forwarded-for',
  CLIENT_PORT_HEAD: 'x-whistle-client-port',
  UI_REQUEST_HEADER: 'x-whistle-auth-ui-request',
  GLOBAL_VALUE_HEAD: 'x-whistle-global-value',
  SERVER_NAME_HEAD: 'x-whistle-server-name',
  COMMON_NAME_HEAD: 'x-whistle-common-name',
  CERT_CACHE_INFO: 'x-whistle-cert-cache-info',
  HOST_IP_HEADER: 'x-whistle-host-ip',
  debugMode: true,
  config: {
    _from: 'whistle',
    _id: 'whistle@2.9.33',
    _inBundle: false,
    _integrity: 'sha512-/llORnUQB4bY6AZmbm6mK+pyW8GKTgnE9tArm5YnupvBHDJmxAtCo/d0r4j9RMzC4Vl5oP9Mhc3TuW2zoliIrA==',
    _location: '/whistle',
    _resolved: 'https://mirrors.tencent.com/npm/whistle/-/whistle-2.9.33.tgz',
    _shasum: '286988c12a7b14ff9fa8304b92530b7c160aed42',
    _spec: 'whistle',
    _where: '/Users/aidenmo/projects/web',
    bundleDependencies: false,
    dataDirname: '.whistle',
    deprecated: false,
    description: 'HTTP, HTTP2, HTTPS, Websocket debugging proxy',
    homepage: 'https://github.com/avwo/whistle',
    license: 'MIT',
    localUIHost: 'local.whistlejs.com',
    name: 'whistle',
    port: 8001,
    registry: 'https://registry.npmjs.org/whistle',
    sockets: 256,
    timeout: 360000,
    version: '2.9.33',
    rejectUnauthorized: false,
    enableH2: true,
    ASSESTS_PATH: '/usr/local/lib/node_modules/whistle/assets',
    REQ_FROM_HEADER: 'x-whistle-request-from',
    WHISTLE_POLICY_HEADER: 'x-whistle-policy',
    CUSTOM_CERT_HEADER: 'x-whistle-exists-custom-cert',
    ENABLE_CAPTURE_HEADER: 'x-whistle-enable-capture',
    CLIENT_IP_HEAD: 'x-forwarded-for',
    HTTPS_FIELD: 'x-whistle-https-request',
    HTTPS_PROTO_HEADER: 'x-forwarded-proto',
    REAL_HOST_HEADER: 'x-whistle-real-host',
    FWD_HOST_HEADER: 'x-forwarded-host',
    INTERNAL_ID_HEADER: '_x-whistle-internal-id',
    CLIENT_PORT_HEAD: 'x-whistle-client-port',
    WEBUI_PATH: '/.whistle-path.5b6af7b9884e1165/',
    PLUGIN_HOOK_NAME_HEADER: 'x-whistle-plugin-hook-name_',
    CLIENT_ID_HEADER: 'x-whistle-client-id',
    CLIENT_ID_HEAD: 'x-whistle-client-id',
    TUNNEL_DATA_HEADER: 'x-whistle-tunnel-data',
    ALPN_PROTOCOL_HEADER: 'x-whistle-alpn-protocol',
    CONN_TIMEOUT: 30000,
    baseDir: '/Users/aidenmo/.WhistleAppData/.whistle',
    CUSTOM_PLUGIN_PATH: '/Users/aidenmo/.WhistleAppData/custom_plugins',
    CUSTOM_CERTS_DIR: '/Users/aidenmo/.WhistleAppData/custom_certs',
    DEV_PLUGINS_PATH: '/Users/aidenmo/.WhistleAppData/dev_plugins',
    uiport: 8001,
    debugMode: true,
    host: '127.0.0.1',
    captureData: true,
    httpAgent: false,
    httpsAgent: false,
    baseDirHash: '2e69e03c2da9f6c9cbcfe87793800a9d0dc40260',
    rulesDir: '/Users/aidenmo/.WhistleAppData/.whistle/rules',
    valuesDir: '/Users/aidenmo/.WhistleAppData/.whistle/values',
    propertiesDir: '/Users/aidenmo/.WhistleAppData/.whistle/properties',
    clientId: 'AIDENMO-MB0.25kSg8Y35hAUn/lM5V4hergJhEpEgrUtuZ4xRQjln+g=',
    runtimeId: 'AIDENMO-MB0.OZE0od1gaT2qUDyG4wzXn8VOKT9+ojuihf/qbe/kMAg=/8001',
    uiHostList: [],
    pluginHosts: {},
    pluginBaseDir: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker',
    pluginDataDir: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker'
  },
  Storage: [Function: Storage],
  parseUrl: [Function (anonymous)],
  formatHeaders: [Function: formatRawHeaders],
  wsParser: {
    getExtensions: [Function: getExtensions],
    getSender: [Function (anonymous)],
    getReceiver: [Function (anonymous)]
  },
  RULE_PROTO_HEADER: 'x-whistle-rule-proto',
  wrapWsReader: [Function: wrapWsReader],
  wrapWsWriter: [Function: wrapWsWriter],
  require: [Function: require] {
    resolve: [Function: resolve] { paths: [Function: paths] },
    main: Module {
      id: '.',
      path: '/usr/local/lib/node_modules/whistle/node_modules/pfork/lib',
      exports: {},
      parent: null,
      filename: '/usr/local/lib/node_modules/whistle/node_modules/pfork/lib/main.js',
      loaded: true,
      children: [Array],
      paths: [Array]
    },
    extensions: [Object: null prototype] {
      '.js': [Function (anonymous)],
      '.json': [Function (anonymous)],
      '.node': [Function (anonymous)]
    },
    cache: [Object: null prototype] {
      '/usr/local/lib/node_modules/whistle/node_modules/pfork/lib/main.js': [Module],
      '/usr/local/lib/node_modules/whistle/node_modules/pfork/lib/util.js': [Module],
      '/Users/aidenmo/projects/web/whistle.data-checker/lib/util.js': [Module]
    }
  },
  REQ_FROM_HEADER: 'x-whistle-request-from',
  shortName: 'whistle.data-checker',
  localStorage: Storage {
    recycleBin: RecycleBin {
      _dir: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/.recycle_bin',
      _list: [],
      _map: {}
    },
    _disabled: false,
    _backupDir: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/.backup',
    _files: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/files',
    _properties: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/properties',
    _backupProps: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/.backup/properties',
    _cache: { maxIndex: -1, files: {}, properties: [Object] }
  },
  storage: Storage {
    recycleBin: RecycleBin {
      _dir: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/.recycle_bin',
      _list: [],
      _map: {}
    },
    _disabled: false,
    _backupDir: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/.backup',
    _files: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/files',
    _properties: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/properties',
    _backupProps: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/.backup/properties',
    _cache: { maxIndex: -1, files: {}, properties: [Object] }
  },
  baseUrl: 'http://127.0.0.1:8001',
  LRU: [Function: LRUCache],
  getValue: [Function: getValue],
  getCert: [Function: getCert],
  getRootCA: [Function (anonymous)],
  getHttpsStatus: [Function (anonymous)],
  getPerfData: [Function (anonymous)],
  getProcessData: [Function (anonymous)],
  getRuntimeInfo: [Function (anonymous)],
  getTop: [Function (anonymous)],
  updateRules: [Function (anonymous)],
  compose: [Function (anonymous)],
  composer: [Function (anonymous)],
  getRules: [Function (anonymous)],
  getValues: [Function (anonymous)],
  getPlugins: [Function (anonymous)],
  getCustomCertsInfo: [Function (anonymous)],
  isActive: [Function (anonymous)],
  isEnable: [Function (anonymous)],
  connect: [Function: connect],
  request: [Function: request]
}

req

IncomingMessage {
  _readableState: ReadableState {
    objectMode: false,
    highWaterMark: 16384,
    buffer: BufferList { head: null, tail: null, length: 0 },
    length: 0,
    pipes: [],
    flowing: true,
    ended: true,
    endEmitted: true,
    reading: false,
    sync: true,
    needReadable: false,
    emittedReadable: false,
    readableListening: false,
    resumeScheduled: false,
    errorEmitted: false,
    emitClose: true,
    autoDestroy: false,
    destroyed: false,
    errored: null,
    closed: false,
    closeEmitted: false,
    defaultEncoding: 'utf8',
    awaitDrainWriters: null,
    multiAwaitDrain: false,
    readingMore: true,
    dataEmitted: false,
    decoder: null,
    encoding: null,
    [Symbol(kPaused)]: false
  },
  _events: [Object: null prototype] {
    end: [ [Function: clearRequestTimeout], [Function: clearIncoming] ],
    error: [Function: destroy]
  },
  _eventsCount: 2,
  _maxListeners: undefined,
  socket: Socket {
    connecting: false,
    _hadError: false,
    _parent: null,
    _host: null,
    _readableState: ReadableState {
      objectMode: false,
      highWaterMark: 16384,
      buffer: BufferList { head: null, tail: null, length: 0 },
      length: 0,
      pipes: [],
      flowing: true,
      ended: false,
      endEmitted: false,
      reading: true,
      sync: false,
      needReadable: true,
      emittedReadable: false,
      readableListening: false,
      resumeScheduled: false,
      errorEmitted: false,
      emitClose: false,
      autoDestroy: false,
      destroyed: true,
      errored: null,
      closed: true,
      closeEmitted: true,
      defaultEncoding: 'utf8',
      awaitDrainWriters: null,
      multiAwaitDrain: false,
      readingMore: false,
      dataEmitted: false,
      decoder: null,
      encoding: null,
      [Symbol(kPaused)]: false
    },
    _events: [Object: null prototype] {
      error: [Array],
      end: [Array],
      timeout: [Function: socketOnTimeout],
      data: [Function: bound socketOnData],
      close: [Function: bound socketOnClose],
      drain: [Function: bound socketOnDrain],
      resume: [Function: onSocketResume],
      pause: [Function: onSocketPause]
    },
    _eventsCount: 8,
    _maxListeners: undefined,
    _writableState: WritableState {
      objectMode: false,
      highWaterMark: 16384,
      finalCalled: true,
      needDrain: false,
      ending: true,
      ended: true,
      finished: true,
      destroyed: true,
      decodeStrings: false,
      defaultEncoding: 'utf8',
      length: 0,
      writing: false,
      corked: 0,
      sync: false,
      bufferProcessing: false,
      onwrite: [Function: bound onwrite],
      writecb: null,
      writelen: 0,
      afterWriteTickInfo: null,
      buffered: [],
      bufferedIndex: 0,
      allBuffers: true,
      allNoop: true,
      pendingcb: 0,
      prefinished: true,
      errorEmitted: false,
      emitClose: false,
      autoDestroy: false,
      errored: null,
      closed: true,
      closeEmitted: false
    },
    allowHalfOpen: true,
    on: [Function: socketListenerWrap],
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: Server {
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      _events: [Object: null prototype],
      _eventsCount: 4,
      _maxListeners: undefined,
      _connections: 0,
      _handle: [TCP],
      _usingWorkers: false,
      _workers: [],
      _unref: false,
      allowHalfOpen: true,
      pauseOnConnect: false,
      httpAllowHalfOpen: false,
      timeout: 360000,
      keepAliveTimeout: 5000,
      maxHeadersCount: null,
      headersTimeout: 60000,
      requestTimeout: 0,
      _connectionKey: '4:127.0.0.1:40501',
      [Symbol(IncomingMessage)]: [Function: IncomingMessage],
      [Symbol(ServerResponse)]: [Function: ServerResponse],
      [Symbol(kCapture)]: false,
      [Symbol(async_id_symbol)]: 14
    },
    _server: Server {
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      _events: [Object: null prototype],
      _eventsCount: 4,
      _maxListeners: undefined,
      _connections: 0,
      _handle: [TCP],
      _usingWorkers: false,
      _workers: [],
      _unref: false,
      allowHalfOpen: true,
      pauseOnConnect: false,
      httpAllowHalfOpen: false,
      timeout: 360000,
      keepAliveTimeout: 5000,
      maxHeadersCount: null,
      headersTimeout: 60000,
      requestTimeout: 0,
      _connectionKey: '4:127.0.0.1:40501',
      [Symbol(IncomingMessage)]: [Function: IncomingMessage],
      [Symbol(ServerResponse)]: [Function: ServerResponse],
      [Symbol(kCapture)]: false,
      [Symbol(async_id_symbol)]: 14
    },
    timeout: 360000,
    parser: null,
    addListener: [Function: socketListenerWrap],
    prependListener: [Function: socketListenerWrap],
    _paused: false,
    _httpMessage: null,
    [Symbol(async_id_symbol)]: 23,
    [Symbol(kHandle)]: null,
    [Symbol(kSetNoDelay)]: false,
    [Symbol(lastWriteQueueSize)]: 0,
    [Symbol(timeout)]: Timeout {
      _idleTimeout: -1,
      _idlePrev: null,
      _idleNext: null,
      _idleStart: 454,
      _onTimeout: null,
      _timerArgs: undefined,
      _repeat: null,
      _destroyed: true,
      [Symbol(refed)]: false,
      [Symbol(kHasPrimitive)]: false,
      [Symbol(asyncId)]: 24,
      [Symbol(triggerId)]: 23
    },
    [Symbol(kBuffer)]: null,
    [Symbol(kBufferCb)]: null,
    [Symbol(kBufferGen)]: null,
    [Symbol(kCapture)]: false,
    [Symbol(kBytesRead)]: 1574,
    [Symbol(kBytesWritten)]: 94,
    [Symbol(RequestTimeout)]: undefined
  },
  httpVersionMajor: 1,
  httpVersionMinor: 1,
  httpVersion: '1.1',
  complete: true,
  headers: {
    host: 'otheve.beacon.qq.com',
    'sec-ch-ua': '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"',
    accept: 'application/json, text/plain, */*',
    'content-type': 'application/json;charset=utf-8',
    dnt: '1',
    'sec-ch-ua-mobile': '?0',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
    'sec-ch-ua-platform': '"macOS"',
    origin: 'https://yobang.tencentmusic.com',
    'sec-fetch-site': 'cross-site',
    'sec-fetch-mode': 'cors',
    'sec-fetch-dest': 'empty',
    referer: 'https://yobang.tencentmusic.com/',
    'accept-encoding': 'gzip',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
    'x-whistle-req-id': '1667703724025-634',
    'x-whistle-full-url': 'https%3A%2F%2Fotheve.beacon.qq.com%2Fanalytics%2Fv2_upload%3Fappkey%3D0WEB04LNRZ4FG0JE',
    'x-forwarded-for': '127.0.0.1',
    'x-whistle-client-port': '62038',
    'x-whistle-rule-url': 'data-checker%3A%2F%2F%7Bscript.js%7D',
    'x-whistle-rule-value': "function%20fields(reqBody)%20%7B%0A%20%20return%20%7B%0A%20%20%20%20eventCode%3AreqBody.events%5B0%5D.eventCode%2C%0A%20%20%20%20pageId%3A%20reqBody.events%5B0%5D.mapValue.pageId%2C%0A%20%20%20%20'%E4%B8%9A%E5%8A%A1'%3A%20reqBody.events%5B0%5D.mapValue.bizId%2C%0A%20%20%7D%0A%7D",
    'x-whistle-method': 'POST',
    connection: 'close'
  },
  rawHeaders: [
    'host',
    'otheve.beacon.qq.com',
    'sec-ch-ua',
    '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"',
    'accept',
    'application/json, text/plain, */*',
    'content-type',
    'application/json;charset=utf-8',
    'dnt',
    '1',
    'sec-ch-ua-mobile',
    '?0',
    'user-agent',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
    'sec-ch-ua-platform',
    '"macOS"',
    'origin',
    'https://yobang.tencentmusic.com',
    'sec-fetch-site',
    'cross-site',
    'sec-fetch-mode',
    'cors',
    'sec-fetch-dest',
    'empty',
    'referer',
    'https://yobang.tencentmusic.com/',
    'accept-encoding',
    'gzip',
    'accept-language',
    'zh-CN,zh;q=0.9,en;q=0.8',
    'x-whistle-req-id',
    '1667703724025-634',
    'x-whistle-full-url',
    'https%3A%2F%2Fotheve.beacon.qq.com%2Fanalytics%2Fv2_upload%3Fappkey%3D0WEB04LNRZ4FG0JE',
    'x-forwarded-for',
    '127.0.0.1',
    'x-whistle-client-port',
    '62038',
    'x-whistle-from-tunnel-req-1667701779234-44842-3418',
    '1',
    'x-whistle-remote-address-1667701779234-44842-3418',
    '127.0.0.1',
    'x-whistle-remote-port-1667701779234-44842-3418',
    '62038',
    'x-whistle-rule-url',
    'data-checker%3A%2F%2F%7Bscript.js%7D',
    'x-whistle-rule-value',
    "function%20fields(reqBody)%20%7B%0A%20%20return%20%7B%0A%20%20%20%20eventCode%3AreqBody.events%5B0%5D.eventCode%2C%0A%20%20%20%20pageId%3A%20reqBody.events%5B0%5D.mapValue.pageId%2C%0A%20%20%20%20'%E4%B8%9A%E5%8A%A1'%3A%20reqBody.events%5B0%5D.mapValue.bizId%2C%0A%20%20%7D%0A%7D",
    'x-whistle-raw-pattern_',
    '1%2C%5E**%2Fanalytics%2Fv2_upload***',
    'x-whistle-method',
    'POST',
    'x-whistle-plugin-hook-name_',
    'req-stats-1667701779234-44842-3418',
    'Connection',
    'close'
  ],
  trailers: {},
  rawTrailers: [],
  aborted: false,
  upgrade: false,
  url: '/analytics/v2_upload?appkey=0WEB04LNRZ4FG0JE',
  method: 'GET',
  statusCode: null,
  statusMessage: null,
  client: Socket {
    connecting: false,
    _hadError: false,
    _parent: null,
    _host: null,
    _readableState: ReadableState {
      objectMode: false,
      highWaterMark: 16384,
      buffer: BufferList { head: null, tail: null, length: 0 },
      length: 0,
      pipes: [],
      flowing: true,
      ended: false,
      endEmitted: false,
      reading: true,
      sync: false,
      needReadable: true,
      emittedReadable: false,
      readableListening: false,
      resumeScheduled: false,
      errorEmitted: false,
      emitClose: false,
      autoDestroy: false,
      destroyed: true,
      errored: null,
      closed: true,
      closeEmitted: true,
      defaultEncoding: 'utf8',
      awaitDrainWriters: null,
      multiAwaitDrain: false,
      readingMore: false,
      dataEmitted: false,
      decoder: null,
      encoding: null,
      [Symbol(kPaused)]: false
    },
    _events: [Object: null prototype] {
      error: [Array],
      end: [Array],
      timeout: [Function: socketOnTimeout],
      data: [Function: bound socketOnData],
      close: [Function: bound socketOnClose],
      drain: [Function: bound socketOnDrain],
      resume: [Function: onSocketResume],
      pause: [Function: onSocketPause]
    },
    _eventsCount: 8,
    _maxListeners: undefined,
    _writableState: WritableState {
      objectMode: false,
      highWaterMark: 16384,
      finalCalled: true,
      needDrain: false,
      ending: true,
      ended: true,
      finished: true,
      destroyed: true,
      decodeStrings: false,
      defaultEncoding: 'utf8',
      length: 0,
      writing: false,
      corked: 0,
      sync: false,
      bufferProcessing: false,
      onwrite: [Function: bound onwrite],
      writecb: null,
      writelen: 0,
      afterWriteTickInfo: null,
      buffered: [],
      bufferedIndex: 0,
      allBuffers: true,
      allNoop: true,
      pendingcb: 0,
      prefinished: true,
      errorEmitted: false,
      emitClose: false,
      autoDestroy: false,
      errored: null,
      closed: true,
      closeEmitted: false
    },
    allowHalfOpen: true,
    on: [Function: socketListenerWrap],
    _sockname: null,
    _pendingData: null,
    _pendingEncoding: '',
    server: Server {
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      _events: [Object: null prototype],
      _eventsCount: 4,
      _maxListeners: undefined,
      _connections: 0,
      _handle: [TCP],
      _usingWorkers: false,
      _workers: [],
      _unref: false,
      allowHalfOpen: true,
      pauseOnConnect: false,
      httpAllowHalfOpen: false,
      timeout: 360000,
      keepAliveTimeout: 5000,
      maxHeadersCount: null,
      headersTimeout: 60000,
      requestTimeout: 0,
      _connectionKey: '4:127.0.0.1:40501',
      [Symbol(IncomingMessage)]: [Function: IncomingMessage],
      [Symbol(ServerResponse)]: [Function: ServerResponse],
      [Symbol(kCapture)]: false,
      [Symbol(async_id_symbol)]: 14
    },
    _server: Server {
      maxHeaderSize: undefined,
      insecureHTTPParser: undefined,
      _events: [Object: null prototype],
      _eventsCount: 4,
      _maxListeners: undefined,
      _connections: 0,
      _handle: [TCP],
      _usingWorkers: false,
      _workers: [],
      _unref: false,
      allowHalfOpen: true,
      pauseOnConnect: false,
      httpAllowHalfOpen: false,
      timeout: 360000,
      keepAliveTimeout: 5000,
      maxHeadersCount: null,
      headersTimeout: 60000,
      requestTimeout: 0,
      _connectionKey: '4:127.0.0.1:40501',
      [Symbol(IncomingMessage)]: [Function: IncomingMessage],
      [Symbol(ServerResponse)]: [Function: ServerResponse],
      [Symbol(kCapture)]: false,
      [Symbol(async_id_symbol)]: 14
    },
    timeout: 360000,
    parser: null,
    addListener: [Function: socketListenerWrap],
    prependListener: [Function: socketListenerWrap],
    _paused: false,
    _httpMessage: null,
    [Symbol(async_id_symbol)]: 23,
    [Symbol(kHandle)]: null,
    [Symbol(kSetNoDelay)]: false,
    [Symbol(lastWriteQueueSize)]: 0,
    [Symbol(timeout)]: Timeout {
      _idleTimeout: -1,
      _idlePrev: null,
      _idleNext: null,
      _idleStart: 454,
      _onTimeout: null,
      _timerArgs: undefined,
      _repeat: null,
      _destroyed: true,
      [Symbol(refed)]: false,
      [Symbol(kHasPrimitive)]: false,
      [Symbol(asyncId)]: 24,
      [Symbol(triggerId)]: 23
    },
    [Symbol(kBuffer)]: null,
    [Symbol(kBufferCb)]: null,
    [Symbol(kBufferGen)]: null,
    [Symbol(kCapture)]: false,
    [Symbol(kBytesRead)]: 1574,
    [Symbol(kBytesWritten)]: 94,
    [Symbol(RequestTimeout)]: undefined
  },
  _consuming: false,
  _dumped: true,
  unsafe_getReqSession: [Function (anonymous)],
  getReqSession: [Function (anonymous)],
  unsafe_getSession: [Function (anonymous)],
  getSession: [Function (anonymous)],
  unsafe_getFrames: [Function (anonymous)],
  getFrames: [Function (anonymous)],
  originalReq: {
    clientIp: '127.0.0.1',
    id: '1667703724025-634',
    isH2: false,
    isHttp2: false,
    existsCustomCert: false,
    isUIRequest: false,
    enableCapture: false,
    isFromPlugin: false,
    ruleValue: 'function fields(reqBody) {\n' +
      '  return {\n' +
      '    eventCode:reqBody.events[0].eventCode,\n' +
      '    pageId: reqBody.events[0].mapValue.pageId,\n' +
      "    '业务': reqBody.events[0].mapValue.bizId,\n" +
      '  }\n' +
      '}',
    ruleUrl: 'data-checker://{script.js}',
    pipeValue: '',
    sniValue: '',
    hostValue: '',
    extraUrl: '',
    fullUrl: 'https://otheve.beacon.qq.com/analytics/v2_upload?appkey=0WEB04LNRZ4FG0JE',
    url: 'https://otheve.beacon.qq.com/analytics/v2_upload?appkey=0WEB04LNRZ4FG0JE',
    isHttps: true,
    remoteAddress: '127.0.0.1',
    remotePort: 62038,
    fromTunnel: true,
    isRegExp: true,
    isRexExp: true,
    pattern: '^**/analytics/v2_upload***',
    fromComposer: false,
    serverName: '',
    servername: '',
    certCacheName: '',
    certCacheTime: 0,
    isSNI: true,
    useSNI: true,
    commonName: '',
    realUrl: 'https://otheve.beacon.qq.com/analytics/v2_upload?appkey=0WEB04LNRZ4FG0JE',
    relativeUrl: '',
    method: 'POST',
    clientPort: '62038',
    globalValue: '',
    proxyValue: '',
    pacValue: '',
    pluginVars: [],
    globalPluginVars: [],
    headers: {
      host: 'otheve.beacon.qq.com',
      'sec-ch-ua': '"Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"',
      accept: 'application/json, text/plain, */*',
      'content-type': 'application/json;charset=utf-8',
      dnt: '1',
      'sec-ch-ua-mobile': '?0',
      'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
      'sec-ch-ua-platform': '"macOS"',
      origin: 'https://yobang.tencentmusic.com',
      'sec-fetch-site': 'cross-site',
      'sec-fetch-mode': 'cors',
      'sec-fetch-dest': 'empty',
      referer: 'https://yobang.tencentmusic.com/',
      'accept-encoding': 'gzip',
      'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
      'x-forwarded-for': '127.0.0.1',
      connection: 'close'
    }
  },
  originalRes: { serverIp: '', statusCode: '' },
  localStorage: Storage {
    recycleBin: RecycleBin {
      _dir: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/.recycle_bin',
      _list: [],
      _map: {}
    },
    _disabled: false,
    _backupDir: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/.backup',
    _files: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/files',
    _properties: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/properties',
    _backupProps: '/Users/aidenmo/.WhistleAppData/.whistle/.plugins/whistle.data-checker/.backup/properties',
    _cache: { maxIndex: -1, files: {}, properties: [Object] }
  },
  Storage: [Function: Storage],
  clientIp: '127.0.0.1',
  sessionStorage: {
    set: [Function: set],
    get: [Function: get],
    remove: [Function: remove]
  },
  isUIRequest: false,
  fullUrl: 'https://otheve.beacon.qq.com/analytics/v2_upload?appkey=0WEB04LNRZ4FG0JE',
  isHttps: true,
  fromTunnel: true,
  fromComposer: false,
  isSNI: true,
  useSNI: true,
  [Symbol(kCapture)]: false,
  [Symbol(RequestTimeout)]: undefined,
  [Symbol()]: '1667703724025-634',
  [Symbol()]: {
    useH2: false,
    startTime: 1667703724282,
    id: '1667703724025-634',
    url: 'https://otheve.beacon.qq.com/analytics/v2_upload?appkey=0WEB04LNRZ4FG0JE',
    req: {
      method: 'POST',
      httpVersion: '1.1',
      ip: '127.0.0.1',
      port: '62038',
      rawHeaderNames: [Object],
      headers: [Object],
      size: 837,
      body: [Getter],
      base64: '#body#eyJhcHBWZXJzaW9uIjoiODMxOTZiMWUiLCJzZGtJZCI6ImpzIiwic2RrVmVyc2lvbiI6IjQuNS4xMC13ZWIiLCJtYWluQXBwS2V5IjoiMFdFQjA0TE5SWjRGRzBKRSIsInBsYXRmb3JtSWQiOjMsImNvbW1vbiI6eyJBMiI6IjNjNjM1OWU3OGNlMzlkOGIxM2Q1MTk2ZTM4OWNkN2RmIiwiQTgiOiIiLCJBMTIiOiJ6aC1DTiIsIkExNyI6IjE3OTIqMTEyMCoyIiwiQTIzIjoid2ViIiwiQTUwIjoiIiwiQTc2IjoiMFdFQjA0TE5SWjRGRzBKRV8xNjY3NzAzNzIzNTA4IiwiQTEwMSI6Ik1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzcpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xMDcuMC4wLjAgU2FmYXJpLzUzNy4zNiIsIkExMDIiOiJodHRwczovL3lvYmFuZy50ZW5jZW50bXVzaWMuY29tL2NoYXJ0L3VuaS1jaGFydC9yYW5rTGlzdC8iLCJBMTA0IjoiaHR0cHM6Ly90bWVzaXQudGVuY2VudG11c2ljLmNvbS8iLCJBMTE5IjoiIiwiQTE1MyI6IiJ9LCJldmVudHMiOlt7ImV2ZW50Q29kZSI6InZpZXciLCJldmVudFRpbWUiOiIxNjY3NzAzNzIzNjE5IiwibWFwVmFsdWUiOnsiYml6SWQiOiJ1bmkiLCJwYWdlSWQiOiJ1bmlfcmFua19saXN0X2R5bmFtaWMiLCJzb3VyY2UiOiIiLCJlbnYiOiJwcm8iLCJiaXpOYW1lIjoi55Sx5L2g5qacIiwicGFnZU5hbWUiOiLnlLHkvaDmppzlrp7ml7bmppwiLCJibG9ja05hbWUiOiIiLCJibG9ja0lkIjoiIiwiZGF0YUlkIjoiIiwiYWNjb3VudElkIjoiIiwiQTk5IjoiWSIsIkExMDAiOiI2ODkiLCJBNzIiOiI0LjUuMTAtd2ViIiwiQTg4IjoiMTY2MTA3MjYxNjc2NSJ9fV19'
    },
    res: { ip: '109.244.236.105', port: 443 },
    rules: { rule: [Object], _pluginRule: [Object] },
    rulesHeaders: {},
    version: '2.9.33',
    nodeVersion: '14.18.0',
    dnsTime: 1667703724282,
    requestTime: 1667703724648
  }
}