var userInfo = {} var tempData = null var openList = {} if (localStorage.getItem('owoOpenList')) { openList = JSON.parse(localStorage.getItem('owoOpenList')) } function saveOpenList () { localStorage.setItem('owoOpenList', JSON.stringify(openList)) } function reloadUser (callBack) { chrome.storage.sync.get('userInfo', function(data) { // alert(data) userInfoTemp = data.userInfo if (!userInfoTemp) return username = userInfoTemp.username password = userInfoTemp.password if (username && password) { fetch(`http://user.lamp.run/login`, { method: 'POST', headers: { "Content-Type": "application/json" }, body: JSON.stringify({ type: "assist", username: username, password: password }) }).then((response) => {return response.json();}).then((res) => { if (res.err === 0) { userInfo = res.data if (callBack) callBack() } }) } }) } reloadUser() // 对数据进行处理 function clearData (data) { let returnData = [] data.forEach(element => { if (openList[element.id] || element.type == 'autoRun') { returnData.push(element) } }) return returnData } function reGetData (url, callBack) { const nowTime = Date.parse(new Date()) const serverUrl = 'https://assist.lamp.run/assistAll' fetch(`${serverUrl}?username=` + (userInfo.username || ''), { method: 'POST', body: JSON.stringify({ "edition": 7, "url": url }), redirect: 'follow' }).then(data => data.json()).then(dataTemp => { tempData = { time: nowTime, data: dataTemp } if (callBack) callBack(dataTemp) }) } // 监听消息 chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) { // console.log(message) switch (message.name) { case 'getData': const nowTime = Date.parse(new Date()) // 缓存 if (tempData && (tempData.time + 60 * 60 * 1000) > nowTime) { // console.log('使用缓存返回!', tempData) sendResponse(clearData(tempData.data)) } else { reGetData(message.url, (dataTemp) => { sendResponse(clearData(dataTemp)) }) } break; case 'clear': tempData = null fetch(`http://cunchu.site/data/blockList.json`).then(data => data.json()).then(dataTemp => { blockListTemp = dataTemp chrome.storage.sync.set({userInfo: {}}) userInfo = {} lanjie(dataTemp) sendResponse() }) case 'reloadUser': setTimeout(() => { reloadUser(() => { reGetData('') }) }, 100); default: break; } return true }) var blockListTemp = null if (blockListTemp != null) { lanjie(blockListTemp) } else { fetch(`http://cunchu.site/data/blockList.json`).then(data => data.json()).then(dataTemp => { blockListTemp = dataTemp lanjie(dataTemp) }) } function lanjie (blockList) { // 拦截请求 chrome.webRequest.onBeforeRequest.addListener( function(details) { for (const key in blockList) { if (details.url.includes(key) || new RegExp(key).test(details.url) || details.url == key) { console.log(`拦截请求:${details.url}`) console.log(`替换请求:${blockList[key]}`) return { redirectUrl: blockList[key] } } } return { cancel: false }; }, {urls: [""]}, ["blocking"] ) } chrome.runtime.onMessageExternal.addListener( function(request, sender, sendResponse) { console.log(request) switch (request.name) { case 'sendMessage': var myHeaders = new Headers(); myHeaders.append("Content-Type", "application/json"); var raw = JSON.stringify({ "first": { "value": "插件提示", "color": "#173177" }, "keyword1": { "value": request.keyword1, "color": "#173177" }, "keyword2": { "value": request.keyword1, "color": "#173177" }, "keyword3": { "value": (new Date()).toLocaleString(), "color": "#173177" }, "remark": { "value": request.remark, "color": "#173177" } }); var requestOptions = { method: 'POST', headers: myHeaders, body: raw, redirect: 'follow' }; fetch(`https://message.lamp.run/workWeixin?type=${request.type}&template=EvpHwEBpG2rkLHYMtIH2ADww9JCQwEaWlTAqyoPF6xQ`, requestOptions) .then(response => response.text()) .then(result => console.log(result)) .catch(error => console.log('error', error)); case 'notifications': chrome.notifications.create(null, { type: 'basic', iconUrl: 'img/48.png', title: request.title, message: request.message }); case 'playMusic': let musicUrl = request.url ? request.url : 'https://cunchu.site/work/assist/lingyin.wav' new Audio(musicUrl).play() default: break; } sendResponse('ok') } ); // function logResponse(responseDetails) { // console.log(responseDetails); // } // chrome.webRequest.onCompleted.addListener( // logResponse, // {urls: [""]} // );