From ccb30377b5446a230843d417a913fe9a76466641 Mon Sep 17 00:00:00 2001 From: "453530270@qq.com" Date: Tue, 8 Oct 2024 17:25:51 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=B0=9D=E8=AF=95=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- douyin/popup.html | 2 ++ douyin/popup.js | 92 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 92 insertions(+), 2 deletions(-) diff --git a/douyin/popup.html b/douyin/popup.html index 1c50e2b..a35ec76 100644 --- a/douyin/popup.html +++ b/douyin/popup.html @@ -27,6 +27,8 @@ + + diff --git a/douyin/popup.js b/douyin/popup.js index 2089189..5887a6e 100644 --- a/douyin/popup.js +++ b/douyin/popup.js @@ -1,16 +1,34 @@ +var usernameInput = document.getElementById('username'); +var passwordInput = document.getElementById('password'); + +// DOM 载入完成 document.addEventListener('DOMContentLoaded', function() { var openIncognitoButton = document.getElementById('openIncognito'); - var usernameInput = document.getElementById('username'); - var passwordInput = document.getElementById('password'); openIncognitoButton.addEventListener('click', function() { const username = usernameInput.value; const password = passwordInput.value; + // 发送消息到后台脚本以打开隐身窗口 chrome.runtime.sendMessage({ action: 'openIncognitoDouyin', username: username, password: password + }, function(response) { + if (response && response.success) { + console.log('隐身窗口已打开,准备提交登录'); + // 这里可以添加提交登录的逻辑 + // 例如:向新打开的窗口发送消息,执行登录操作 + chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { + chrome.tabs.sendMessage(tabs[0].id, { + action: 'submitLogin', + username: username, + password: password + }); + }); + } else { + console.error('打开隐身窗口失败'); + } }); }); @@ -21,4 +39,74 @@ document.addEventListener('DOMContentLoaded', function() { chrome.runtime.sendMessage({ action: 'openLiveIncognito', url: liveUrl }); } }); + + //登录按钮 + const loginButton = document.getElementById('login'); + // const loginTimeInput = document.getElementById('loginTime'); + // const loginTime = loginTimeInput.value; + + + loginButton.addEventListener('click', function() { + const username = usernameInput.value; + const password = passwordInput.value; + + if (!username || !password) { + alert('请输入账号和密码!'); + return; + }else{ + performLogin(username, password); + } + // performLogin(username, password); + + // if (!loginTime) { + // // 如果没有设置登录时间,立即执行登录 + // performLogin(username, password); + // } else { + // // 如果设置了登录时间,计算延迟并设置定时器 + // const now = new Date(); + // const loginDateTime = new Date(now.toDateString() + ' ' + loginTime); + // const delay = loginDateTime.getTime() - now.getTime(); + + // if (delay < 0) { + // alert('登录时间已过,请重新设置!'); + // return; + // } + + // alert(`登录将在 ${loginTime} 进行,请保持浏览器打开。`); + // setTimeout(() => performLogin(username, password), delay); + // } + }); + + function performLogin(username, password) { + console.log(`正在执行登录,用户名:${username}`); + + // 创建要发送的数据对象 + const loginData = { + username: username, + password: password + }; + + // 使用 fetch API 发送 POST 请求 + fetch('https://douyin.xingtongworld.com/api/passport/login', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(loginData) + }) + .then(response => response.json()) + .then(data => { + console.log('登录结果:', data); + if (data.status === 200) { + alert('登录成功!'); + // 这里可以添加登录成功后的操作 + } else { + alert('登录失败:' + data.message); + } + }) + .catch(error => { + console.error('登录请求出错:', error); + alert('登录请求出错,请检查网络连接或稍后重试。'); + }); + } }); \ No newline at end of file From 9a8bf15dda4cd67e208ee62356890c8bd1755727 Mon Sep 17 00:00:00 2001 From: "453530270@qq.com" Date: Wed, 9 Oct 2024 10:25:22 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=B7=B2=E7=BB=8F=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- douyin/popup.js | 42 +++++++++++++++--------------------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/douyin/popup.js b/douyin/popup.js index 5887a6e..3c35a39 100644 --- a/douyin/popup.js +++ b/douyin/popup.js @@ -56,52 +56,40 @@ document.addEventListener('DOMContentLoaded', function() { }else{ performLogin(username, password); } - // performLogin(username, password); - - // if (!loginTime) { - // // 如果没有设置登录时间,立即执行登录 - // performLogin(username, password); - // } else { - // // 如果设置了登录时间,计算延迟并设置定时器 - // const now = new Date(); - // const loginDateTime = new Date(now.toDateString() + ' ' + loginTime); - // const delay = loginDateTime.getTime() - now.getTime(); - - // if (delay < 0) { - // alert('登录时间已过,请重新设置!'); - // return; - // } - - // alert(`登录将在 ${loginTime} 进行,请保持浏览器打开。`); - // setTimeout(() => performLogin(username, password), delay); - // } }); + + function performLogin(username, password) { console.log(`正在执行登录,用户名:${username}`); - // 创建要发送的数据对象 const loginData = { - username: username, - password: password + uname: username, + upass: password }; - // 使用 fetch API 发送 POST 请求 - fetch('https://douyin.xingtongworld.com/api/passport/login', { + fetch('https://douyin.xingtongworld.com/api/passport/login?t=crx', { method: 'POST', headers: { - 'Content-Type': 'application/json' + 'Content-Type': 'application/json', + 'Accept': 'application/json' }, body: JSON.stringify(loginData) }) - .then(response => response.json()) + .then(response => { + console.log('Response status:', response.status); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + return response.json(); + }) .then(data => { console.log('登录结果:', data); if (data.status === 200) { alert('登录成功!'); // 这里可以添加登录成功后的操作 } else { - alert('登录失败:' + data.message); + alert('登录失败:' + (data.message || '未知错误')); } }) .catch(error => { From a274ba806a960cc1ecd7e4b7edc25d434612a3cb Mon Sep 17 00:00:00 2001 From: "453530270@qq.com" Date: Wed, 9 Oct 2024 11:29:44 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=83=BD=E7=99=BB=E5=BD=95=EF=BC=8C?= =?UTF-8?q?=E4=B9=9F=E8=83=BD=E8=8E=B7=E5=8F=96=E7=99=BB=E5=BD=95=E7=BB=93?= =?UTF-8?q?=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- douyin/background.js | 48 +++++++++++++++++++++++++++ douyin/manifest.json | 7 +++- douyin/popup.html | 4 +++ douyin/popup.js | 77 ++++++++++++++++---------------------------- 4 files changed, 85 insertions(+), 51 deletions(-) diff --git a/douyin/background.js b/douyin/background.js index 95ebb56..8c0dcba 100644 --- a/douyin/background.js +++ b/douyin/background.js @@ -21,4 +21,52 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { console.log('直播隐身窗口已打开'); }); } + + //执行登录 + if (request.action === 'login') { + console.log('收到登录请求'); + // 登录数据 + const loginData = { + uname: request.username, + upass: request.password + }; + // 在这里处理登录逻辑 + fetch('https://douyin.xingtongworld.com/api/passport/login?t=crx', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(loginData) + }) + .then(response => response.json()) + .then(data => { + console.log('登录结果:', data); + if (data.status === 200) { + + // 这里可以添加登录成功后的操作 + sendResponse({ status: 'success' }); + // 保存登录状态 + chrome.storage.local.set({ loginStatus: true }); + // 保存登录信息 + chrome.storage.local.set({ loginInfo: loginData }); + // 保存登录时间 + chrome.storage.local.set({ loginTime: new Date().toLocaleString() }); + // 保存登录token + chrome.storage.local.set({ loginToken: data.token }); + // 保存登录cookie + chrome.cookies.set({ + url: 'https://douyin.xingtongworld.com', + name: 'sessionid', + value: data.token, + domain: 'douyin.xingtongworld.com' + }); + } else { + sendResponse({ status: 'error', message: '登录失败:' + (data.message || '未知错误') }); + } + }) + .catch(error => { + console.error('登录请求出错:', error); + sendResponse({ status: 'error', message: '登录请求出错,请检查网络连接或稍后重试。' }); + }); + } }); \ No newline at end of file diff --git a/douyin/manifest.json b/douyin/manifest.json index 0800d70..11f1a66 100644 --- a/douyin/manifest.json +++ b/douyin/manifest.json @@ -5,7 +5,12 @@ "description": "控制浏览器打开抖音隐身窗口和指定直播窗口的扩展", "permissions": [ "tabs", - "storage" + "storage", + "windows", + "cookies" + ], + "host_permissions": [ + "https://douyin.xingtongworld.com/" ], "background": { "service_worker": "background.js" diff --git a/douyin/popup.html b/douyin/popup.html index a35ec76..a8bcaaa 100644 --- a/douyin/popup.html +++ b/douyin/popup.html @@ -21,6 +21,9 @@ + + + @@ -37,4 +40,5 @@ + \ No newline at end of file diff --git a/douyin/popup.js b/douyin/popup.js index 3c35a39..91cfe54 100644 --- a/douyin/popup.js +++ b/douyin/popup.js @@ -1,10 +1,20 @@ var usernameInput = document.getElementById('username'); var passwordInput = document.getElementById('password'); + // 如果已经登录,提取local中信息 + chrome.storage.local.get(['loginStatus', 'loginInfo'], function(data) { + if (data.loginStatus) { + document.getElementById('userinfo').textContent = '已登录:' + data.loginInfo.uname; + } + }); + // DOM 载入完成 document.addEventListener('DOMContentLoaded', function() { - var openIncognitoButton = document.getElementById('openIncognito'); + const openIncognitoButton = document.getElementById('openIncognito'); + const openLiveButton = document.getElementById('openLive'); + const loginButton = document.getElementById('login'); + // 打开抖音 openIncognitoButton.addEventListener('click', function() { const username = usernameInput.value; const password = passwordInput.value; @@ -17,8 +27,7 @@ document.addEventListener('DOMContentLoaded', function() { }, function(response) { if (response && response.success) { console.log('隐身窗口已打开,准备提交登录'); - // 这里可以添加提交登录的逻辑 - // 例如:向新打开的窗口发送消息,执行登录操作 + // 向新打开的窗口发送消息,执行登录操作 chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { chrome.tabs.sendMessage(tabs[0].id, { action: 'submitLogin', @@ -32,7 +41,8 @@ document.addEventListener('DOMContentLoaded', function() { }); }); - document.getElementById('openLive').addEventListener('click', () => { + // 打开直播间 + openLiveButton.addEventListener('click', () => { const liveId = document.getElementById('liveId').value; if (liveId) { const liveUrl = `https://live.douyin.com/${liveId}`; @@ -40,12 +50,7 @@ document.addEventListener('DOMContentLoaded', function() { } }); - //登录按钮 - const loginButton = document.getElementById('login'); - // const loginTimeInput = document.getElementById('loginTime'); - // const loginTime = loginTimeInput.value; - - + // 登录 loginButton.addEventListener('click', function() { const username = usernameInput.value; const password = passwordInput.value; @@ -53,48 +58,20 @@ document.addEventListener('DOMContentLoaded', function() { if (!username || !password) { alert('请输入账号和密码!'); return; - }else{ - performLogin(username, password); + } else { + // 发送到后台打开 + chrome.runtime.sendMessage({ action: 'login', username: username, password: password }); } }); - - - function performLogin(username, password) { - console.log(`正在执行登录,用户名:${username}`); - - const loginData = { - uname: username, - upass: password - }; - - fetch('https://douyin.xingtongworld.com/api/passport/login?t=crx', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json' - }, - body: JSON.stringify(loginData) - }) - .then(response => { - console.log('Response status:', response.status); - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - return response.json(); - }) - .then(data => { - console.log('登录结果:', data); - if (data.status === 200) { - alert('登录成功!'); - // 这里可以添加登录成功后的操作 + // 监听登录结果 + chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) { + if (request.action === 'loginResult') { + if (request.status === 'success') { + document.getElementById('userinfo').textContent = '已登录:' + request.uname; } else { - alert('登录失败:' + (data.message || '未知错误')); + alert('登录失败:' + request.message); } - }) - .catch(error => { - console.error('登录请求出错:', error); - alert('登录请求出错,请检查网络连接或稍后重试。'); - }); - } -}); \ No newline at end of file + } + }); +}); From 5e257394a744eacefdd6594bb75760c3e6e69f14 Mon Sep 17 00:00:00 2001 From: "453530270@qq.com" Date: Wed, 9 Oct 2024 11:44:21 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- douyin.crx | Bin 0 -> 3854 bytes douyin.pem | 28 ++++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 douyin.crx create mode 100644 douyin.pem diff --git a/douyin.crx b/douyin.crx new file mode 100644 index 0000000000000000000000000000000000000000..26a7fe3fc45f303a9abb3ddbc0e323528ff38382 GIT binary patch literal 3854 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 Tq-1~gNG{jX<=IC4=k0$0yUOCM literal 0 HcmV?d00001 diff --git a/douyin.pem b/douyin.pem new file mode 100644 index 0000000..a44189f --- /dev/null +++ b/douyin.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC1WOXpW/M8pE1s +IHSIrWmrZnS9X5ltvlxgix2O5M1SSBHhbR3tGXmmCJoBri2UHM7jgelTrvI7llXm +ebJ69sDnxMF54OO5D4f8E1YNaRzkSKoKv8Wlp8ae2h4JB3geedVqXHBEVINx9t0U +vDTeDK2k9/ICLqEtBqIwkYlMD3hRzJm4pEHaSAT29VhBAq+hQvHuVfMZn+6EFno8 +PNr5iICXHegl4cG1cXTDit8W6dh+t3vVBTHqQLbzB4PikdorzHwCuCRt+H88Ewjq +dz6jFizFhTFhQYiSBri179SQIl61sWMLZgw63fwnJstcfQ2greBDymJHfJpgIyf7 +lVzX9W/DAgMBAAECggEAQlZGKCKcLCs4LR0EM/knhe0BOELvx57SgPhytBJLb1Vw +wQMe5twiTVOpLoMuJheRsNSVayi8cIKyYpBS8zsvXrjxQ2m6M7iUOGhEWryANpvE +JBF5tfrVI8fLI+dpD9DmejVdVgmKWdaBkfO07SM7I/UVQKoZCHT8QIMEc9/W1ii/ +pSRmtREIi5tYuUnx97p18I1p7Ww/2+0EnHp7Bl3qE18SqXip8ru6UJGdust6jdc7 +Y+395ioAIoKzmGW3XgwO9SYNKgH6uQkkPLdrAfohjB5t1WMR7h7rWH+gv+Npa4Zj +AjnibT/T6sIWlxNTlnyYH6fqkoRl9aQz2oRx4dNGnQKBgQD+WHCRhz4PLs2JDZaJ +sFtk8t6oFruPV0ORjROado0uzU5ju6sOtLKMedKlKEZUOpeZRqCSOWDJ31nb+Bs0 +jr2FBNCyTxRaTGEnwmY0wPAWAfKk1g4NaBTbm7+ysM8/uf+QTAaD4S3wdFhzXiyG +d/PcW/N9EHt3++qZpEVnJ+skDQKBgQC2huUR+q1sukpqK6hMFoUm+0Ue2NErPREu +EUozSbrVOJe6L5Bo6VpKAjpkvNvfs8v7XE06p6/dT1yrW85+6tSYp/a5K02pNy2J +2dhe+HBG+XpBiky/kAsJ20luqTW7CfEWX34Q56/k+NyrpY5de6oMvqWYiJfvjmeJ +M88B+yPfDwKBgQCfY/D3YheEEEKBtuA13S0JMCJUmBpmE7umRRCZ5d1IDSUo3vyt +tJOH8PgOxBR+yFEkntwVhpufJrb7YJo774/ZAlF+zIvmoqLn9a1zNc2/HO1gWzxn +LmiTzyDs7FyUhQ0g8mPK1ZyiaWbctZGVmypZV85Y+7FEWbyFGCreIGf9KQKBgQCW +auQrxOFWUM8yX3f5/DUOwtNbcGIvt8uIo0b6rTACtviSvs/LJUL66oskqV6pI4pe +QtqCE96iCtzbenTZsrwwcXqpbj45zPcCOzxMR4B/fOh7SnWlCBeQr938DAXzdWXw +ghFp7QTPNSblbTG9aEPi7NmasjZDfJ9mOgPGJiiRkQKBgQCJ4yCbNgQFvTEjQUn+ +gJXWHjKGqNn7XTM4yWPbjvkYKuFYzUaa5V3XME8kyTc18zBZQuvcMIvkduq+jnow +o2NASeEjhdJgAaMyjqpz2Adesuym6YdUAURvrew3eZAqtvv7ZHAbqD0NTVaTwX1P +HmlLE6zIqcuhUMSuTkyrQe3lqQ== +-----END PRIVATE KEY-----