Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
51fd1bc1b4 |
No files matched your search
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
> 一键搜索 · 自动点击 · 智能评论 —— 小红书运营引流的效率神器
|
> 一键搜索 · 自动点击 · 智能评论 —— 小红书运营引流的效率神器
|
||||||
|
|
||||||
[](https://dl.88531.cn/xhs.html)
|
[](https://dl.88531.cn/xhs.html)
|
||||||
[](#安装方法)
|
[](#安装方法)
|
||||||
[](#开发说明)
|
[](#开发说明)
|
||||||
|
|
||||||
@@ -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
@@ -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
@@ -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
@@ -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>
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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>
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
Reference in new issue
Block a user