js逆向之京东原型链补环境h5st

京东h5st和x-api-eid-token逆向分析 e是之前的对象做了处理,body已经知道是sha256后结果,中间一串固定,最后是一个当前时间戳。接下来就是模拟生成算法了,这里我采用了纯算法,完全没必要扣js,毕竟一扣就是好几万行代码。经过测试发现对其检测并不是很严格,重点还是这个h5st这个参数,废话不多说直接来分析吧。这里我们找他的加密方法,发现他是由这个r方法进行加密这个h5st这个参数的。此时发现h5st已经生成了,向上跟栈查看哪里调用了该函数。首先先抓个包,分析他的参数,发现有一个h5st这样的参数。r是由这几个参数生成的。 阅读详情
AI摘要

本文详细分析了京东H5ST参数的生成机制,通过定位关键对象如window.PSign和new window.ParamsSign,结合JavaScript逆向与环境补全技术,揭示了如何从请求载荷中还原h5st签名。核心在于扣取浏览器环境中执行的混淆代码,并模拟调用过程以实现自动化生成。

所有的逆向都是先分析,所以我们先分析,哈哈

先看一下成品

1,明确需要逆向的参数,以及所在位置

2,定位逆向参数的位置,通过关键词搜索

3,经过这层分析,h5st是由请求载荷里面的其他参数生成的,哈哈,这个相信大家还是能分析出来的

4,调用类里面的方法

5,现在需要定位到window.PSign

6,接着上一步分析

7,现在需要找到new window.ParamsSign,思路是一环扣一环的,兄弟们

8,明确逆向的思路,就是通过补环境,我们先激活逆向值接口,把这个new的代码扣下来,然后有一个小细节就是里面的参数也要带的

9,从网页上扣下代码,然后调用混淆文件的函数,得到h5st

10,这个是需要传入的参数

11,

window = globalThis;  // 这里挂载的小window需要去进行原型绑定
window.window = window.top = window.self = window;
!(() => {
    const origin_log = console.log;
    ;
    // const origin_log = function () {};
    logToConsole = function () {
        return origin_log(...arguments)
        // return
    }
})();

watch = function (obj, name) {
    return new Proxy(obj, {
        get(target, p, receiver) {
            // 过滤没用的信息,不进行打印
            if (name)
                if (p === "Math" || p === "Symbol" || p === "Proxy" || p === "Promise" || p === "Array" || p === "isNaN" || p === "encodeURI" || p === "Uint8Array" || p.toString().indexOf("Symbol(") != -1 || p === "_element") {
                    var val = Reflect.get(...arguments);
                    return val
                } else {
                    var val = Reflect.get(...arguments);
                    const lst = []
                    for (let i = 0; i < p.length; i++) {
                        lst.push(p.charCodeAt(i))
                    }
                    if (typeof val === 'function') {
                        logToConsole(`取值: ${name}.${p} => function`);
                    } else {
                        logToConsole(`取值: ${name}.${p} =>`, val);
                    }

                    return val
                }
        },
        set(target, p, value, receiver) {
            var val = Reflect.set(...arguments)
            if (typeof value === 'function') {
                logToConsole(`设置值:${name}.${p} => function`,);
            } else {
                logToConsole(`设置值:${name}.${p} =>`, value);
                if (name === '环境数组' && p === '4') {
                    debugger
                }
            }
            return val
        },
        has(target, key) {
            logToConsole(`检查属性存在性: ${name}.${key.toString()}`);
            return key in target;
        },
        ownKeys(target) {
            logToConsole(`ownKeys检测: ${name}`);
            if (name === 'span_domtokenlist') {
                debugger
            }
            if (name === 'window') {
                const keys = [
                    "Object",
                    "Function",
                    "Array",
                    "Number",
                    "parseFloat",
                    "parseInt",
                    "Infinity",
                    "NaN",
                    "undefined",
                    "Boolean",
                    "String",
                    "Symbol",
                    "Date",
                    "Promise",
                    "RegExp",
                    "Error",
                    "AggregateError",
                    "EvalError",
                    "RangeError",
                    "ReferenceError",
                    "SyntaxError",
                    "TypeError",
                    "URIError",
                    "globalThis",
                    "JSON",
                    "Math",
                    "Intl",
                    "ArrayBuffer",
                    "Atomics",
                    "Uint8Array",
                    "Int8Array",
                    "Uint16Array",
                    "Int16Array",
                    "Uint32Array",
                    "Int32Array",
                    "BigUint64Array",
                    "BigInt64Array",
                    "Uint8ClampedArray",
                    "Float32Array",
                    "Float64Array",
                    "DataView",
                    "Map",
                    "BigInt",
                    "Set",
                    "WeakMap",
                    "WeakSet",
                    "Proxy",
                    "Reflect",
                    "FinalizationRegistry",
                    "WeakRef",
                    "decodeURI",
                    "decodeURIComponent",
                    "encodeURI",
                    "encodeURIComponent",
                    "escape",
                    "unescape",
                    "eval",
                    "isFinite",
                    "isNaN",
                    "console",
                    "Option",
                    "Image",
                    "Audio",
                    "webkitURL",
                    "webkitRTCPeerConnection",
                    "webkitMediaStream",
                    "WebKitMutationObserver",
                    "WebKitCSSMatrix",
                    "XSLTProcessor",
                    "XPathResult",
                    "XPathExpression",
                    "XPathEvaluator",
                    "XMLSerializer",
                    "XMLHttpRequestUpload",
                    "XMLHttpRequestEventTarget",
                    "XMLHttpRequest",
                    "XMLDocument",
                    "WritableStreamDefaultWriter",
                    "WritableStreamDefaultController",
                    "WritableStream",
                    "Worker",
                    "WindowControlsOverlayGeometryChangeEvent",
                    "WindowControlsOverlay",
                    "Window",
                    "WheelEvent",
                    "WebSocket",
                    "WebGLVertexArrayObject",
                    "WebGLUniformLocation",
                    "WebGLTransformFeedback",
                    "WebGLTexture",
                    "WebGLSync",
                    "WebGLShaderPrecisionFormat",
                    "WebGLShader",
                    "WebGLSampler",
                    "WebGLRenderingContext",
                    "WebGLRenderbuffer",
                    "WebGLQuery",
                    "WebGLProgram",
                    "WebGLObject",
                    "WebGLFramebuffer",
                    "WebGLContextEvent",
                    "WebGLBuffer",
                    "WebGLActiveInfo",
                    "WebGL2RenderingContext",
                    "WaveShaperNode",
                    "VisualViewport",
                    "VisibilityStateEntry",
                    "VirtualKeyboardGeometryChangeEvent",
                    "ViewTransitionTypeSet",
                    "ViewTransition",
                    "ViewTimeline",
                    "VideoPlaybackQuality",
                    "VideoFrame",
                    "VideoColorSpace",
                    "ValidityState",
                    "VTTCue",
                    "UserActivation",
                    "URLSearchParams",
                    "URLPattern",
                    "URL",
                    "UIEvent",
                    "TrustedTypePolicyFactory",
                    "TrustedTypePolicy",
                    "TrustedScriptURL",
                    "TrustedScript",
                    "TrustedHTML",
                    "TreeWalker",
                    "TransitionEvent",
                    "TransformStreamDefaultController",
                    "TransformStream",
                    "TrackEvent",
                    "TouchList",
                    "TouchEvent",
                    "Touch",
                    "ToggleEvent",
                    "TimeRanges",
                    "TextUpdateEvent",
                    "TextTrackList",
                    "TextTrackCueList",
                    "TextTrackCue",
                    "TextTrack",
                    "TextMetrics",
                    "TextFormatUpdateEvent",
                    "TextFormat",
                    "TextEvent",
                    "TextEncoderStream",
                    "TextEncoder",
                    "TextDecoderStream",
                    "TextDecoder",
                    "Text",
                    "TaskSignal",
                    "TaskPriorityChangeEvent",
                    "TaskController",
                    "TaskAttributionTiming",
                    "SyncManager",
                    "SubmitEvent",
                    "StyleSheetList",
                    "StyleSheet",
                    "StylePropertyMapReadOnly",
                    "StylePropertyMap",
                    "StorageEvent",
                    "Storage",
                    "StereoPannerNode",
                    "StaticRange",
                    "SourceBufferList",
                    "SourceBuffer",
                    "ShadowRoot",
                    "Selection",
                    "SecurityPolicyViolationEvent",
                    "ScrollTimeline",
                    "ScriptProcessorNode",
                    "ScreenOrientation",
                    "Screen",
                    "Scheduling",
                    "Scheduler",
                    "SVGViewElement",
                    "SVGUseElement",
                    "SVGUnitTypes",
                    "SVGTransformList",
                    "SVGTransform",
                    "SVGTitleElement",
                    "SVGTextPositioningElement",
                    "SVGTextPathElement",
                    "SVGTextElement",
                    "SVGTextContentElement",
                    "SVGTSpanElement",
                    "SVGSymbolElement",
                    "SVGSwitchElement",
                    "SVGStyleElement",
                    "SVGStringList",
                    "SVGStopElement",
                    "SVGSetElement",
                    "SVGScriptElement",
                    "SVGSVGElement",
                    "SVGRectElement",
                    "SVGRect",
                    "SVGRadialGradientElement",
                    "SVGPreserveAspectRatio",
                    "SVGPolylineElement",
                    "SVGPolygonElement",
                    "SVGPointList",
                    "SVGPoint",
                    "SVGPatternElement",
                    "SVGPathElement",
                    "SVGNumberList",
                    "SVGNumber",
                    "SVGMetadataElement",
                    "SVGMatrix",
                    "SVGMaskElement",
                    "SVGMarkerElement",
                    "SVGMPathElement",
                    "SVGLinearGradientElement",
                    "SVGLineElement",
                    "SVGLengthList",
                    "SVGLength",
                    "SVGImageElement",
                    "SVGGraphicsElement",
                    "SVGGradientElement",
                    "SVGGeometryElement",
                    "SVGGElement",
                    "SVGForeignObjectElement",
                    "SVGFilterElement",
                    "SVGFETurbulenceElement",
                    "SVGFETileElement",
                    "SVGFESpotLightElement",
                    "SVGFESpecularLightingElement",
                    "SVGFEPointLightElement",
                    "SVGFEOffsetElement",
                    "SVGFEMorphologyElement",
                    "SVGFEMergeNodeElement",
                    "SVGFEMergeElement",
                    "SVGFEImageElement",
                    "SVGFEGaussianBlurElement",
                    "SVGFEFuncRElement",
                    "SVGFEFuncGElement",
                    "SVGFEFuncBElement",
                    "SVGFEFuncAElement",
                    "SVGFEFloodElement",
                    "SVGFEDropShadowElement",
                    "SVGFEDistantLightElement",
                    "SVGFEDisplacementMapElement",
                    "SVGFEDiffuseLightingElement",
                    "SVGFEConvolveMatrixElement",
                    "SVGFECompositeElement",
                    "SVGFEComponentTransferElement",
                    "SVGFEColorMatrixElement",
                    "SVGFEBlendElement",
                    "SVGEllipseElement",
                    "SVGElement",
                    "SVGDescElement",
                    "SVGDefsElement",
                    "SVGComponentTransferFunctionElement",
                    "SVGClipPathElement",
                    "SVGCircleElement",
                    "SVGAnimationElement",
                    "SVGAnimatedTransformList",
                    "SVGAnimatedString",
                    "SVGAnimatedRect",
                    "SVGAnimatedPreserveAspectRatio",
                    "SVGAnimatedNumberList",
                    "SVGAnimatedNumber",
                    "SVGAnimatedLengthList",
                    "SVGAnimatedLength",
                    "SVGAnimatedInteger",
                    "SVGAnimatedEnumeration",
                    "SVGAnimatedBoolean",
                    "SVGAnimatedAngle",
                    "SVGAnimateTransformElement",
                    "SVGAnimateMotionElement",
                    "SVGAnimateElement",
                    "SVGAngle",
                    "SVGAElement",
                    "Response",
                    "ResizeObserverSize",
                    "ResizeObserverEntry",
                    "ResizeObserver",
                    "Request",
                    "ReportingObserver",
                    "ReportBody",
                    "ReadableStreamDefaultReader",
                    "ReadableStreamDefaultController",
                    "ReadableStreamBYOBRequest",
                    "ReadableStreamBYOBReader",
                    "ReadableStream",
                    "ReadableByteStreamController",
                    "Range",
                    "RadioNodeList",
                    "RTCTrackEvent",
                    "RTCStatsReport",
                    "RTCSessionDescription",
                    "RTCSctpTransport",
                    "RTCRtpTransceiver",
                    "RTCRtpSender",
                    "RTCRtpReceiver",
                    "RTCPeerConnectionIceEvent",
                    "RTCPeerConnectionIceErrorEvent",
                    "RTCPeerConnection",
                    "RTCIceTransport",
                    "RTCIceCandidate",
                    "RTCErrorEvent",
                    "RTCError",
                    "RTCEncodedVideoFrame",
                    "RTCEncodedAudioFrame",
                    "RTCDtlsTransport",
                    "RTCDataChannelEvent",
                    "RTCDTMFToneChangeEvent",
                    "RTCDTMFSender",
                    "RTCCertificate",
                    "PromiseRejectionEvent",
                    "ProgressEvent",
                    "Profiler",
                    "ProcessingInstruction",
                    "PopStateEvent",
                    "PointerEvent",
                    "PluginArray",
                    "Plugin",
                    "PictureInPictureWindow",
                    "PictureInPictureEvent",
                    "PeriodicWave",
                    "PerformanceTiming",
                    "PerformanceServerTiming",
                    "PerformanceScriptTiming",
                    "PerformanceResourceTiming",
                    "PerformancePaintTiming",
                    "PerformanceObserverEntryList",
                    "PerformanceObserver",
                    "PerformanceNavigationTiming",
                    "PerformanceNavigation",
                    "PerformanceMeasure",
                    "PerformanceMark",
                    "PerformanceLongTaskTiming",
                    "PerformanceLongAnimationFrameTiming",
                    "PerformanceEventTiming",
                    "PerformanceEntry",
                    "PerformanceElementTiming",
                    "Performance",
                    "Path2D",
                    "PannerNode",
                    "PageTransitionEvent",
                    "OverconstrainedError",
                    "OscillatorNode",
                    "OffscreenCanvasRenderingContext2D",
                    "OffscreenCanvas",
                    "OfflineAudioContext",
                    "OfflineAudioCompletionEvent",
                    "NodeList",
                    "NodeIterator",
                    "NodeFilter",
                    "Node",
                    "NetworkInformation",
                    "NavigatorUAData",
                    "Navigator",
                    "NavigationTransition",
                    "NavigationHistoryEntry",
                    "NavigationDestination",
                    "NavigationCurrentEntryChangeEvent",
                    "Navigation",
                    "NavigateEvent",
                    "NamedNodeMap",
                    "MutationRecord",
                    "MutationObserver",
                    "MouseEvent",
                    "MimeTypeArray",
                    "MimeType",
                    "MessagePort",
                    "MessageEvent",
                    "MessageChannel",
                    "MediaStreamTrackVideoStats",
                    "MediaStreamTrackProcessor",
                    "MediaStreamTrackGenerator",
                    "MediaStreamTrackEvent",
                    "MediaStreamTrackAudioStats",
                    "MediaStreamTrack",
                    "MediaStreamEvent",
                    "MediaStreamAudioSourceNode",
                    "MediaStreamAudioDestinationNode",
                    "MediaStream",
                    "MediaSourceHandle",
                    "MediaSource",
                    "MediaRecorder",
                    "MediaQueryListEvent",
                    "MediaQueryList",
                    "MediaList",
                    "MediaError",
                    "MediaEncryptedEvent",
                    "MediaElementAudioSourceNode",
                    "MediaCapabilities",
                    "MathMLElement",
                    "Location",
                    "LayoutShiftAttribution",
                    "LayoutShift",
                    "LargestContentfulPaint",
                    "KeyframeEffect",
                    "KeyboardEvent",
                    "IntersectionObserverEntry",
                    "IntersectionObserver",
                    "InputEvent",
                    "InputDeviceInfo",
                    "InputDeviceCapabilities",
                    "Ink",
                    "ImageData",
                    "ImageCapture",
                    "ImageBitmapRenderingContext",
                    "ImageBitmap",
                    "IdleDeadline",
                    "IIRFilterNode",
                    "IDBVersionChangeEvent",
                    "IDBTransaction",
                    "IDBRequest",
                    "IDBOpenDBRequest",
                    "IDBObjectStore",
                    "IDBKeyRange",
                    "IDBIndex",
                    "IDBFactory",
                    "IDBDatabase",
                    "IDBCursorWithValue",
                    "IDBCursor",
                    "History",
                    "HighlightRegistry",
                    "Highlight",
                    "Headers",
                    "HashChangeEvent",
                    "HTMLVideoElement",
                    "HTMLUnknownElement",
                    "HTMLUListElement",
                    "HTMLTrackElement",
                    "HTMLTitleElement",
                    "HTMLTimeElement",
                    "HTMLTextAreaElement",
                    "HTMLTemplateElement",
                    "HTMLTableSectionElement",
                    "HTMLTableRowElement",
                    "HTMLTableElement",
                    "HTMLTableColElement",
                    "HTMLTableCellElement",
                    "HTMLTableCaptionElement",
                    "HTMLStyleElement",
                    "HTMLSpanElement",
                    "HTMLSourceElement",
                    "HTMLSlotElement",
                    "HTMLSelectElement",
                    "HTMLScriptElement",
                    "HTMLQuoteElement",
                    "HTMLProgressElement",
                    "HTMLPreElement",
                    "HTMLPictureElement",
                    "HTMLParamElement",
                    "HTMLParagraphElement",
                    "HTMLOutputElement",
                    "HTMLOptionsCollection",
                    "HTMLOptionElement",
                    "HTMLOptGroupElement",
                    "HTMLObjectElement",
                    "HTMLOListElement",
                    "HTMLModElement",
                    "HTMLMeterElement",
                    "HTMLMetaElement",
                    "HTMLMenuElement",
                    "HTMLMediaElement",
                    "HTMLMarqueeElement",
                    "HTMLMapElement",
                    "HTMLLinkElement",
                    "HTMLLegendElement",
                    "HTMLLabelElement",
                    "HTMLLIElement",
                    "HTMLInputElement",
                    "HTMLImageElement",
                    "HTMLIFrameElement",
                    "HTMLHtmlElement",
                    "HTMLHeadingElement",
                    "HTMLHeadElement",
                    "HTMLHRElement",
                    "HTMLFrameSetElement",
                    "HTMLFrameElement",
                    "HTMLFormElement",
                    "HTMLFormControlsCollection",
                    "HTMLFontElement",
                    "HTMLFieldSetElement",
                    "HTMLEmbedElement",
                    "HTMLElement",
                    "HTMLDocument",
                    "HTMLDivElement",
                    "HTMLDirectoryElement",
                    "HTMLDialogElement",
                    "HTMLDetailsElement",
                    "HTMLDataListElement",
                    "HTMLDataElement",
                    "HTMLDListElement",
                    "HTMLCollection",
                    "HTMLCanvasElement",
                    "HTMLButtonElement",
                    "HTMLBodyElement",
                    "HTMLBaseElement",
                    "HTMLBRElement",
                    "HTMLAudioElement",
                    "HTMLAreaElement",
                    "HTMLAnchorElement",
                    "HTMLAllCollection",
                    "GeolocationPositionError",
                    "GeolocationPosition",
                    "GeolocationCoordinates",
                    "Geolocation",
                    "GamepadHapticActuator",
                    "GamepadEvent",
                    "GamepadButton",
                    "Gamepad",
                    "GainNode",
                    "FormDataEvent",
                    "FormData",
                    "FontFaceSetLoadEvent",
                    "FontFace",
                    "FocusEvent",
                    "FileReader",
                    "FileList",
                    "File",
                    "FeaturePolicy",
                    "External",
                    "EventTarget",
                    "EventSource",
                    "EventCounts",
                    "Event",
                    "ErrorEvent",
                    "EncodedVideoChunk",
                    "EncodedAudioChunk",
                    "ElementInternals",
                    "Element",
                    "EditContext",
                    "DynamicsCompressorNode",
                    "DragEvent",
                    "DocumentType",
                    "DocumentTimeline",
                    "DocumentFragment",
                    "Document",
                    "DelegatedInkTrailPresenter",
                    "DelayNode",
                    "DecompressionStream",
                    "DataTransferItemList",
                    "DataTransferItem",
                    "DataTransfer",
                    "DOMTokenList",
                    "DOMStringMap",
                    "DOMStringList",
                    "DOMRectReadOnly",
                    "DOMRectList",
                    "DOMRect",
                    "DOMQuad",
                    "DOMPointReadOnly",
                    "DOMPoint",
                    "DOMParser",
                    "DOMMatrixReadOnly",
                    "DOMMatrix",
                    "DOMImplementation",
                    "DOMException",
                    "DOMError",
                    "CustomStateSet",
                    "CustomEvent",
                    "CustomElementRegistry",
                    "Crypto",
                    "CountQueuingStrategy",
                    "ConvolverNode",
                    "ContentVisibilityAutoStateChangeEvent",
                    "ConstantSourceNode",
                    "CompressionStream",
                    "CompositionEvent",
                    "Comment",
                    "CloseWatcher",
                    "CloseEvent",
                    "ClipboardEvent",
                    "CharacterData",
                    "CharacterBoundsUpdateEvent",
                    "ChannelSplitterNode",
                    "ChannelMergerNode",
                    "CanvasRenderingContext2D",
                    "CanvasPattern",
                    "CanvasGradient",
                    "CanvasCaptureMediaStreamTrack",
                    "CSSVariableReferenceValue",
                    "CSSUnparsedValue",
                    "CSSUnitValue",
                    "CSSTranslate",
                    "CSSTransition",
                    "CSSTransformValue",
                    "CSSTransformComponent",
                    "CSSSupportsRule",
                    "CSSStyleValue",
                    "CSSStyleSheet",
                    "CSSStyleRule",
                    "CSSStyleDeclaration",
                    "CSSStartingStyleRule",
                    "CSSSkewY",
                    "CSSSkewX",
                    "CSSSkew",
                    "CSSScopeRule",
                    "CSSScale",
                    "CSSRuleList",
                    "CSSRule",
                    "CSSRotate",
                    "CSSPropertyRule",
                    "CSSPositionValue",
                    "CSSPositionTryRule",
                    "CSSPositionTryDescriptors",
                    "CSSPerspective",
                    "CSSPageRule",
                    "CSSNumericValue",
                    "CSSNumericArray",
                    "CSSNestedDeclarations",
                    "CSSNamespaceRule",
                    "CSSMediaRule",
                    "CSSMatrixComponent",
                    "CSSMathValue",
                    "CSSMathSum",
                    "CSSMathProduct",
                    "CSSMathNegate",
                    "CSSMathMin",
                    "CSSMathMax",
                    "CSSMathInvert",
                    "CSSMathClamp",
                    "CSSLayerStatementRule",
                    "CSSLayerBlockRule",
                    "CSSKeywordValue",
                    "CSSKeyframesRule",
                    "CSSKeyframeRule",
                    "CSSImportRule",
                    "CSSImageValue",
                    "CSSGroupingRule",
                    "CSSFontPaletteValuesRule",
                    "CSSFontFaceRule",
                    "CSSCounterStyleRule",
                    "CSSContainerRule",
                    "CSSConditionRule",
                    "CSSAnimation",
                    "CSS",
                    "CSPViolationReportBody",
                    "CDATASection",
                    "ByteLengthQueuingStrategy",
                    "BrowserCaptureMediaStreamTrack",
                    "BroadcastChannel",
                    "BlobEvent",
                    "Blob",
                    "BiquadFilterNode",
                    "BeforeUnloadEvent",
                    "BeforeInstallPromptEvent",
                    "BaseAudioContext",
                    "BarProp",
                    "AudioWorkletNode",
                    "AudioSinkInfo",
                    "AudioScheduledSourceNode",
                    "AudioProcessingEvent",
                    "AudioParamMap",
                    "AudioParam",
                    "AudioNode",
                    "AudioListener",
                    "AudioDestinationNode",
                    "AudioData",
                    "AudioContext",
                    "AudioBufferSourceNode",
                    "AudioBuffer",
                    "Attr",
                    "AnimationTimeline",
                    "AnimationPlaybackEvent",
                    "AnimationEvent",
                    "AnimationEffect",
                    "Animation",
                    "AnalyserNode",
                    "AbstractRange",
                    "AbortSignal",
                    "AbortController",
                    "window",
                    "self",
                    "document",
                    "name",
                    "location",
                    "customElements",
                    "history",
                    "navigation",
                    "locationbar",
                    "menubar",
                    "personalbar",
                    "scrollbars",
                    "statusbar",
                    "toolbar",
                    "status",
                    "closed",
                    "frames",
                    "length",
                    "top",
                    "opener",
                    "parent",
                    "frameElement",
                    "navigator",
                    "origin",
                    "external",
                    "screen",
                    "innerWidth",
                    "innerHeight",
                    "scrollX",
                    "pageXOffset",
                    "scrollY",
                    "pageYOffset",
                    "visualViewport",
                    "screenX",
                    "screenY",
                    "outerWidth",
                    "outerHeight",
                    "devicePixelRatio",
                    "event",
                    "clientInformation",
                    "offscreenBuffering",
                    "screenLeft",
                    "screenTop",
                    "styleMedia",
                    "onsearch",
                    "trustedTypes",
                    "performance",
                    "onappinstalled",
                    "onbeforeinstallprompt",
                    "crypto",
                    "indexedDB",
                    "sessionStorage",
                    "localStorage",
                    "onbeforexrselect",
                    "onabort",
                    "onbeforeinput",
                    "onbeforematch",
                    "onbeforetoggle",
                    "onblur",
                    "oncancel",
                    "oncanplay",
                    "oncanplaythrough",
                    "onchange",
                    "onclick",
                    "onclose",
                    "oncontentvisibilityautostatechange",
                    "oncontextlost",
                    "oncontextmenu",
                    "oncontextrestored",
                    "oncuechange",
                    "ondblclick",
                    "ondrag",
                    "ondragend",
                    "ondragenter",
                    "ondragleave",
                    "ondragover",
                    "ondragstart",
                    "ondrop",
                    "ondurationchange",
                    "onemptied",
                    "onended",
                    "onerror",
                    "onfocus",
                    "onformdata",
                    "oninput",
                    "oninvalid",
                    "onkeydown",
                    "onkeypress",
                    "onkeyup",
                    "onload",
                    "onloadeddata",
                    "onloadedmetadata",
                    "onloadstart",
                    "onmousedown",
                    "onmouseenter",
                    "onmouseleave",
                    "onmousemove",
                    "onmouseout",
                    "onmouseover",
                    "onmouseup",
                    "onmousewheel",
                    "onpause",
                    "onplay",
                    "onplaying",
                    "onprogress",
                    "onratechange",
                    "onreset",
                    "onresize",
                    "onscroll",
                    "onsecuritypolicyviolation",
                    "onseeked",
                    "onseeking",
                    "onselect",
                    "onslotchange",
                    "onstalled",
                    "onsubmit",
                    "onsuspend",
                    "ontimeupdate",
                    "ontoggle",
                    "onvolumechange",
                    "onwaiting",
                    "onwebkitanimationend",
                    "onwebkitanimationiteration",
                    "onwebkitanimationstart",
                    "onwebkittransitionend",
                    "onwheel",
                    "onauxclick",
                    "ongotpointercapture",
                    "onlostpointercapture",
                    "onpointerdown",
                    "onpointermove",
                    "onpointerrawupdate",
                    "onpointerup",
                    "onpointercancel",
                    "onpointerover",
                    "onpointerout",
                    "onpointerenter",
                    "onpointerleave",
                    "onselectstart",
                    "onselectionchange",
                    "onanimationend",
                    "onanimationiteration",
                    "onanimationstart",
                    "ontransitionrun",
                    "ontransitionstart",
                    "ontransitionend",
                    "ontransitioncancel",
                    "onafterprint",
                    "onbeforeprint",
                    "onbeforeunload",
                    "onhashchange",
                    "onlanguagechange",
                    "onmessage",
                    "onmessageerror",
                    "onoffline",
                    "ononline",
                    "onpagehide",
                    "onpageshow",
                    "onpopstate",
                    "onrejectionhandled",
                    "onstorage",
                    "onunhandledrejection",
                    "onunload",
                    "isSecureContext",
                    "crossOriginIsolated",
                    "scheduler",
                    "alert",
                    "atob",
                    "blur",
                    "btoa",
                    "cancelAnimationFrame",
                    "cancelIdleCallback",
                    "captureEvents",
                    "clearInterval",
                    "clearTimeout",
                    "close",
                    "confirm",
                    "createImageBitmap",
                    "fetch",
                    "find",
                    "focus",
                    "getComputedStyle",
                    "getSelection",
                    "matchMedia",
                    "moveBy",
                    "moveTo",
                    "open",
                    "postMessage",
                    "print",
                    "prompt",
                    "queueMicrotask",
                    "releaseEvents",
                    "reportError",
                    "requestAnimationFrame",
                    "requestIdleCallback",
                    "resizeBy",
                    "resizeTo",
                    "scroll",
                    "scrollBy",
                    "scrollTo",
                    "setInterval",
                    "setTimeout",
                    "stop",
                    "structuredClone",
                    "webkitCancelAnimationFrame",
                    "webkitRequestAnimationFrame",
                    "Iterator",
                    "chrome",
                    "WebAssembly",
                    "caches",
                    "cookieStore",
                    "ondevicemotion",
                    "ondeviceorientation",
                    "ondeviceorientationabsolute",
                    "launchQueue",
                    "sharedStorage",
                    "documentPictureInPicture",
                    "AICreateMonitor",
                    "AbsoluteOrientationSensor",
                    "Accelerometer",
                    "AudioDecoder",
                    "AudioEncoder",
                    "AudioWorklet",
                    "BatteryManager",
                    "Cache",
                    "CacheStorage",
                    "Clipboard",
                    "ClipboardItem",
                    "CookieChangeEvent",
                    "CookieStore",
                    "CookieStoreManager",
                    "Credential",
                    "CredentialsContainer",
                    "CryptoKey",
                    "DeviceMotionEvent",
                    "DeviceMotionEventAcceleration",
                    "DeviceMotionEventRotationRate",
                    "DeviceOrientationEvent",
                    "FederatedCredential",
                    "GPU",
                    "GPUAdapter",
                    "GPUAdapterInfo",
                    "GPUBindGroup",
                    "GPUBindGroupLayout",
                    "GPUBuffer",
                    "GPUBufferUsage",
                    "GPUCanvasContext",
                    "GPUColorWrite",
                    "GPUCommandBuffer",
                    "GPUCommandEncoder",
                    "GPUCompilationInfo",
                    "GPUCompilationMessage",
                    "GPUComputePassEncoder",
                    "GPUComputePipeline",
                    "GPUDevice",
                    "GPUDeviceLostInfo",
                    "GPUError",
                    "GPUExternalTexture",
                    "GPUInternalError",
                    "GPUMapMode",
                    "GPUOutOfMemoryError",
                    "GPUPipelineError",
                    "GPUPipelineLayout",
                    "GPUQuerySet",
                    "GPUQueue",
                    "GPURenderBundle",
                    "GPURenderBundleEncoder",
                    "GPURenderPassEncoder",
                    "GPURenderPipeline",
                    "GPUSampler",
                    "GPUShaderModule",
                    "GPUShaderStage",
                    "GPUSupportedFeatures",
                    "GPUSupportedLimits",
                    "GPUTexture",
                    "GPUTextureUsage",
                    "GPUTextureView",
                    "GPUUncapturedErrorEvent",
                    "GPUValidationError",
                    "GravitySensor",
                    "Gyroscope",
                    "IdleDetector",
                    "ImageDecoder",
                    "ImageTrack",
                    "ImageTrackList",
                    "Keyboard",
                    "KeyboardLayoutMap",
                    "LinearAccelerationSensor",
                    "MIDIAccess",
                    "MIDIConnectionEvent",
                    "MIDIInput",
                    "MIDIInputMap",
                    "MIDIMessageEvent",
                    "MIDIOutput",
                    "MIDIOutputMap",
                    "MIDIPort",
                    "MediaDeviceInfo",
                    "MediaDevices",
                    "MediaKeyMessageEvent",
                    "MediaKeySession",
                    "MediaKeyStatusMap",
                    "MediaKeySystemAccess",
                    "MediaKeys",
                    "NavigationPreloadManager",
                    "NavigatorManagedData",
                    "OrientationSensor",
                    "PasswordCredential",
                    "ProtectedAudience",
                    "RelativeOrientationSensor",
                    "ScreenDetailed",
                    "ScreenDetails",
                    "Sensor",
                    "SensorErrorEvent",
                    "ServiceWorker",
                    "ServiceWorkerContainer",
                    "ServiceWorkerRegistration",
                    "StorageManager",
                    "SubtleCrypto",
                    "VideoDecoder",
                    "VideoEncoder",
                    "VirtualKeyboard",
                    "WGSLLanguageFeatures",
                    "WebTransport",
                    "WebTransportBidirectionalStream",
                    "WebTransportDatagramDuplexStream",
                    "WebTransportError",
                    "Worklet",
                    "XRDOMOverlayState",
                    "XRLayer",
                    "XRWebGLBinding",
                    "AuthenticatorAssertionResponse",
                    "AuthenticatorAttestationResponse",
                    "AuthenticatorResponse",
                    "PublicKeyCredential",
                    "Bluetooth",
                    "BluetoothCharacteristicProperties",
                    "BluetoothDevice",
                    "BluetoothRemoteGATTCharacteristic",
                    "BluetoothRemoteGATTDescriptor",
                    "BluetoothRemoteGATTServer",
                    "BluetoothRemoteGATTService",
                    "CaptureController",
                    "DevicePosture",
                    "DocumentPictureInPicture",
                    "EyeDropper",
                    "FileSystemDirectoryHandle",
                    "FileSystemFileHandle",
                    "FileSystemHandle",
                    "FileSystemWritableFileStream",
                    "FileSystemObserver",
                    "FontData",
                    "FragmentDirective",
                    "HID",
                    "HIDConnectionEvent",
                    "HIDDevice",
                    "HIDInputReportEvent",
                    "IdentityCredential",
                    "IdentityProvider",
                    "IdentityCredentialError",
                    "LaunchParams",
                    "LaunchQueue",
                    "Lock",
                    "LockManager",
                    "NavigatorLogin",
                    "NotRestoredReasonDetails",
                    "NotRestoredReasons",
                    "OTPCredential",
                    "PaymentAddress",
                    "PaymentRequest",
                    "PaymentRequestUpdateEvent",
                    "PaymentResponse",
                    "PaymentManager",
                    "PaymentMethodChangeEvent",
                    "Presentation",
                    "PresentationAvailability",
                    "PresentationConnection",
                    "PresentationConnectionAvailableEvent",
                    "PresentationConnectionCloseEvent",
                    "PresentationConnectionList",
                    "PresentationReceiver",
                    "PresentationRequest",
                    "PressureObserver",
                    "PressureRecord",
                    "Serial",
                    "SerialPort",
                    "StorageBucket",
                    "StorageBucketManager",
                    "USB",
                    "USBAlternateInterface",
                    "USBConfiguration",
                    "USBConnectionEvent",
                    "USBDevice",
                    "USBEndpoint",
                    "USBInTransferResult",
                    "USBInterface",
                    "USBIsochronousInTransferPacket",
                    "USBIsochronousInTransferResult",
                    "USBIsochronousOutTransferPacket",
                    "USBIsochronousOutTransferResult",
                    "USBOutTransferResult",
                    "WakeLock",
                    "WakeLockSentinel",
                    "XRAnchor",
                    "XRAnchorSet",
                    "XRBoundedReferenceSpace",
                    "XRCPUDepthInformation",
                    "XRCamera",
                    "XRDepthInformation",
                    "XRFrame",
                    "XRHitTestResult",
                    "XRHitTestSource",
                    "XRInputSource",
                    "XRInputSourceArray",
                    "XRInputSourceEvent",
                    "XRInputSourcesChangeEvent",
                    "XRLightEstimate",
                    "XRLightProbe",
                    "XRPose",
                    "XRRay",
                    "XRReferenceSpace",
                    "XRReferenceSpaceEvent",
                    "XRRenderState",
                    "XRRigidTransform",
                    "XRSession",
                    "XRSessionEvent",
                    "XRSpace",
                    "XRSystem",
                    "XRTransientInputHitTestResult",
                    "XRTransientInputHitTestSource",
                    "XRView",
                    "XRViewerPose",
                    "XRViewport",
                    "XRWebGLDepthInformation",
                    "XRWebGLLayer",
                    "XRHand",
                    "XRJointPose",
                    "XRJointSpace",
                    "getScreenDetails",
                    "queryLocalFonts",
                    "showDirectoryPicker",
                    "showOpenFilePicker",
                    "showSaveFilePicker",
                    "originAgentCluster",
                    "onpageswap",
                    "onpagereveal",
                    "credentialless",
                    "fence",
                    "speechSynthesis",
                    "onscrollend",
                    "onscrollsnapchange",
                    "onscrollsnapchanging",
                    "BackgroundFetchManager",
                    "BackgroundFetchRecord",
                    "BackgroundFetchRegistration",
                    "BluetoothUUID",
                    "CSSMarginRule",
                    "CSSViewTransitionRule",
                    "CaretPosition",
                    "ChapterInformation",
                    "CropTarget",
                    "DocumentPictureInPictureEvent",
                    "Fence",
                    "FencedFrameConfig",
                    "HTMLFencedFrameElement",
                    "MediaMetadata",
                    "MediaSession",
                    "NavigationActivation",
                    "Notification",
                    "PageRevealEvent",
                    "PageSwapEvent",
                    "PeriodicSyncManager",
                    "PermissionStatus",
                    "Permissions",
                    "PushManager",
                    "PushSubscription",
                    "PushSubscriptionOptions",
                    "RTCDataChannel",
                    "RemotePlayback",
                    "RestrictionTarget",
                    "SharedStorage",
                    "SharedStorageWorklet",
                    "SharedWorker",
                    "SnapEvent",
                    "SpeechSynthesis",
                    "SpeechSynthesisErrorEvent",
                    "SpeechSynthesisEvent",
                    "SpeechSynthesisUtterance",
                    "SpeechSynthesisVoice",
                    "WebSocketError",
                    "WebSocketStream",
                    "webkitSpeechGrammar",
                    "webkitSpeechGrammarList",
                    "webkitSpeechRecognition",
                    "webkitSpeechRecognitionError",
                    "webkitSpeechRecognitionEvent",
                    "webkitRequestFileSystem",
                    "webkitResolveLocalFileSystemURL",
                    "PC_ITEM_CONFIG",
                    "dra",
                    "customPointEvent",
                    "_risk_xhr",
                    "__intercept__fetch__",
                    "atobFill",
                    "riskHandlerUtil",
                    "ParamsSign",
                    "__core-js_shared__",
                    "regeneratorRuntime",
                    "callbackName",
                    "ajaxCount",
                    "__JDWEBSIGNHELPER_$DATA__",
                    "PSign",
                    "SHA256",
                    "bp_bizid",
                    "_0x26e2b7",
                    "_riskFpMode",
                    "jdtRiskContext",
                    "collectConfig",
                    "jdtRiskUtil",
                    "jdtRiskEncryptUtil",
                    "JdtRiskFingerPrint",
                    "jdtRiskCookieManager",
                    "jdtLocalStorageManager",
                    "jdtRiskStorageManager",
                    "TDEnvCollector",
                    "__getTkResult",
                    "_0x37f5",
                    "__callbackWrapper",
                    "reportLog",
                    "_0x1d73",
                    "_globalState",
                    "getJsToken",
                    "getJdEid",
                    "pageConfig",
                    "is_sort_black_list",
                    "jump_mobile",
                    "apiHost",
                    "commonAppId",
                    "preloadArray",
                    "seajsConfig",
                    "login",
                    "regist",
                    "createCookie",
                    "readCookie",
                    "addToFavorite",
                    "TrimPath",
                    "$",
                    "jQuery",
                    "seajs",
                    "define",
                    "EventEmitterPcItem",
                    "itemEventBus",
                    "listenTabVisibileReport",
                    "totouchbate",
                    "hashTag",
                    "href",
                    "_0x3db2",
                    "_0x3575",
                    "ParamsSignMain"
                ]
                if (!keys.includes('$jsDebugIsRegistered')) {
                    keys.push('$jsDebugIsRegistered');
                }
                return keys
            }
            if (name === 'document') {
                return [
                    "location"
                ]
            }
            if (name === 'window' || name === 'document') debugger;
            return Reflect.ownKeys(...arguments)
        }
    })
}
const safeFunction = (function () {
    let initialized = false;
    let myFunction_toString_symbol;

    const set_native = function set_native(func, key, value) {
        Object.defineProperty(func, key, {
            "enumerable": false,
            "configurable": true,
            "writable": true,
            "value": value
        });
    };

    return function safeFunction(func) {
        if (!initialized) {
            Function.prototype.$call = Function.prototype.call;
            const $toString = Function.toString;
            myFunction_toString_symbol = Symbol('functionToString');

            const myToString = function myToString() {
                return typeof this === 'function' && this[myFunction_toString_symbol] || $toString.$call(this);
            };

            delete Function.prototype.toString;
            set_native(Function.prototype, "toString", myToString);
            set_native(Function.prototype.toString, myFunction_toString_symbol, "function toString() { [native code] }");

            initialized = true;
        }
        // 避免重复添加
        if (!func.hasOwnProperty(myFunction_toString_symbol)) {
            set_native(func, myFunction_toString_symbol, `function ${func.name || ''}() { [native code] }`);
        }

        return func;
    };
})();
const CONSTRUCTOR_TOKEN = "constructor_token";


// 参数:1.构造函数名 2.是否启用严格模式 3.构造函数属性列表 4.构造函数原型方法 5.继承的构造函数名(如果到object则不写或置空 {} )
function createConstructor(constructorName, enableStrictMode, propertiesList = [], prototypeMethods = {}, parentConstructorName = null) {
    const instancesData = {};

    // 创建有名称的构造函数
    const constructorFunction = function (element, propertySetter, validationToken) {
        // 验证逻辑
        if (enableStrictMode && !(validationToken && validationToken === CONSTRUCTOR_TOKEN)) {
            throw new Error("Illegal constructor");
        }

        if (parentConstructorName && window[parentConstructorName]) {
            window[parentConstructorName].call(this, element, null, CONSTRUCTOR_TOKEN);
        }

        if (propertySetter && typeof propertySetter === "function") {
            propertySetter(this);
        }

        const instanceProperties = element && typeof element === "object" ? {...element} : {};
        this._element = Symbol('_element');
        instancesData[this._element] = instanceProperties;

        if (element && typeof element === "object") {
            Object.keys(element).forEach(key => {
                if (!this[key]) {
                    this[key] = element[key];
                }
            });
        }

        // 修改 propertiesList 格式,支持指定属性所属的类
        propertiesList.forEach(prop => {
            if (prop.name && 'value' in prop) {
                // 如果指定了 targetClass,则尝试在指定的类上设置属性
                let targetPrototype = constructorFunction.prototype;

                if (prop.targetClass && window[prop.targetClass]) {
                    targetPrototype = window[prop.targetClass].prototype;
                }

                Object.defineProperty(targetPrototype, prop.name, {
                    value: prop.value,
                    writable: prop.writable !== undefined ? prop.writable : false,
                    enumerable: prop.enumerable !== undefined ? prop.enumerable : true,
                    configurable: prop.configurable !== undefined ? prop.configurable : true
                });
            }
        });
    };

    // 设置函数名
    Object.defineProperty(constructorFunction, 'name', {
        value: constructorName,
        writable: false,
        enumerable: false,
        configurable: true
    });

    // 设置继承关系
    if (parentConstructorName && window[parentConstructorName]) {
        constructorFunction.prototype = Object.create(window[parentConstructorName].prototype);
        constructorFunction.prototype.constructor = constructorFunction;
        Object.setPrototypeOf(constructorFunction, window[parentConstructorName]);
    }

    // 设置toStringTag
    Object.defineProperty(constructorFunction.prototype, Symbol.toStringTag, {
        value: constructorName,
        writable: false,
        enumerable: false,
        configurable: true
    });

    // 添加原型方法
    Object.keys(prototypeMethods).forEach(methodName => {
        constructorFunction.prototype[methodName] = prototypeMethods[methodName];
        if (typeof constructorFunction.prototype[methodName] === "function") {
            safeFunction(constructorFunction.prototype[methodName]);
        }
    });

    // 保护构造函数
    safeFunction(constructorFunction);

    // 将构造函数挂载到全局对象
    window[constructorName] = constructorFunction;

    return constructorFunction;
}
// 补环境的代码

// 监控
window = watch(window, "window")

12,这个是补的环境

// EventTarget
createConstructor("EventTarget",true,[],{},"")
// Window
createConstructor("Window",true,[],{},"EventTarget")
Object.setPrototypeOf(window, Window.prototype)
// document

createConstructor("Node",true,[],{},"EventTarget")
createConstructor("Element",true,[],{},"Node")
createConstructor("HTMLElement",true,[],{},"Element")
createConstructor("HTMLScriptElement",true,[],{},"HTMLElement")
createConstructor("HTMLHeadElement",true,[],{},"HTMLElement")
createConstructor("HTMLCanvasElement",true,[],{},"HTMLElement")
createConstructor("HTMLCanvasElement",true,[],{},"HTMLElement")

createConstructor("Document",true,[],{
    createElement:function(ele){
        console.log("Document createElement ->",ele)
        if(ele === 'script'){
            return watch(new HTMLScriptElement({
                parentNode:watch(new HTMLHeadElement({
                    removeChild:function (){}
                },null,CONSTRUCTOR_TOKEN),"script标签的父节点")
            },null,CONSTRUCTOR_TOKEN),"document.script")
        }
        if(ele === 'canvas'){
            return watch(new HTMLCanvasElement({
                getContext:function(){
                    return watch(new HTMLCanvasElement(null,null,CONSTRUCTOR_TOKEN),"canvas标签")
                }
            },null,CONSTRUCTOR_TOKEN),"document.canvas")
        }
    },
    querySelector:function(){},
    getElementsByTagName:function(tag_name){
        console.log("document getElementsByTagName ->",tag_name)
    },
    documentElement:function (){},
    createEvent:function(event){
        console.log("document createEvent ->",event)
    }
},"Node")
createConstructor("HTMLDocument",true,[],{},"Document")
// HTMLAllCollection
createConstructor("HTMLAllCollection",true,[],{},"")
window.document = watch(new HTMLDocument(
    {
        all:watch(new HTMLAllCollection(null,null,CONSTRUCTOR_TOKEN),"window.document.all"),
        cookie:"__jdu=1747387851305559880516; shshshfpa=c6e0df72-0a1f-b0f8-1d3a-1c5725122fc9-1747387852; shshshfpx=c6e0df72-0a1f-b0f8-1d3a-1c5725122fc9-1747387852; jcap_dvzw_fp=ewtUcdLDbQfOmucHGJwbwNNhEDVVQAMu7Q0zYzFFZIHfSbeLAtHuF4DSq8uw9eRhJQ2i7yKLpt3c4KLFhCYN1A==; commonAddress=0; regionAddress=1%2C72%2C55674%2C0; whwswswws=; pt_st=1_e7-J0MNwG4VCN2AWtKfA7LMJtURjMiotKY7jvWYpdhSe1pb9fK7gBeVRjcaLuh2nVln-j_JhHtatANcGtl1Za6CPuZ0UBtEjuMHkVXqknXGYMINXB-FTcR4psQBzCurCi2f85EBwmbUqZPyNSwBBEW4HSMQ9SL8U2Hsej52qc49byIrLolcoH8NkU1lchGsFCLqJHHdwgzEgGb6f7ynzd4w2p1OUBGs4_78P6jp*; pinId=w4UcBdz9wmKnh8_Cn7upBQ; pin=jd_ZgnTIhmGpuux; unick=44465xtg3019r6; _tp=DAkSuZbeZ0f3en2J%2FUzGsA%3D%3D; _pst=jd_ZgnTIhmGpuux; mt_xid=V2_52007VwMUV1taW1wWTRleBGMHFlpUUVNeH04pDAFgUEcFX1tOWBdOHUAAMFcTTlRaVQ4DHB5YBWcBFAFdWQdcL0oYXwF7AxFOX1lDWh9CGFQOYwEiUG1YYlMZQB5fBGUGEFdYWlFaGkAQVARXBhNbWw%3D%3D; areaId=19; __jdv=76161171|baidu-pinzhuan|t_288551095_baidupinzhuan|cpc|0f3d30c8dba7459bb52f2eb5eba8ac7d_0_522c256d6f0e49709643c126e0d4945d|1767777095797; mba_muid=1747387851305559880516; TrackID=1f33YImE4dO1BH--Qz-T7RWwHI0o2jsJ9K-vXMEPpNd2yhphKl2rjWFgZEBoVEH9EJF0VfmCOGVJDfnhq-qtBqGbRMQDQ8SzAVRSVWgrUyQ8; light_key=AASBKE7rOxgWQziEhC_QY6yavBzkhxVGdK-_2_rrfDgYZ88HbRAluSP0oVbzFdmuOVQ_AqAE; unpl=JF8EAMhnNSttDEhTURJVEkdAG15cW1QKTkRWPTVQVg4MT1ADHgNMRUN7XlVdWhRKFx9ubhRUXVNKUA4bBCsSEXteXVdZDEsWC2tXVgQFDQ8VXURJQlZAFDNVCV9dSRZRZjJWBFtdT1xWSAYYRRMfDlAKDlhCR1FpMjVkXlh7VAQrAh0XFklUUldZCEkWB2tjDV1UWU9UAisDKxUge21UXV4KSBAzblcEZB8MF1wAHQIZE11LW1FYXwFNHgdvZQRQWVxDXQwaBhsVIEptVw; __jdc=143920055; cid=9; ipLoc-djd=1-72-55653-0; __jda=143920055.1747387851305559880516.1747387851.1767859021.1767868200.45; 3AB9D23F7A4B3CSS=jdd03YHEAMG5ZQYTT7VSQGFYN2QVBNXEIN6USGNDXRZKQTMX6RH32XWP6W5OYQ7ROSW2NDVJBUOIBNBRTEQREITD2PRYOWQAAAAM3TUT7JCYAAAAADLOKNUC36RKV6YX; thor=4E734EF76D9A1CC03E8FC84F5E4569DB1574843E2749B9AF2DC9E8524E6435229794A4FD4E4DB35F2107DC98061B0B594E281101F8FF128ED53B9EB45479AE6065E6CE7E6E7F2B7DCBBFFF80D3CD62AC9983612FD7D095ACCC37E66E1E1DA91E6C73A1F69C201DD3B39B3CB53B104B49D575C44BB1419F5AC1E5B7C1FF6D9921EB93A0DDAE4A0999D5E6BFD837902AE8E2D40B4A270C8AC4FE8EC199E7B67C2C; flash=3_-6yesMoqVgQRG6lFrh6zJtjeVSSOUtII3V9tbgqT7kr9Sz39bLrjw-JMmoZwsl_YVE_XhgtFHNhBHnbAsytA-Npw0iM9_G2py8RFfHk2lCBusheayjl9b-d0hTs8hy3vPREM0IcawhcoMQjNeKWbnvKmii_veVLytBJJyXU--DbSS5PTgRcD; cn=0; shshshfpb=BApXWiv9Anv5AFnFi-FheTK_zdSCe1J4TBgV5f3179xJ1PdZfQrzRnC7ChCbdI5NmawQ98annsaxmIuw37_gHsNsiYAu2rhuW5QQ; 3AB9D23F7A4B3C9B=YHEAMG5ZQYTT7VSQGFYN2QVBNXEIN6USGNDXRZKQTMX6RH32XWP6W5OYQ7ROSW2NDVJBUOIBNBRTEQREITD2PRYOWQ; sdtoken=AAbEsBpEIOVjqTAKCQtvQu177C4-my_SEoflhOmuhg9i4j39HI7i65tPqWDZsljkrCIoWcfmnO9alQIvI7PvAfl4ZL-GC8IN_4WHCY1t_Ek3Sd-w-oswjLj2BLNX5Njr35VAtjukvlMHbNJZFPgV4uneAHVO0zQ-ZgUHLKFRacyWETHe",
        referrer: "https://search.jd.com/Search"
    }
    ,null,CONSTRUCTOR_TOKEN),"window.document")

JS逆向实战:通过原型链补环境破解京东h5st签名算法 在爬虫与自动化采集领域,JS逆向是一项核心技能,而签名参数往往成为数据获取的关键障碍。以京东h5st为例,它是由前端JavaScript动态生成的签名,融合了环境指纹、时间戳与加密算法,一旦检测到运行环境异常便会拒绝服务。要绕过这一机制,最稳妥的方式并非用其他语言重写算法,而是让原始JS在Node.js中“以为”自己仍在浏览器中运行。这就涉及原型链补环境的原理:浏览器中的每个元素对象都继承自特定原型链,混淆代码常通过instanceof或Object.getPrototypeOf等方式进行环境校验。通过按需 阅读详情

相关推荐

JS逆向京东h5st:原型链补环境全流程实战解析

在浏览器自动化、爬虫开发与前端安全领域,JavaScript逆向是一项核心技能,而其中“补环境”技术更是绕过加密签名参数的关键。浏览器中的代码依赖window、document、navigator等全局对象及复杂的原型链结构,一旦脱离真实浏览器运行到Node.js环境,就会出现大量环境缺失与指纹检测问题。通过理解浏览器对象模型与执行原理,构建一个高度仿真的伪浏览器环境,用最小的成本让加密代码感知不到运行环境的变化,是解决此类签名参数生成难题的通用思路。该技术广泛应用于电商数据采集、接口安全分析、风控策略研究

weixin_31179927的博客 450

本篇分享京东 h5st5.3.6的生成方式以及逆向的经验

h5st4.8,4.9算法生成逻辑

kevinsir2003的博客 1万+

手把手教你逆向京东搜索接口:H5ST 556位参数生成与V8补环境技巧

本文深入解析了京东搜索接口中关键的H5ST 556位参数生成机制,并提供了详细的逆向实战指南。针对其复杂的反爬虫环境检测,文章重点介绍了通过链式补环境技巧,在Node.js中完整模拟浏览器环境(包括原型链检测和指纹验证)的方法,帮助开发者成功绕过防护并生成有效参数。

weixin_29315091的博客 480

最新京东web端h5st4.2/4.3算法分析

最近在2023年10.10 JD偷偷在M端更新了H5st4.2算法,今天我就在这里以m端搜索接口为例子分析一下给大家学习把代码组合测试一下,成功获取数据,收工技术交流 5LyB6bmFNTM0NjE1Njk=(base64解码)

AnglerS的博客 6816

爬虫&逆向--Day25&Day26--京东h5st案例解析

案例地址链接:https://search.jd.com/Search?案例爬取链接:https://api.m.jd.com/api?f06cc;5.2;

废弃的小码农 1704

爬虫&逆向--京东h5st参数生成与补环境实战指南

本文深入解析了京东h5st参数的生成机制与逆向破解实战。通过拆解h5st的结构与生成流程,详细介绍了如何定位并扣取核心加密代码,并重点阐述了链式补环境框架的构建方法,以模拟完整的浏览器环境,最终实现稳定生成有效的h5st参数,为爬虫开发者提供了一份详尽的实战指南。

weixin_28607671的博客 2208

某东联盟h5st逆向分析(opencode+mcp+skills)

本文分析了某东联盟页面的H5ST参数生成逻辑,通过逆向工程成功复现了加密过程。关键点包括:1)定位到x.sign(w)函数生成H5ST参数;2)发现需通过new window.ParamsSign创建实例;3)body参数使用SHA256加密。作者使用Node.js复现代码,通过补环境技术解决undefined问题,最终生成的831位H5ST与网页1103位存在差异但测试有效。配套Python代码通过execjs调用JS加密,成功获取到接口数据。文章强调仅供学习用途,并展示了完整的请求参数和响应处理流程。

爬虫工程师一枚 809

京东H5ST参数逆向实战:从环境补全到Python接口调用的完整避坑指南

本文详细解析了京东H5ST参数的逆向过程,从定位加密入口、分析核心逻辑,到应对严格的原型链环境检测,提供了完整的链式补环境框架。文章重点介绍了如何将Node.js加密代码服务化,并通过Python客户端实现高效调用,最终结合实战案例演示了商品搜索数据的完整采集方案,为爬虫工程师提供了宝贵的避坑指南。

yoga7的博客 732

JS 逆向系统进阶路线:专栏总纲与文章导航

本文是《JS 逆向系统进阶》专栏的总纲与导航页,围绕 JavaScript 基础、密码学、浏览器调试、Hook、扣代码、混淆还原、Webpack、补环境、AST、验证码、WASM、JSVMP、JSRPC、AI 辅助逆向等方向,整理一套长期更新的系统学习路线。文章不仅梳理主线学习顺序,也规划专题扩展和真实案例索引,帮助读者从零散技巧过渡到可迁移、可复盘、可持续提升的 JS 逆向能力体系。

XAMO Lab|代码、调试与复盘笔记 1724

h5st签名逆向实战:原型链补环境与Node.js模拟全解析

JavaScript逆向工程中,浏览器环境依赖是绕不开的难点。前端代码运行时依赖window、document、navigator等全局对象,而Node.js默认缺少这些宿主环境,导致扣出的算法无法直接执行。原型链补环境技术通过在Node.js中模拟浏览器对象及其原型链关系,让被抽取的代码在非浏览器环境下也能正常运行。这一技术不仅用于解决动态签名生成问题,也是爬虫工程、风控模拟、接口安全研究等场景的基础能力。以电商平台常见的h5st签名算法为例,其生成逻辑与时间戳、请求参数、设备指纹强相关,且内嵌大量环境检

weixin_30430677的博客 313

逆向实战:某东h5st参数加密全解析(附完整环境补全代码)

本文深度解析某东H5ST参数加密机制,详细介绍了h5st参数的生成过程、加密算法及环境模拟策略。通过逆向分析window.PSign和ParamsSign模块,揭示SHA256加密逻辑,并提供完整的环境补全代码,帮助开发者复现加密流程,应对反爬挑战。

weixin_42539414的博客 1123

京东H5ST签名逆向:V8补环境与动态加密原理

H5ST是京东前端实现的动态请求签名机制,本质是基于浏览器运行时环境(如performance.now、navigator、Canvas等)实时生成的结构化SHA-256签名。其原理依赖毫秒级时间戳、设备指纹、参数标准化及密钥动态派生,技术价值在于有效识别真实H5流量、抵御自动化爬取。典型应用场景包括电商比价系统、价格监控、库存预警等需高频调用京东搜索接口的工程实践。本文聚焦V8引擎下JS执行环境模拟(即‘补环境’),详解如何在Node.js中复现window、document、navigator等关键AP

weixin_29007135的博客 249

京东H5ST参数逆向与V8环境补全实战指南

H5ST是现代电商前端反爬的核心机制,本质是基于V8引擎执行环境生成的行为指纹哈希。其原理并非传统签名验证,而是通过采集navigator、performance.timing等42个环境变量,经MD5预处理与SHA-256动态计算,形成556位可变令牌。技术价值在于构建‘可信执行环境’校验链,有效识别无头浏览器与篡改行为。典型应用场景包括电商搜索接口调用、自动化比价与商品监控。稳定实现需跨越L1基础可执行、L2逻辑自洽、L3行为拟真三层补环境门槛,关键依赖V8沙箱模拟与时间戳插值算法。本文聚焦京东H5ST

weixin_29009669的博客 205

JD --- 补环境(某东)

之前讲的是购物的"f06cc"接口,这次就以拍卖的“106e8”这个接口为例(补环境其实都一样)

weixin_54664198的博客 1738

逆向实战:深度剖析京东H5ST参数加密与反爬虫策略的攻防

本文深入解析京东H5ST参数加密机制与反爬虫策略,揭示其多层安全防御体系。通过逆向分析,详细探讨了SHA-256变种加密、Promise异步混淆及环境检测等关键技术,为开发者提供对抗现代Web安全防护的实用方法论。

weixin_33728268的博客 357

实战篇---某东h5st破解(1)--- 初识h5st

京东h5st是一种用于京东平台数据获取的加密参数,部分接口需要携带此参数,才能获取数据,h5st是通过一系列加密算法才能获取到的。

zhouzhou_98的博客 3518

H5ST签名逆向实战:从webpack混淆代码还原到Node.js本地复现

前端签名参数是服务端校验的关键,通常由JavaScript动态生成并隐藏在webpack打包的混淆代码中。其原理涉及参数排序、时间戳拼接、盐值混合及摘要算法,逆向需通过hook调用栈定位签名函数,并模拟浏览器环境在Node.js中复现。技术价值在于打通签名生成链路,支持爬虫数据采集与接口联调。应用场景包括移动端H5接口逆向、前端安全研究及自动化采集系统。本文以H5ST签名为例,完整演示从定位入口、扣出算法、补环境到封装调用的工程实践,并总结常见避坑与二次开发方法。

weixin_29016315的博客 319

某东详情页h5st 算法分析

某东详情页h5st 算法分析

自成背后的博客 1万+
上一篇: Js逆向,小某书的原型链补环境,逆向参数x-s
下一篇: 爬取智联岗位信息
interception
博客等级 码龄1年 117粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值