From 5c6dc47d47c28c76465a3de8f4bd11863268ddcd Mon Sep 17 00:00:00 2001 From: eson Date: Mon, 23 Nov 2020 18:50:25 +0800 Subject: [PATCH] =?UTF-8?q?TODO:=20=E5=9B=9E=E8=B0=83=E6=B2=A1=E5=8F=8D?= =?UTF-8?q?=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + build.sh | 6 +++++- build_crx.sh | 2 ++ chromeproxy/background/worker.js | 24 ++++++++++++++++++------ chromeproxy/base.js | 10 ++++++++++ chromeproxy/content/inject.js | 22 +++++++++++++++------- start.sh | 7 +++++++ 7 files changed, 58 insertions(+), 14 deletions(-) create mode 100644 build_crx.sh create mode 100755 start.sh diff --git a/.gitignore b/.gitignore index e26f460..7ffa4a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ *.crx *.log +build diff --git a/build.sh b/build.sh index 13a30fb..bd82801 100644 --- a/build.sh +++ b/build.sh @@ -1 +1,5 @@ -google-chrome --pack-extension=./chromeproxy --pack-extension-key=./chromeproxy.pem +rm build/ -rf +mkdir -p ./build +cd proxyserver && go build && mv proxyserver ../build/ && cd .. +cp start.sh build/start.sh +cp proxyserver/config.yaml build/config.yaml diff --git a/build_crx.sh b/build_crx.sh new file mode 100644 index 0000000..78848d3 --- /dev/null +++ b/build_crx.sh @@ -0,0 +1,2 @@ + +google-chrome --pack-extension=./chromeproxy --pack-extension-key=./chromeproxy.pem diff --git a/chromeproxy/background/worker.js b/chromeproxy/background/worker.js index 4d9ff41..3277d77 100644 --- a/chromeproxy/background/worker.js +++ b/chromeproxy/background/worker.js @@ -8,8 +8,11 @@ function GetTask(sender) { response.json().then(function (task) { if(task.code == 200) { task_manager[sender.tab.id] = task; - chrome.tabs.executeScript(sender.tab.id, {runAt: "document_end", code: `window.location.href = "${task.data.url}"` }, function (results) { - }) + var execCode = `window.location.href = "${task.data.url}";` + if(task.data.content_condition) { + execCode += `PassContentCondition = ${task.data.content_condition};` + } + chrome.tabs.executeScript(sender.tab.id, {runAt: "document_end", code: execCode}) Tell(sender, InjectMsgType.FETCH); } else { Tell(sender, InjectMsgType.NOTASK); @@ -92,12 +95,21 @@ function Tell(sender, jnjectType) { // 配置使用的监听 chrome.webRequest.onBeforeRequest.addListener(function (details) { if (details.url.startsWith("http://eson.config")) { - var params = new URLSearchParams(details.url) + var params = new URL(details.url).searchParams; UpdateHost(params.get("taskurl")) - chrome.tabs.remove(details.tabId, function () { }); + chrome.tabs.remove(details.tabId); chrome.tabs.query({currentWindow: true}, function(tabs) { - for( tab in tabs) { - console.log(tab); + var count = 0 + for(var tab of tabs) { + if(!tab.url.startsWith("chrome://") ) { + count++; + chrome.tabs.executeScript(tab.id, {runAt: "document_end", code: `window.location.href = "${Host}"` }) + } else { + chrome.tabs.remove(tab.id); + } + } + for(var i = count; i < WorkerNumber;i++) { + chrome.tabs.create({url: `${Host}`}); } }) return { cancel: true }; diff --git a/chromeproxy/base.js b/chromeproxy/base.js index f695d03..1b7bb04 100644 --- a/chromeproxy/base.js +++ b/chromeproxy/base.js @@ -5,6 +5,16 @@ var GetTaskUrl = `${Host}/task/get`; var FinishTaskUrl = `${Host}/task/content`; var ErrorTaskUrl = `${Host}/task/error`; +var WorkerNumber = 10; + +var PassContentCondition = undefined; + +// 默认条件所有内容都获取 +var DefaultContentCondition = function () { + return true; + // return href.startsWith("https://playerduo.com") && content.startsWith('
')
+}
+
 function UpdateHost(host) {
     Host = host 
     GetTaskUrl = `${Host}/task/get`
diff --git a/chromeproxy/content/inject.js b/chromeproxy/content/inject.js
index 640ecf4..68fb15a 100644
--- a/chromeproxy/content/inject.js
+++ b/chromeproxy/content/inject.js
@@ -23,20 +23,28 @@ chrome.runtime.onMessage.addListener(function (request) {
 });
 
  
-var href = window.location.href;
-var content = document.documentElement.innerHTML;
-if (href.startsWith("https://playerduo.com") && content.startsWith('
')) {
+// var href = window.location.href;
+// var content = document.documentElement.innerHTML;
+
+var condition = PassContentCondition != undefined ? PassContentCondition : DefaultContentCondition;
+if (condition()) {
   Tell(BackgroundMsgType.CONTENT, content);
 } else {
   Tell(BackgroundMsgType.NOTWANT, content);
 }
 
 function Tell(backgroundType, content) {
-  if(content == undefined) {
-    chrome.runtime.sendMessage({type: backgroundType});
-  } else {
-    chrome.runtime.sendMessage({type: backgroundType, content: content});
+  try {
+    if(content == undefined) {
+      chrome.runtime.sendMessage({type: backgroundType});
+    } else {
+      chrome.runtime.sendMessage({type: backgroundType, content: content});
+    }
+  } catch (error) {
+    console.log(error);
+    window.location.href = Host;
   }
+
 }
 
 function GetTask() {
diff --git a/start.sh b/start.sh
new file mode 100755
index 0000000..19a56bc
--- /dev/null
+++ b/start.sh
@@ -0,0 +1,7 @@
+DISPLAY=:99
+
+screen -L -dmS google-chrome-web  google-chrome --load-extension=../chromeproxy  --user-data-dir=/tmp/chromeproxy-userdata --ignore-certificate-errors --disable-dev-shm-usage --mute-audio --safebrowsing-disable-auto-update --disable-gpu --no-sandbox --disable-blink-features=AutomationControlled --disable-infobars --allow-running-insecure-content --disable-features=TranslateUI --test-type --no-report-upload --display=$DISPLAY
+sleep 2s
+echo "启动浏览器..."
+screen -L -dmS proxyserver ./proxyserver
+echo "启动代理服务器..."