feat: 未授权时在卡密输入框下方显示本机机器码(带一键复制)v1.8.2

解决用户找不到机器码的问题:去商城购买/手动激活/联系客服都需要提供机器码,现在未授权(试用/体验/异常)状态直接显示并可一键复制;已授权用户不显示,避免界面杂乱。
This commit is contained in:
personal82555 committed 2026-10-20 19:41:22 +08:00
1 parent 69b110ec78
commit a8e72eca54
7 files changed
+100 -7

No files matched your search

+6 -3
View File
@@ -2,7 +2,7 @@
> 一键搜索 · 自动点击 · 智能评论 —— 小红书运营引流的效率神器 > 一键搜索 · 自动点击 · 智能评论 —— 小红书运营引流的效率神器
[![版本](https://img.shields.io/badge/版本-1.8.1-ff2442.svg)](https://dl.88531.cn/xhs.html) [![版本](https://img.shields.io/badge/版本-1.8.2-ff2442.svg)](https://dl.88531.cn/xhs.html)
[![平台](https://img.shields.io/badge/平台-Chrome%20%7C%20Edge-4caf50.svg)](#安装方法) [![平台](https://img.shields.io/badge/平台-Chrome%20%7C%20Edge-4caf50.svg)](#安装方法)
[![语言](https://img.shields.io/badge/语言-纯%20JavaScript-2196f3.svg)](#开发说明) [![语言](https://img.shields.io/badge/语言-纯%20JavaScript-2196f3.svg)](#开发说明)
@@ -104,10 +104,13 @@
## 📜 版本历史 ## 📜 版本历史
当前版本:**1.8.1** 当前版本:**1.8.2**
<details> <details>
<summary>展开查看完整变更记录(v1.2.0 ~ v1.8.1)</summary> <summary>展开查看完整变更记录(v1.2.0 ~ v1.8.2)</summary>
### 1.8.2
- **未授权时显示机器码**:卡密输入框下方常驻展示本机机器码 + 一键复制,去商城购买或手动激活时直接粘贴,不用再翻文档问客服怎么找
### 1.8.1 ### 1.8.1
- **订单轮询 12 小时自动停止**:超过 12 小时仍未完成支付的订单不再后台追问,避免永久占用后台定时任务(与 B站评论助手行为一致) - **订单轮询 12 小时自动停止**:超过 12 小时仍未完成支付的订单不再后台追问,避免永久占用后台定时任务(与 B站评论助手行为一致)
+1 -1
View File
@@ -16,7 +16,7 @@ const DEFAULT_AI = {
const AUTH_BASE = 'https://auth.88531.cn'; const AUTH_BASE = 'https://auth.88531.cn';
const AUTH_PROJECT_ID = 3; const AUTH_PROJECT_ID = 3;
const AUTH_API_KEY = 'ak_bbf83b76df8219388d7f60b9e67c7db2'; const AUTH_API_KEY = 'ak_bbf83b76df8219388d7f60b9e67c7db2';
const CLIENT_VERSION = '1.8.1'; const CLIENT_VERSION = '1.8.2';
const TRIAL_MS = 72 * 60 * 60 * 1000; // 试用 72 小时(3 天) const TRIAL_MS = 72 * 60 * 60 * 1000; // 试用 72 小时(3 天)
const TRIAL_QUOTA = 100; // 试用期最多 100 条评论(时间/条数先到先停,防止白嫖薅量) const TRIAL_QUOTA = 100; // 试用期最多 100 条评论(时间/条数先到先停,防止白嫖薅量)
const GRACE_DAILY = 3; // 试用到期不硬锁:每天保留 3 条体验额度 const GRACE_DAILY = 3; // 试用到期不硬锁:每天保留 3 条体验额度
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"manifest_version": 3, "manifest_version": 3,
"name": "小红书自动评论助手", "name": "小红书自动评论助手",
"version": "1.8.1", "version": "1.8.2",
"description": "右侧侧边栏常驻的自动评论助手,支持试用/卡密授权、固定池/自定义文字/图片/AI评论", "description": "右侧侧边栏常驻的自动评论助手,支持试用/卡密授权、固定池/自定义文字/图片/AI评论",
"permissions": [ "permissions": [
"storage", "storage",
+1 -1
View File
@@ -16,7 +16,7 @@
</head> </head>
<body> <body>
<h1>小红书自动评论助手 · 隐私政策</h1> <h1>小红书自动评论助手 · 隐私政策</h1>
<div class="meta">生效日期:2026年10月10日 · 适用版本:v1.8.1 及以上</div> <div class="meta">生效日期:2026年10月10日 · 适用版本:v1.8.2 及以上</div>
<p>感谢使用「小红书自动评论助手」浏览器扩展(以下简称"本插件")。我们重视你的隐私。本页面说明本插件收集哪些信息、如何使用以及如何保护。</p> <p>感谢使用「小红书自动评论助手」浏览器扩展(以下简称"本插件")。我们重视你的隐私。本页面说明本插件收集哪些信息、如何使用以及如何保护。</p>
+40
View File
@@ -894,6 +894,46 @@ body {
background: linear-gradient(135deg, #f57c00, #ff9800); background: linear-gradient(135deg, #f57c00, #ff9800);
} }
.machine-code-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
margin-top: 6px;
font-size: 11px;
color: #999;
}
.machine-code-label {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.machine-code-label code {
font-family: "SF Mono", Consolas, "Courier New", monospace;
color: #666;
user-select: all;
}
.machine-code-copy {
flex: none;
padding: 2px 8px;
border: 1px solid #ddd;
border-radius: 4px;
background: #fff;
color: #888;
font-size: 11px;
cursor: pointer;
transition: all 0.2s ease;
}
.machine-code-copy:hover {
border-color: #bbb;
color: #444;
}
.buy-hint { .buy-hint {
margin-top: 8px; margin-top: 8px;
font-size: 12px; font-size: 12px;
+5 -1
View File
@@ -22,6 +22,10 @@
<button id="activate-btn" class="activate-btn">激活</button> <button id="activate-btn" class="activate-btn">激活</button>
<button id="buy-btn" class="buy-btn">购买授权</button> <button id="buy-btn" class="buy-btn">购买授权</button>
</div> </div>
<div class="machine-code-row" id="machine-code-row" hidden>
<span class="machine-code-label">机器码 <code id="machine-code-text"></code></span>
<button type="button" id="machine-code-copy" class="machine-code-copy">复制</button>
</div>
<div class="coupon-bar" id="coupon-bar" hidden> <div class="coupon-bar" id="coupon-bar" hidden>
<span class="coupon-text">⏰ 试用到期限时优惠:码 <b id="coupon-code">XHS24H</b> · <span id="coupon-percent">8 折</span> · 剩余 <b id="coupon-left">--:--:--</b></span> <span class="coupon-text">⏰ 试用到期限时优惠:码 <b id="coupon-code">XHS24H</b> · <span id="coupon-percent">8 折</span> · 剩余 <b id="coupon-left">--:--:--</b></span>
<button type="button" id="coupon-copy-btn" class="coupon-copy-btn">复制</button> <button type="button" id="coupon-copy-btn" class="coupon-copy-btn">复制</button>
@@ -199,7 +203,7 @@
<div class="footer"> <div class="footer">
<div class="version-info"> <div class="version-info">
<span>版本: 1.8.1</span> <span>版本: 1.8.2</span>
<span>侧边栏常驻 · 专注于自动评论</span> <span>侧边栏常驻 · 专注于自动评论</span>
</div> </div>
</div> </div>
+46
View File
@@ -644,6 +644,27 @@ class AutoCommentManager {
}); });
} }
// 机器码一键复制(未授权时展示在卡密输入框下方)
const machineCopyBtn = document.getElementById('machine-code-copy');
if (machineCopyBtn) {
machineCopyBtn.addEventListener('click', async () => {
const codeEl = document.getElementById('machine-code-text');
const code = (codeEl ? codeEl.textContent : '').trim();
if (!code) return;
try {
await navigator.clipboard.writeText(code);
} catch (error) {
const ta = document.createElement('textarea');
ta.value = code;
document.body.appendChild(ta);
ta.select();
document.execCommand('copy');
ta.remove();
}
this.showActionStatus(true, '✓ 机器码已复制,去商城购买或手动激活时粘贴即可');
});
}
// 后台复验或购买激活后自动刷新 // 后台复验或购买激活后自动刷新
chrome.storage.onChanged.addListener((changes, namespace) => { chrome.storage.onChanged.addListener((changes, namespace) => {
if (namespace !== 'local') return; if (namespace !== 'local') return;
@@ -695,6 +716,9 @@ class AutoCommentManager {
detail.textContent = '授权状态异常,请重新打开侧边栏'; detail.textContent = '授权状态异常,请重新打开侧边栏';
this.hideCouponBar(); this.hideCouponBar();
} }
// 未授权(试用/体验/异常)时在卡密输入框下方展示机器码,便于去商城购买或手动激活时提供
this.renderMachineCode(s.state !== 'authorized');
} catch (error) { } catch (error) {
console.error('获取授权状态失败:', error); console.error('获取授权状态失败:', error);
badge.classList.add('locked'); badge.classList.add('locked');
@@ -703,6 +727,28 @@ class AutoCommentManager {
} }
} }
// 机器码展示(未授权时显示在卡密输入框下方,可一键复制)
async renderMachineCode(show) {
const row = document.getElementById('machine-code-row');
const text = document.getElementById('machine-code-text');
if (!row || !text) return;
if (!show) {
row.hidden = true;
return;
}
try {
const { deviceId } = await chrome.storage.local.get(['deviceId']);
if (!deviceId) {
row.hidden = true;
return;
}
text.textContent = deviceId;
row.hidden = false;
} catch (error) {
row.hidden = true;
}
}
// 试用倒计时(精确到秒,每秒刷新) // 试用倒计时(精确到秒,每秒刷新)
startTrialCountdown(endAt, status) { startTrialCountdown(endAt, status) {
this.stopTrialCountdown(); this.stopTrialCountdown();