@fastls/fastls 0.10.1 → 0.10.2
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/README.md +23 -10
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# Fastls Node.js SDK
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Node.js 22+ 的 Fastls C ABI v1 绑定,提供 Promise API、TypeScript 声明、ESM 和 CommonJS 入口。本文对应正式版 **0.10.1**,发行文件与版本状态以 npm registry 为准。
|
|
3
|
+
Node.js 22+ 的 Fastls C ABI v1 绑定,提供 Promise API、TypeScript 声明、ESM 和 CommonJS 入口。本文对应 **0.10.1**。
|
|
6
4
|
|
|
7
5
|
支持 HTTP/1.1、HTTP/2、流式上传下载、双工、SSE、WebSocket、会话 Cookie 和 HTTP/HTTPS/SOCKS 代理。网络请求由 Go 执行,通过 Koffi 在当前 Node 进程中调用;使用者无需 Python 或 RPC 服务。
|
|
8
6
|
|
|
@@ -46,6 +44,27 @@ try {
|
|
|
46
44
|
|
|
47
45
|
源码构建、测试和发包见 [开发指南](DEVELOPMENT.md)。普通 npm 用户不需要这些步骤。
|
|
48
46
|
|
|
47
|
+
## 设置浏览器请求头
|
|
48
|
+
|
|
49
|
+
Python 0.1.4 / Node 0.10.1 所用的默认 `chrome/156/windows` 配置没有为 `Accept-Encoding`、`Accept-Language` 和 `Priority` 设置默认值。下面的示例显式补充它们;其它配置的默认值可能不同。
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
import { fetch } from '@fastls/fastls';
|
|
53
|
+
|
|
54
|
+
const response = await fetch('https://tls.peet.ws/api/all', {
|
|
55
|
+
profile: 'chrome/156/windows',
|
|
56
|
+
headers: {
|
|
57
|
+
'Accept-Encoding': 'gzip, deflate, br, zstd',
|
|
58
|
+
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
|
|
59
|
+
'Priority': 'u=0, i',
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
if (!response.ok) throw new Error(`HTTP ${response.status}`);
|
|
63
|
+
console.log(await response.json());
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`Accept-Language` 表示语言偏好,请按应用需要调整;`Priority` 的值也与请求场景有关,示例不是所有浏览器请求的固定模板。请求头顺序配置只排列已有字段,不会为其中的字段自动生成值。支持自动解压 gzip/deflate/br/zstd,不等于会自动发送对应的 `Accept-Encoding`。显式传入的头值优先于配置默认值;复用会话时,也可通过 Session 的 `headers` 设置。
|
|
67
|
+
|
|
49
68
|
## 从 Node fetch 迁移
|
|
50
69
|
|
|
51
70
|
新增 `fetch` 入口沿用 Node 原生 fetch 的主要调用习惯,并增加指纹、代理和证书配置:
|
|
@@ -200,16 +219,10 @@ Session和请求的`proxy`接受URL字符串或null。请求省略或undefined
|
|
|
200
219
|
|
|
201
220
|
`proxyCaFile`只控制HTTPS代理信任,`caFile`只控制目标信任,两者互不代替。未设置代理CA使用系统根;提供文件则替换系统根。构造Session时读取默认代理CA一次,请求指定路径时重新读取;请求undefined继承默认,null恢复系统根。直连、HTTP和SOCKS忽略代理CA默认值及请求覆盖。代理地址及凭据、profile、代理CA和目标CA共同隔离连接池。目标证书仍需验证;目标请求禁止设置Proxy-Authorization和Proxy-Connection。认证只用于代理握手,错误消息不回显凭据或代理任意响应短语。握手计入connect和total预算,AbortSignal取消会关闭未建立的隧道;取消单条H2流继续复用健康的共享隧道。代理拒绝后不降级或自动重试。
|
|
202
221
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
`npm run test:proxy:soak`默认以32路并发运行60秒,轮换正常请求、共享H2流取消、错误认证和停滞握手取消;四种scheme分别使用真实loopback代理。FASTLS_NODE_PROXY_SOAK_SECONDS可设为1..300。Linux当前Go/Node组合执行该独立测试,沿用现有RSS、Go堆、goroutine及句柄阈值,逐批记录写入build/node-proxy-recovery-*.json,不计入231项主套件。
|
|
206
|
-
|
|
207
|
-
代理独立长测与SSE长测一样,显式使用`--max-semi-space-size=16`固定测试进程的V8半空间上限。本机Windows Node24默认策略在持续分配时将new_space保留空间从4MiB扩大至128MiB,而Go堆、原生请求和隧道已回收。该参数仅作用于独立测试进程,不修改SDK用户进程的运行配置,也不放宽RSS或句柄阈值。证据保存运行参数、V8空间快照,以及阈值判定之后的完整GC诊断;判定使用GC前的最终采样。
|
|
222
|
+
代理测试和资源长测的运行方式见 [开发说明](https://github.com/FastTLS/fastls-ffi/blob/main/node/DEVELOPMENT.md#代理长测)。
|
|
208
223
|
|
|
209
224
|
私有HTTPS代理示例:`new Session({ proxy: 'https://proxy.example:443', proxyCaFile: '/path/to/proxy-ca.pem', caFile: '/path/to/target-ca.pem' })`。两类CA分别验证代理与目标;请求可用`{ proxyCaFile: null }`恢复代理系统信任,或指定其它代理CA文件,均不会复用不相符的已有隧道。
|
|
210
225
|
|
|
211
|
-
代理长测按靶场握手阶段同步取消,避免固定毫秒计时在慢runner上提前中止TLS而未触达待测CONNECT阶段。HTTPS靶场延迟50毫秒处理CONNECT,确保该时序在本地也能覆盖。H2可合并同一代理的在途建连;每批每种scheme至少触发一次真实握手取消,并逐批核对启动/回收计数,不依赖请求数等于物理建连数。资源阈值保持不变。
|
|
212
|
-
|
|
213
226
|
## HTTP/2 双工
|
|
214
227
|
|
|
215
228
|
`duplex: true` 允许响应头到达后继续上传,可同时读取响应。仅支持 HTTP/2,并始终禁止自动重定向;普通上传仍拒绝未完成上传时提前返回的 2xx。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fastls/fastls",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"description": "Node.js bindings for the Fastls C ABI",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -35,10 +35,10 @@
|
|
|
35
35
|
"registry": "https://registry.npmjs.org/"
|
|
36
36
|
},
|
|
37
37
|
"optionalDependencies": {
|
|
38
|
-
"@fastls/fastls-win32-x64": "0.10.
|
|
39
|
-
"@fastls/fastls-linux-x64-glibc": "0.10.
|
|
40
|
-
"@fastls/fastls-linux-arm64-glibc": "0.10.
|
|
41
|
-
"@fastls/fastls-darwin-x64": "0.10.
|
|
42
|
-
"@fastls/fastls-darwin-arm64": "0.10.
|
|
38
|
+
"@fastls/fastls-win32-x64": "0.10.2",
|
|
39
|
+
"@fastls/fastls-linux-x64-glibc": "0.10.2",
|
|
40
|
+
"@fastls/fastls-linux-arm64-glibc": "0.10.2",
|
|
41
|
+
"@fastls/fastls-darwin-x64": "0.10.2",
|
|
42
|
+
"@fastls/fastls-darwin-arm64": "0.10.2"
|
|
43
43
|
}
|
|
44
44
|
}
|