Răsfoiți Sursa

Merge branch 'master' of http://787255.xyz:4003/ydm/chrome-plugin

瑞强 吴 9 luni în urmă
părinte
comite
c8dc941abb
3 a modificat fișierele cu 83 adăugiri și 5 ștergeri
  1. 49 1
      background.js
  2. 26 3
      content.js
  3. 8 1
      manifest.json

+ 49 - 1
background.js

@@ -21,4 +21,52 @@ chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
   if (changeInfo.status === 'complete' && tab.url.includes('page.html')) {
     chrome.tabs.sendMessage(tabId, { msgToPopup: rinfo[tabId] + new Date().toString() });
   }
-});
+});
+
+// // background.js
+// chrome.runtime.onInstalled.addListener(function () {
+//   console.log("插件已被安装");
+// });
+
+// let jsRequests = [];
+// let jsRequestsByTab = {}; // 用于存储每个标签页的请求
+
+// chrome.webRequest.onBeforeRequest.addListener(
+//   (details) => {
+//     const tabId = details.tabId; // 获取当前请求的标签页 ID
+//     const url = details.url;
+//     let uri = new URL(url);
+//     if (
+//       details.initiator &&
+//       uri.pathname.endsWith(".js") &&
+//       (uri.protocol.startsWith("http") || uri.protocol.startsWith("https"))
+//     ) {
+//       // 确保有个数组来记录当前标签页的请求
+//       if (!jsRequestsByTab[tabId]) {
+//         jsRequestsByTab[tabId] = [];
+//       }
+//       jsRequestsByTab[tabId].push(url);
+//     }
+//   },
+//   { urls: ["<all_urls>"] }
+// );
+
+// chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
+//   if (request.action === "getJsRequests") {
+//     const tabId = sender.tab.id; // 获取请求来源的标签页 ID
+//     sendResponse(jsRequestsByTab[tabId] || []);
+//   }
+// });
+
+// // 监听标签页更新(包括刷新)事件以清空请求记录
+// chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
+//   if (changeInfo.status === "loading") {
+//     // 标签页加载完成时清空请求记录
+//     delete jsRequestsByTab[tabId];
+//   }
+// });
+
+// // 监听标签页关闭事件以清空请求记录
+// chrome.tabs.onRemoved.addListener((tabId) => {
+//   delete jsRequestsByTab[tabId]; // 清空对应标签页的请求记录
+// });

+ 26 - 3
content.js

@@ -45,8 +45,31 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
       isOpen = false;
     }
   }
-  if(request.msgToPopup){
-    debugger
+});
+
+const jsRequests = new Set(); // 使用 Set 以避免重复的 URL
+
+// 观察 DOM 的变化
+const observer = new MutationObserver((mutations) => {
+  for (const mutation of mutations) {
+    if (mutation.type === "childList") {
+      mutation.addedNodes.forEach((node) => {
+        if (node.nodeName === "SCRIPT" && node.src) {
+          jsRequests.add(node.src);
+        }
+      });
+    }
+  }
+});
+
+// 观察整个文档
+observer.observe(document, { childList: true, subtree: true });
+
+// 获取当前加载的脚本
+const scripts = Array.from(document.getElementsByTagName("script"));
+scripts.forEach((script) => {
+  if (script.src) {
+    jsRequests.add(script.src);
   }
 });
 
@@ -54,7 +77,7 @@ let isOpen = false;
 
 function clickHandler(e) {
   chrome.runtime.sendMessage({ action: "show_popup", data: "打开新页面" });
-  console.log(oldTarget);
+  console.log(jsRequests);
 }
 
 // window.addEventListener("click", function (e) {

+ 8 - 1
manifest.json

@@ -3,7 +3,14 @@
   "version": "1.0",
   "description": "Build an Extension!",
   "manifest_version": 3,
-  "permissions": ["tabs", "activeTab", "storage"],
+  "permissions": [
+    "storage",
+    "webRequest",
+    "webRequestBlocking",
+    "<all_urls>",
+    "activeTab",
+    "tabs"
+  ],
   "action": {
     "default_popup": "popup.html"
   },