Files
xueqiu_sync/chrome-extension/content.js
T
2026-06-15 10:06:03 +08:00

49 lines
1.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// content.js — 在 xueqiu.com 页面里跑,document.cookie 读非 HttpOnly 的 cookie
// 然后缓存起来等 popup 来取。
// 注意:document.cookie 读不到 HttpOnlyxq_a_token 是 HttpOnly 拿不到)
// 但能拿到 u、device_id 等普通 cookie,作为辅助数据。
(function () {
const PAGE_CACHE_KEY = "__xueqiu_sync_page_cache__";
const TTL_MS = 30_000;
function read() {
const out = { url: location.href, cookies: {}, ts: Date.now() };
try {
const pairs = document.cookie.split(";");
for (const p of pairs) {
const idx = p.indexOf("=");
if (idx > 0) {
const k = p.slice(0, idx).trim();
const v = decodeURIComponent(p.slice(idx + 1).trim());
if (k) out.cookies[k] = v;
}
}
} catch (_) {}
return out;
}
function update() {
try {
window[PAGE_CACHE_KEY] = read();
} catch (_) {}
}
update();
// 兜底:每 5s 刷一次,捕获导航/SPA 切换
setInterval(update, 5000);
// 响应 popup 的查询
chrome.runtime.onMessage.addListener((msg, _sender, sendResponse) => {
if (msg && msg.type === "xueqiu_sync/get_page_cookies") {
let cache = window[PAGE_CACHE_KEY];
if (!cache || Date.now() - cache.ts > TTL_MS) {
cache = read();
window[PAGE_CACHE_KEY] = cache;
}
sendResponse(cache);
return true;
}
});
})();