{
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]
}
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
}
}