feat: 谷歌浏览器插件

master
LCJ-MinYa 2 weeks ago
parent 094d6e56ef
commit eb3fdec481

@ -0,0 +1,52 @@
// background.js
console.log('✅ background.js 已加载');
console.log('✅ chrome 对象', chrome);
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
console.log('📬 收到消息:', request);
if (request.action === 'injectCookies') {
const { cookies, tabId } = request;
// 使用异步方式执行脚本
chrome.scripting
.executeScript({
target: { tabId: tabId },
func: function (cookies) {
// Cookie注入函数
const cookiePairs = cookies.split(';').map((pair) => pair.trim());
const cookieObj = {};
cookiePairs.forEach((pair) => {
const [key, value] = pair.split('=');
if (key && value) {
cookieObj[key] = value;
}
});
// 逐个设置 Cookie
Object.keys(cookieObj).forEach((key) => {
document.cookie = `${key}=${cookieObj[key]}; path=/`;
});
console.log('✅ Cookie 注入完成:', cookieObj);
},
args: [cookies],
})
.then(() => {
// 成功执行后的响应
sendResponse({ success: true, message: '注入成功' });
})
.catch((error) => {
// 错误处理
console.error('注入失败:', error);
sendResponse({ success: false, message: error.message || '未知错误' });
});
// 返回true表示异步响应
return true;
}
// 对于非injectCookies消息返回false
return false;
});

@ -0,0 +1,15 @@
{
"manifest_version": 3,
"name": "Auto Cookie Injector (All Pages)",
"version": "1.4",
"description": "在任何网页上点击插件,自动注入粘贴的 Cookie 字符串",
"permissions": ["activeTab", "cookies", "scripting"],
"host_permissions": ["<all_urls>"],
"background": {
"service_worker": "background.js"
},
"action": {
"default_popup": "popup.html",
"default_title": "注入 Cookie"
}
}

@ -0,0 +1,42 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>注入 Cookie</title>
<style>
body {
width: 300px;
padding: 15px;
font-family: Arial, sans-serif;
}
h3 {
margin-top: 0;
}
textarea,
button {
width: 100%;
margin-bottom: 10px;
}
button {
padding: 8px;
background: #007acc;
color: white;
border: none;
cursor: pointer;
}
button:hover {
background: #005a99;
}
</style>
</head>
<body>
<h3>🔧 Cookie 注入工具</h3>
<textarea
id="cookie"
placeholder="粘贴 Cookie 字符串token=abc; userId=123"
></textarea>
<button id="paste">📋 粘贴剪贴板</button>
<button id="inject">🚀 注入到当前页面</button>
<script src="popup.js"></script>
</body>
</html>

@ -0,0 +1,52 @@
// popup.js
document.addEventListener('DOMContentLoaded', () => {
const pasteBtn = document.getElementById('paste');
const injectBtn = document.getElementById('inject');
const cookieInput = document.getElementById('cookie');
pasteBtn.addEventListener('click', async () => {
try {
const clipboardText = await navigator.clipboard.readText();
cookieInput.value = clipboardText;
} catch (err) {
alert('❌ 无法读取剪贴板:' + err.message);
}
});
injectBtn.addEventListener('click', async () => {
const [tab] = await chrome.tabs.query({ active: true, currentWindow: true });
const cookies = cookieInput.value.trim();
if (!cookies) {
alert('请输入 Cookie 内容');
return;
}
try {
// ✅ 通过 message 发送给 background.js
// 使用 Promise 方式处理响应
const response = await new Promise((resolve) => {
chrome.runtime.sendMessage(
{
action: 'injectCookies',
cookies: cookies,
tabId: tab.id,
},
resolve
);
});
// 检查响应是否存在
if (response && response.success) {
alert('✅ Cookie 注入成功!');
} else if (response && response.message) {
alert('❌ 注入失败:' + response.message);
} else {
alert('❌ 注入失败:未知错误');
}
} catch (error) {
console.error('发送消息失败:', error);
alert('❌ 消息发送失败:' + error.message);
}
});
});
Loading…
Cancel
Save