dsh-deepseek-web-login 0.6.18 → 0.6.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/lib/client.js +10 -7
- package/lib/client.js.map +1 -1
- package/lib/index.js +341 -26
- package/lib/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
本项目遵循大致语义化版本;日期为本地时间。
|
|
4
4
|
|
|
5
|
+
## 0.6.20 — 2026-10-01
|
|
6
|
+
|
|
7
|
+
**浏览器代理传输层:官方 DSH 桌面端也能走真实 Chrome 指纹。**
|
|
8
|
+
|
|
9
|
+
- 新增 `src/browser-transport.ts`:当 `electron.net.fetch` 不可用时,启动系统里的 Edge/Chrome 进程
|
|
10
|
+
(headless + 独立 profile),通过 CDP `Runtime.addBinding` 把请求代理给浏览器的 `fetch()`。
|
|
11
|
+
- 请求实际从浏览器网络栈发出,TLS/HTTP2 指纹与真实浏览器一致;响应通过 binding 分块传回 Node,
|
|
12
|
+
再包装成标准 `Response`(含 ReadableStream)。
|
|
13
|
+
- `transport.ts` 自动 fallback:electron.net.fetch → 系统浏览器代理 → Node fetch。
|
|
14
|
+
- 设置页提示更新:走浏览器代理时显示「通过系统 Edge/Chrome 进程代理」;无浏览器时才降级 Node。
|
|
15
|
+
- 新增回归用例 `tests/check-browser-transport.mjs`;保留 `DSH_NO_BROWSER_TRANSPORT=1` 测试开关。
|
|
16
|
+
- 传输层文案保持「Chrome 网络栈」(0.6.19)。
|
|
17
|
+
|
|
18
|
+
## 0.6.19 — 2026-10-01
|
|
19
|
+
|
|
20
|
+
**面板文案:传输层统一称为 Chrome 网络栈。**
|
|
21
|
+
|
|
22
|
+
- 设置页按钮、状态提示、切换反馈、降级提示、tooltip 中的「Chromium 网络栈」全部改为「Chrome 网络栈」,
|
|
23
|
+
与实际要模仿的指纹(Chrome)保持一致。
|
|
24
|
+
- tooltip 增加原因说明:官方 DSH 桌面端把插件跑成 `ELECTRON_RUN_AS_NODE=1` 的 Node 子进程,
|
|
25
|
+
拿不到 `electron.net.fetch`,因此不支持 Chrome 网络栈,只能降级为 Node fetch。
|
|
26
|
+
- 内部实现、传输层类型、默认值仍保持 `chromium` 不变(底层就是 Chromium 网络库,指纹与 Chrome 一致)。
|
|
27
|
+
|
|
5
28
|
## 0.6.18 — 2026-10-01
|
|
6
29
|
|
|
7
30
|
**修会话爆炸:token 刷新/内部请求不再冲掉 chat 的网页端会话。**
|
package/lib/client.js
CHANGED
|
@@ -2162,7 +2162,7 @@ background:var(--bg2);white-space:pre-wrap;font-size:12px}
|
|
|
2162
2162
|
const transportRow = el("div", "dsw-gate-row");
|
|
2163
2163
|
transportRow.append(el("span", "dsw-gate-label", "请求从哪出去"));
|
|
2164
2164
|
const transportBtns = {};
|
|
2165
|
-
for (const pair of [["chromium", "
|
|
2165
|
+
for (const pair of [["chromium", "Chrome 网络栈(推荐)"], ["node", "Node"]]) {
|
|
2166
2166
|
const key = pair[0];
|
|
2167
2167
|
const btn = el("button", "dsw-btn ghost dsw-preset", pair[1]);
|
|
2168
2168
|
btn.addEventListener("click", () => void saveTransport(key));
|
|
@@ -2304,12 +2304,15 @@ background:var(--bg2);white-space:pre-wrap;font-size:12px}
|
|
|
2304
2304
|
const requested = String(info.requested ?? info.effective ?? "chromium");
|
|
2305
2305
|
const effective = String(info.effective ?? requested);
|
|
2306
2306
|
for (const key of Object.keys(transportBtns)) transportBtns[key].classList.toggle("active", key === requested);
|
|
2307
|
-
const available = info.chromiumAvailable !== false;
|
|
2307
|
+
const available = info.chromiumAvailable !== false || info.browserAvailable !== false;
|
|
2308
2308
|
transportBtns.chromium.disabled = !available;
|
|
2309
|
-
transportBtns.chromium.title = available ? "" : "
|
|
2310
|
-
const parts = [effective === "chromium" ? "实际生效:
|
|
2311
|
-
if (info.degraded) parts.push("配置要求
|
|
2312
|
-
if (effective === "chromium")
|
|
2309
|
+
transportBtns.chromium.title = available ? "" : "本环境找不到 Edge/Chrome,也没有 electron.net.fetch,不支持 Chrome 网络栈";
|
|
2310
|
+
const parts = [effective === "chromium" ? "实际生效:Chrome 网络栈" : "实际生效:Node fetch"];
|
|
2311
|
+
if (info.degraded) parts.push("配置要求 Chrome,但本环境找不到 Edge/Chrome 也没有 electron.net.fetch,已降级为 Node");
|
|
2312
|
+
if (effective === "chromium") {
|
|
2313
|
+
if (info.viaBrowserProxy) parts.push("通过系统 Edge/Chrome 进程代理");
|
|
2314
|
+
else parts.push("cipher 列表哈希与 Chrome 一致、ALPN 走 h2");
|
|
2315
|
+
}
|
|
2313
2316
|
transportHint.textContent = parts.join(" · ");
|
|
2314
2317
|
transportProxyHint.textContent = String(info.hint ?? "");
|
|
2315
2318
|
};
|
|
@@ -2322,7 +2325,7 @@ background:var(--bg2);white-space:pre-wrap;font-size:12px}
|
|
|
2322
2325
|
});
|
|
2323
2326
|
if (result?.ok) {
|
|
2324
2327
|
applyTransportCard(result);
|
|
2325
|
-
transportMsg.textContent = `已切换到 ${result.effective === "chromium" ? "
|
|
2328
|
+
transportMsg.textContent = `已切换到 ${result.effective === "chromium" ? "Chrome 网络栈" : "Node fetch"},即时生效` + (result.persisted === false ? "(未能写入配置,重启后会回到上次保存的值)" : "(已写入配置,重启后仍生效)");
|
|
2326
2329
|
} else transportMsg.textContent = `切换失败:${result?.error ?? "未知原因"}`;
|
|
2327
2330
|
} catch (error) {
|
|
2328
2331
|
transportMsg.textContent = `切换失败:${error?.message ?? error}`;
|