@leeguoo/pwtk-network-debugger 1.2.0 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +3 -3
- package/dist/index.esm.js +194 -63
- package/dist/index.js +3 -3
- package/package.json +2 -2
package/dist/index.esm.js
CHANGED
|
@@ -6711,6 +6711,9 @@ class NetworkInterceptor {
|
|
|
6711
6711
|
generateRequestId() {
|
|
6712
6712
|
return Math.random().toString(36).substr(2, 9);
|
|
6713
6713
|
}
|
|
6714
|
+
isInternalUrl(url) {
|
|
6715
|
+
return url.includes("/ip/getSK") || url.includes("/api/dokv/storage") || url.includes("/api/share");
|
|
6716
|
+
}
|
|
6714
6717
|
notifyListeners(request) {
|
|
6715
6718
|
this.listeners.forEach((listener) => {
|
|
6716
6719
|
try {
|
|
@@ -6781,10 +6784,12 @@ class NetworkInterceptor {
|
|
|
6781
6784
|
let url = "";
|
|
6782
6785
|
let requestHeaders = {};
|
|
6783
6786
|
const startTime = Date.now();
|
|
6787
|
+
let isInternalRequest = false;
|
|
6784
6788
|
const originalOpen = xhr.open;
|
|
6785
6789
|
xhr.open = function(methodArg, urlArg, ...rest) {
|
|
6786
6790
|
method = methodArg.toUpperCase();
|
|
6787
6791
|
url = urlArg;
|
|
6792
|
+
isInternalRequest = self2.isInternalUrl(url);
|
|
6788
6793
|
return originalOpen.apply(this, [methodArg, urlArg, ...rest]);
|
|
6789
6794
|
};
|
|
6790
6795
|
const originalSetRequestHeader = xhr.setRequestHeader;
|
|
@@ -6794,6 +6799,9 @@ class NetworkInterceptor {
|
|
|
6794
6799
|
};
|
|
6795
6800
|
const originalSend = xhr.send;
|
|
6796
6801
|
xhr.send = function(body) {
|
|
6802
|
+
if (isInternalRequest) {
|
|
6803
|
+
return originalSend.call(this, body);
|
|
6804
|
+
}
|
|
6797
6805
|
const requestData = {
|
|
6798
6806
|
id: requestId,
|
|
6799
6807
|
url,
|
|
@@ -6816,7 +6824,7 @@ class NetworkInterceptor {
|
|
|
6816
6824
|
return originalSend.call(this, body);
|
|
6817
6825
|
};
|
|
6818
6826
|
xhr.addEventListener("readystatechange", function() {
|
|
6819
|
-
if (xhr.readyState === XMLHttpRequest.DONE) {
|
|
6827
|
+
if (xhr.readyState === XMLHttpRequest.DONE && !isInternalRequest) {
|
|
6820
6828
|
const endTime = Date.now();
|
|
6821
6829
|
const requestData = self2.requests.get(requestId);
|
|
6822
6830
|
if (requestData) {
|
|
@@ -6858,13 +6866,16 @@ class NetworkInterceptor {
|
|
|
6858
6866
|
window.XMLHttpRequest.prototype = originalXHR.prototype;
|
|
6859
6867
|
}
|
|
6860
6868
|
interceptFetch() {
|
|
6861
|
-
const originalFetch = window.fetch;
|
|
6869
|
+
const originalFetch = window.fetch(window).__originalFetch = originalFetch;
|
|
6862
6870
|
const self2 = this;
|
|
6863
6871
|
window.fetch = async function(input, init) {
|
|
6864
6872
|
const requestId = self2.generateRequestId();
|
|
6865
6873
|
const startTime = Date.now();
|
|
6866
6874
|
const url = typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
|
|
6867
6875
|
const method = (init?.method || "GET").toUpperCase();
|
|
6876
|
+
if (self2.isInternalUrl(url)) {
|
|
6877
|
+
return originalFetch.call(this, input, init);
|
|
6878
|
+
}
|
|
6868
6879
|
const requestHeaders = {};
|
|
6869
6880
|
if (init?.headers) {
|
|
6870
6881
|
if (init.headers instanceof Headers) {
|
|
@@ -7146,6 +7157,16 @@ const styles = `
|
|
|
7146
7157
|
#network-debugger-panel.minimized {
|
|
7147
7158
|
height: 40px !important;
|
|
7148
7159
|
overflow: hidden;
|
|
7160
|
+
width: auto !important;
|
|
7161
|
+
min-width: 200px;
|
|
7162
|
+
}
|
|
7163
|
+
|
|
7164
|
+
#network-debugger-panel.minimized .debugger-content {
|
|
7165
|
+
display: none;
|
|
7166
|
+
}
|
|
7167
|
+
|
|
7168
|
+
#network-debugger-panel.minimized .resize-handle {
|
|
7169
|
+
display: none;
|
|
7149
7170
|
}
|
|
7150
7171
|
|
|
7151
7172
|
#network-debugger-panel.bottom-right {
|
|
@@ -7354,6 +7375,19 @@ const styles = `
|
|
|
7354
7375
|
display: none;
|
|
7355
7376
|
}
|
|
7356
7377
|
|
|
7378
|
+
/* 默认折叠headers */
|
|
7379
|
+
.request-details .detail-section.collapsible {
|
|
7380
|
+
/* 默认折叠状态 */
|
|
7381
|
+
}
|
|
7382
|
+
|
|
7383
|
+
.request-details .detail-section.collapsible:not(.expanded) .detail-content {
|
|
7384
|
+
display: none;
|
|
7385
|
+
}
|
|
7386
|
+
|
|
7387
|
+
.request-details .detail-section.collapsible:not(.expanded) .collapse-icon {
|
|
7388
|
+
transform: rotate(-90deg);
|
|
7389
|
+
}
|
|
7390
|
+
|
|
7357
7391
|
.request-item.expanded .request-details {
|
|
7358
7392
|
display: block;
|
|
7359
7393
|
}
|
|
@@ -7372,6 +7406,45 @@ const styles = `
|
|
|
7372
7406
|
padding-bottom: 4px;
|
|
7373
7407
|
}
|
|
7374
7408
|
|
|
7409
|
+
.detail-title.highlight {
|
|
7410
|
+
color: #FFD700;
|
|
7411
|
+
font-size: 12px;
|
|
7412
|
+
background: rgba(255, 215, 0, 0.1);
|
|
7413
|
+
padding: 6px 8px;
|
|
7414
|
+
border-radius: 4px;
|
|
7415
|
+
border-bottom: 2px solid #FFD700;
|
|
7416
|
+
}
|
|
7417
|
+
|
|
7418
|
+
.detail-title.clickable {
|
|
7419
|
+
cursor: pointer;
|
|
7420
|
+
user-select: none;
|
|
7421
|
+
display: flex;
|
|
7422
|
+
align-items: center;
|
|
7423
|
+
gap: 4px;
|
|
7424
|
+
}
|
|
7425
|
+
|
|
7426
|
+
.detail-title.clickable:hover {
|
|
7427
|
+
background: rgba(76, 175, 80, 0.1);
|
|
7428
|
+
}
|
|
7429
|
+
|
|
7430
|
+
.collapse-icon {
|
|
7431
|
+
display: inline-block;
|
|
7432
|
+
transition: transform 0.2s;
|
|
7433
|
+
font-size: 10px;
|
|
7434
|
+
}
|
|
7435
|
+
|
|
7436
|
+
.detail-section.collapsible {
|
|
7437
|
+
position: relative;
|
|
7438
|
+
}
|
|
7439
|
+
|
|
7440
|
+
.detail-section.collapsible.collapsed .detail-content {
|
|
7441
|
+
display: none;
|
|
7442
|
+
}
|
|
7443
|
+
|
|
7444
|
+
.detail-section.collapsible.collapsed .collapse-icon {
|
|
7445
|
+
transform: rotate(-90deg);
|
|
7446
|
+
}
|
|
7447
|
+
|
|
7375
7448
|
.detail-content {
|
|
7376
7449
|
background: #222;
|
|
7377
7450
|
padding: 8px;
|
|
@@ -7620,54 +7693,58 @@ const styles = `
|
|
|
7620
7693
|
`;
|
|
7621
7694
|
async function createShareLink(requestData) {
|
|
7622
7695
|
try {
|
|
7696
|
+
const curlCommand = formatAsCurl(requestData);
|
|
7623
7697
|
const shareData = {
|
|
7624
|
-
//
|
|
7625
|
-
|
|
7626
|
-
|
|
7627
|
-
|
|
7628
|
-
|
|
7629
|
-
|
|
7630
|
-
|
|
7631
|
-
|
|
7632
|
-
|
|
7633
|
-
|
|
7634
|
-
|
|
7635
|
-
|
|
7636
|
-
|
|
7637
|
-
|
|
7638
|
-
|
|
7639
|
-
|
|
7640
|
-
|
|
7641
|
-
|
|
7642
|
-
|
|
7643
|
-
|
|
7644
|
-
|
|
7698
|
+
// 原项目需要的核心字段
|
|
7699
|
+
curl: curlCommand,
|
|
7700
|
+
response: requestData.responseBody || null,
|
|
7701
|
+
timestamp: Date.now(),
|
|
7702
|
+
// 密钥相关(如果有)
|
|
7703
|
+
keys: extractKeys(requestData.headers),
|
|
7704
|
+
slk: requestData.headers?.slk || "",
|
|
7705
|
+
// 额外的调试信息(向后兼容)
|
|
7706
|
+
debuggerData: {
|
|
7707
|
+
url: requestData.url,
|
|
7708
|
+
method: requestData.method,
|
|
7709
|
+
headers: requestData.headers,
|
|
7710
|
+
status: requestData.status,
|
|
7711
|
+
statusText: requestData.statusText,
|
|
7712
|
+
duration: requestData.duration,
|
|
7713
|
+
responseHeaders: requestData.responseHeaders,
|
|
7714
|
+
decryptedRequest: requestData.decryptedRequest,
|
|
7715
|
+
decryptedResponse: requestData.decryptedResponse,
|
|
7716
|
+
error: requestData.error,
|
|
7717
|
+
creator: "PWTK Network Debugger by Leo (@leeguoo)",
|
|
7718
|
+
version: "1.2.0"
|
|
7719
|
+
}
|
|
7645
7720
|
};
|
|
7646
|
-
const
|
|
7721
|
+
const originalFetch = window.__originalFetch || window.fetch;
|
|
7722
|
+
const response = await originalFetch("https://curl.bwg.leeguoo.com/api/share", {
|
|
7647
7723
|
method: "POST",
|
|
7648
7724
|
headers: {
|
|
7649
7725
|
"Content-Type": "application/json"
|
|
7650
7726
|
},
|
|
7651
7727
|
body: JSON.stringify({
|
|
7652
|
-
data: shareData
|
|
7653
|
-
type: "network-request",
|
|
7654
|
-
expireIn: 7 * 24 * 60 * 60 * 1e3
|
|
7655
|
-
// 7天过期
|
|
7728
|
+
data: shareData
|
|
7656
7729
|
})
|
|
7657
7730
|
});
|
|
7658
7731
|
const result = await response.json();
|
|
7659
|
-
if (result.
|
|
7660
|
-
const shareUrl = `https://curl.bwg.leeguoo.com/share/${result.
|
|
7732
|
+
if (result.shareId) {
|
|
7733
|
+
const shareUrl = `https://curl.bwg.leeguoo.com/share/${result.shareId}`;
|
|
7661
7734
|
console.log(`🔗 分享链接创建成功 (by Leo): ${shareUrl}`);
|
|
7662
7735
|
return shareUrl;
|
|
7663
7736
|
} else {
|
|
7664
|
-
throw new Error(result.
|
|
7737
|
+
throw new Error(result.error || "创建分享失败");
|
|
7665
7738
|
}
|
|
7666
7739
|
} catch (error) {
|
|
7667
7740
|
console.error("NetworkDebugger: 创建分享链接失败:", error);
|
|
7668
7741
|
throw error;
|
|
7669
7742
|
}
|
|
7670
7743
|
}
|
|
7744
|
+
function extractKeys(headers) {
|
|
7745
|
+
if (!headers) return "";
|
|
7746
|
+
return headers.keys || headers.cid || headers["x-api-key"] || "";
|
|
7747
|
+
}
|
|
7671
7748
|
async function copyToClipboard(text) {
|
|
7672
7749
|
try {
|
|
7673
7750
|
if (navigator.clipboard && navigator.clipboard.writeText) {
|
|
@@ -7689,6 +7766,22 @@ async function copyToClipboard(text) {
|
|
|
7689
7766
|
return false;
|
|
7690
7767
|
}
|
|
7691
7768
|
}
|
|
7769
|
+
function formatAsCurl(requestData) {
|
|
7770
|
+
let curl = `curl '${requestData.url}'`;
|
|
7771
|
+
if (requestData.method !== "GET") {
|
|
7772
|
+
curl += ` -X ${requestData.method}`;
|
|
7773
|
+
}
|
|
7774
|
+
if (requestData.headers) {
|
|
7775
|
+
Object.entries(requestData.headers).forEach(([key, value]) => {
|
|
7776
|
+
curl += ` -H '${key}: ${value}'`;
|
|
7777
|
+
});
|
|
7778
|
+
}
|
|
7779
|
+
if (requestData.requestBody) {
|
|
7780
|
+
const body = typeof requestData.requestBody === "string" ? requestData.requestBody : JSON.stringify(requestData.requestBody);
|
|
7781
|
+
curl += ` --data '${body}'`;
|
|
7782
|
+
}
|
|
7783
|
+
return curl;
|
|
7784
|
+
}
|
|
7692
7785
|
class DebugPanel {
|
|
7693
7786
|
constructor(interceptor, config = {}) {
|
|
7694
7787
|
this.isDragging = false;
|
|
@@ -7721,12 +7814,12 @@ class DebugPanel {
|
|
|
7721
7814
|
this.container.className = `${this.config.position} ${this.config.minimized ? "minimized" : ""}`;
|
|
7722
7815
|
this.container.innerHTML = `
|
|
7723
7816
|
<div class="debugger-header">
|
|
7724
|
-
<div class="debugger-title"
|
|
7817
|
+
<div class="debugger-title">🔓 ${this.config.minimized ? "PWTK" : "PWTK 解密小工具"} <span style="font-size: 10px; opacity: 0.7;">by Leo</span></div>
|
|
7725
7818
|
<div class="debugger-controls">
|
|
7726
|
-
<button class="debugger-btn" data-action="clear" title="清空">🗑️</button>
|
|
7727
|
-
<button class="debugger-btn" data-action="export" title="导出">💾</button>
|
|
7728
|
-
<button class="debugger-btn" data-action="minimize" title="最小化">${this.config.minimized ? "📖" : "📕"}</button>
|
|
7729
|
-
<button class="debugger-btn" data-action="fullscreen" title="全屏">⛶</button>
|
|
7819
|
+
${!this.config.minimized ? '<button class="debugger-btn" data-action="clear" title="清空">🗑️</button>' : ""}
|
|
7820
|
+
${!this.config.minimized ? '<button class="debugger-btn" data-action="export" title="导出">💾</button>' : ""}
|
|
7821
|
+
<button class="debugger-btn" data-action="minimize" title="${this.config.minimized ? "展开" : "最小化"}">${this.config.minimized ? "📖" : "📕"}</button>
|
|
7822
|
+
${!this.config.minimized ? '<button class="debugger-btn" data-action="fullscreen" title="全屏">⛶</button>' : ""}
|
|
7730
7823
|
<button class="debugger-btn" data-action="close" title="关闭">✕</button>
|
|
7731
7824
|
</div>
|
|
7732
7825
|
</div>
|
|
@@ -7765,8 +7858,8 @@ class DebugPanel {
|
|
|
7765
7858
|
</div>
|
|
7766
7859
|
<div class="about-panel" data-panel="about" style="display: none;">
|
|
7767
7860
|
<div style="padding: 20px; color: #fff; text-align: center;">
|
|
7768
|
-
<h2 style="margin: 0 0 20px 0;"
|
|
7769
|
-
<p style="margin: 10px 0;">Version: 1.2.
|
|
7861
|
+
<h2 style="margin: 0 0 20px 0;">🔓 PWTK 解密小工具</h2>
|
|
7862
|
+
<p style="margin: 10px 0;">Version: 1.2.3</p>
|
|
7770
7863
|
<p style="margin: 10px 0;">👨💻 Created by <strong>Leo (@leeguoo)</strong></p>
|
|
7771
7864
|
<p style="margin: 10px 0;">📧 技术支持:请联系 Leo</p>
|
|
7772
7865
|
<p style="margin: 10px 0;">🌐 分享服务:curl.bwg.leeguoo.com</p>
|
|
@@ -7919,44 +8012,49 @@ class DebugPanel {
|
|
|
7919
8012
|
}
|
|
7920
8013
|
renderRequestDetails(request) {
|
|
7921
8014
|
let html = "";
|
|
7922
|
-
|
|
8015
|
+
request.id.replace(/[^a-zA-Z0-9]/g, "");
|
|
8016
|
+
if (request.decryptedRequest) {
|
|
7923
8017
|
html += `
|
|
7924
8018
|
<div class="detail-section">
|
|
7925
|
-
<div class="detail-title"
|
|
8019
|
+
<div class="detail-title highlight">🔓 解密请求数据</div>
|
|
7926
8020
|
<div class="detail-content">
|
|
7927
|
-
<
|
|
7928
|
-
${Object.entries(request.headers).map(
|
|
7929
|
-
([key, value]) => `<tr><td>${key}</td><td>${value}</td></tr>`
|
|
7930
|
-
).join("")}
|
|
7931
|
-
</table>
|
|
8021
|
+
<div class="json-content">${this.formatData(request.decryptedRequest)}</div>
|
|
7932
8022
|
</div>
|
|
7933
8023
|
</div>
|
|
7934
8024
|
`;
|
|
7935
8025
|
}
|
|
7936
|
-
if (request.
|
|
8026
|
+
if (request.decryptedResponse) {
|
|
7937
8027
|
html += `
|
|
7938
8028
|
<div class="detail-section">
|
|
7939
|
-
<div class="detail-title"
|
|
8029
|
+
<div class="detail-title highlight">🔓 解密响应数据</div>
|
|
7940
8030
|
<div class="detail-content">
|
|
7941
|
-
<div class="json-content">${this.formatData(request.
|
|
8031
|
+
<div class="json-content">${this.formatData(request.decryptedResponse)}</div>
|
|
7942
8032
|
</div>
|
|
7943
8033
|
</div>
|
|
7944
8034
|
`;
|
|
7945
8035
|
}
|
|
7946
|
-
if (request.
|
|
8036
|
+
if (Object.keys(request.headers).length > 0) {
|
|
7947
8037
|
html += `
|
|
7948
|
-
<div class="detail-section">
|
|
7949
|
-
<div class="detail-title"
|
|
8038
|
+
<div class="detail-section collapsible collapsed">
|
|
8039
|
+
<div class="detail-title clickable" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
8040
|
+
<span class="collapse-icon">▼</span> 请求头 (${Object.keys(request.headers).length})
|
|
8041
|
+
</div>
|
|
7950
8042
|
<div class="detail-content">
|
|
7951
|
-
<
|
|
8043
|
+
<table class="headers-table">
|
|
8044
|
+
${Object.entries(request.headers).map(
|
|
8045
|
+
([key, value]) => `<tr><td>${key}</td><td>${value}</td></tr>`
|
|
8046
|
+
).join("")}
|
|
8047
|
+
</table>
|
|
7952
8048
|
</div>
|
|
7953
8049
|
</div>
|
|
7954
8050
|
`;
|
|
7955
8051
|
}
|
|
7956
8052
|
if (request.responseHeaders && Object.keys(request.responseHeaders).length > 0) {
|
|
7957
8053
|
html += `
|
|
7958
|
-
<div class="detail-section">
|
|
7959
|
-
<div class="detail-title"
|
|
8054
|
+
<div class="detail-section collapsible collapsed">
|
|
8055
|
+
<div class="detail-title clickable" onclick="this.parentElement.classList.toggle('collapsed')">
|
|
8056
|
+
<span class="collapse-icon">▼</span> 响应头 (${Object.keys(request.responseHeaders).length})
|
|
8057
|
+
</div>
|
|
7960
8058
|
<div class="detail-content">
|
|
7961
8059
|
<table class="headers-table">
|
|
7962
8060
|
${Object.entries(request.responseHeaders).map(
|
|
@@ -7967,22 +8065,22 @@ class DebugPanel {
|
|
|
7967
8065
|
</div>
|
|
7968
8066
|
`;
|
|
7969
8067
|
}
|
|
7970
|
-
if (request.
|
|
8068
|
+
if (request.requestBody && !request.decryptedRequest) {
|
|
7971
8069
|
html += `
|
|
7972
8070
|
<div class="detail-section">
|
|
7973
|
-
<div class="detail-title"
|
|
8071
|
+
<div class="detail-title">请求数据</div>
|
|
7974
8072
|
<div class="detail-content">
|
|
7975
|
-
<div class="json-content">${this.formatData(request.
|
|
8073
|
+
<div class="json-content">${this.formatData(request.requestBody)}</div>
|
|
7976
8074
|
</div>
|
|
7977
8075
|
</div>
|
|
7978
8076
|
`;
|
|
7979
8077
|
}
|
|
7980
|
-
if (request.decryptedResponse) {
|
|
8078
|
+
if (request.responseBody && !request.decryptedResponse) {
|
|
7981
8079
|
html += `
|
|
7982
8080
|
<div class="detail-section">
|
|
7983
|
-
<div class="detail-title"
|
|
8081
|
+
<div class="detail-title">响应数据</div>
|
|
7984
8082
|
<div class="detail-content">
|
|
7985
|
-
<div class="json-content">${this.formatData(request.
|
|
8083
|
+
<div class="json-content">${this.formatData(request.responseBody)}</div>
|
|
7986
8084
|
</div>
|
|
7987
8085
|
</div>
|
|
7988
8086
|
`;
|
|
@@ -8087,8 +8185,41 @@ Created by Leo (@leeguoo)`);
|
|
|
8087
8185
|
toggleMinimize() {
|
|
8088
8186
|
this.config.minimized = !this.config.minimized;
|
|
8089
8187
|
this.container.classList.toggle("minimized", this.config.minimized);
|
|
8090
|
-
const
|
|
8091
|
-
|
|
8188
|
+
const header = this.container.querySelector(".debugger-header");
|
|
8189
|
+
if (header) {
|
|
8190
|
+
header.innerHTML = `
|
|
8191
|
+
<div class="debugger-title">🔓 ${this.config.minimized ? "PWTK" : "PWTK 解密小工具"} <span style="font-size: 10px; opacity: 0.7;">by Leo</span></div>
|
|
8192
|
+
<div class="debugger-controls">
|
|
8193
|
+
${!this.config.minimized ? '<button class="debugger-btn" data-action="clear" title="清空">🗑️</button>' : ""}
|
|
8194
|
+
${!this.config.minimized ? '<button class="debugger-btn" data-action="export" title="导出">💾</button>' : ""}
|
|
8195
|
+
<button class="debugger-btn" data-action="minimize" title="${this.config.minimized ? "展开" : "最小化"}">${this.config.minimized ? "📖" : "📕"}</button>
|
|
8196
|
+
${!this.config.minimized ? '<button class="debugger-btn" data-action="fullscreen" title="全屏">⛶</button>' : ""}
|
|
8197
|
+
<button class="debugger-btn" data-action="close" title="关闭">✕</button>
|
|
8198
|
+
</div>
|
|
8199
|
+
`;
|
|
8200
|
+
const controls = header.querySelector(".debugger-controls");
|
|
8201
|
+
controls.addEventListener("click", (e) => {
|
|
8202
|
+
const target = e.target;
|
|
8203
|
+
const action = target.dataset.action;
|
|
8204
|
+
switch (action) {
|
|
8205
|
+
case "clear":
|
|
8206
|
+
this.clearRequests();
|
|
8207
|
+
break;
|
|
8208
|
+
case "export":
|
|
8209
|
+
this.exportData();
|
|
8210
|
+
break;
|
|
8211
|
+
case "minimize":
|
|
8212
|
+
this.toggleMinimize();
|
|
8213
|
+
break;
|
|
8214
|
+
case "fullscreen":
|
|
8215
|
+
this.toggleFullscreen();
|
|
8216
|
+
break;
|
|
8217
|
+
case "close":
|
|
8218
|
+
this.hide();
|
|
8219
|
+
break;
|
|
8220
|
+
}
|
|
8221
|
+
});
|
|
8222
|
+
}
|
|
8092
8223
|
}
|
|
8093
8224
|
toggleFullscreen() {
|
|
8094
8225
|
this.container.classList.toggle("fullscreen");
|
|
@@ -8330,7 +8461,7 @@ class NetworkDebugger {
|
|
|
8330
8461
|
this.initialized = true;
|
|
8331
8462
|
console.log(`
|
|
8332
8463
|
╔════════════════════════════════════════╗
|
|
8333
|
-
║ PWTK
|
|
8464
|
+
║ 🔓 PWTK 解密小工具 v1.2.3 ║
|
|
8334
8465
|
║ Created by Leo (@leeguoo) ║
|
|
8335
8466
|
║ 技术支持: 请联系 Leo ║
|
|
8336
8467
|
║ 分享服务: curl.bwg.leeguoo.com ║
|