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 "启动代理服务器..."