Browse Source

能登录,也能获取登录结果

pull/1/head
xyiege 1 year ago
parent
commit
a274ba806a
  1. 48
      douyin/background.js
  2. 7
      douyin/manifest.json
  3. 4
      douyin/popup.html
  4. 77
      douyin/popup.js

48
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: '登录请求出错,请检查网络连接或稍后重试。' });
});
}
});

7
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"

4
douyin/popup.html

@ -21,6 +21,9 @@
</style>
</head>
<body>
<span class="userinfo" id="userinfo"></span>
<label for="username">账号:</label>
<input type="text" id="username" placeholder="输入账号">
@ -37,4 +40,5 @@
<button id="openLive">打开直播窗口</button>
<script src="popup.js"></script>
</body>
</html>

77
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('登录请求出错,请检查网络连接或稍后重试。');
});
}
});
}
});
});

Loading…
Cancel
Save