webpeel 0.16.0 → 0.17.0

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.
Files changed (113) hide show
  1. package/LICENSE +11 -657
  2. package/README.md +246 -325
  3. package/dist/cli.js +330 -73
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/browser-fetch.d.ts +12 -0
  6. package/dist/core/browser-fetch.d.ts.map +1 -1
  7. package/dist/core/browser-fetch.js +70 -17
  8. package/dist/core/browser-fetch.js.map +1 -1
  9. package/dist/core/cf-worker-proxy.d.ts +33 -0
  10. package/dist/core/cf-worker-proxy.d.ts.map +1 -0
  11. package/dist/core/cf-worker-proxy.js +88 -0
  12. package/dist/core/cf-worker-proxy.js.map +1 -0
  13. package/dist/core/chunker.d.ts +47 -0
  14. package/dist/core/chunker.d.ts.map +1 -0
  15. package/dist/core/chunker.js +250 -0
  16. package/dist/core/chunker.js.map +1 -0
  17. package/dist/core/cloak-fetch.d.ts +43 -0
  18. package/dist/core/cloak-fetch.d.ts.map +1 -0
  19. package/dist/core/cloak-fetch.js +141 -0
  20. package/dist/core/cloak-fetch.js.map +1 -0
  21. package/dist/core/crawl-checkpoint.d.ts +55 -0
  22. package/dist/core/crawl-checkpoint.d.ts.map +1 -0
  23. package/dist/core/crawl-checkpoint.js +105 -0
  24. package/dist/core/crawl-checkpoint.js.map +1 -0
  25. package/dist/core/crawler.d.ts +5 -1
  26. package/dist/core/crawler.d.ts.map +1 -1
  27. package/dist/core/crawler.js +60 -5
  28. package/dist/core/crawler.js.map +1 -1
  29. package/dist/core/cycle-fetch.d.ts +27 -0
  30. package/dist/core/cycle-fetch.d.ts.map +1 -0
  31. package/dist/core/cycle-fetch.js +99 -0
  32. package/dist/core/cycle-fetch.js.map +1 -0
  33. package/dist/core/domain-extractors.d.ts.map +1 -1
  34. package/dist/core/domain-extractors.js +754 -14
  35. package/dist/core/domain-extractors.js.map +1 -1
  36. package/dist/core/google-cache.d.ts +30 -0
  37. package/dist/core/google-cache.d.ts.map +1 -0
  38. package/dist/core/google-cache.js +181 -0
  39. package/dist/core/google-cache.js.map +1 -0
  40. package/dist/core/markdown.d.ts +11 -0
  41. package/dist/core/markdown.d.ts.map +1 -1
  42. package/dist/core/markdown.js +43 -0
  43. package/dist/core/markdown.js.map +1 -1
  44. package/dist/core/peel-tls.d.ts +26 -0
  45. package/dist/core/peel-tls.d.ts.map +1 -0
  46. package/dist/core/peel-tls.js +221 -0
  47. package/dist/core/peel-tls.js.map +1 -0
  48. package/dist/core/pipeline.d.ts +5 -1
  49. package/dist/core/pipeline.d.ts.map +1 -1
  50. package/dist/core/pipeline.js +269 -21
  51. package/dist/core/pipeline.js.map +1 -1
  52. package/dist/core/schema-postprocess.d.ts +33 -0
  53. package/dist/core/schema-postprocess.d.ts.map +1 -0
  54. package/dist/core/schema-postprocess.js +470 -0
  55. package/dist/core/schema-postprocess.js.map +1 -0
  56. package/dist/core/schema-templates.d.ts +20 -0
  57. package/dist/core/schema-templates.d.ts.map +1 -0
  58. package/dist/core/schema-templates.js +131 -0
  59. package/dist/core/schema-templates.js.map +1 -0
  60. package/dist/core/search-fallback.d.ts +28 -0
  61. package/dist/core/search-fallback.d.ts.map +1 -0
  62. package/dist/core/search-fallback.js +185 -0
  63. package/dist/core/search-fallback.js.map +1 -0
  64. package/dist/core/search-provider.d.ts +47 -4
  65. package/dist/core/search-provider.d.ts.map +1 -1
  66. package/dist/core/search-provider.js +278 -7
  67. package/dist/core/search-provider.js.map +1 -1
  68. package/dist/core/stealth-patches.d.ts +58 -0
  69. package/dist/core/stealth-patches.d.ts.map +1 -0
  70. package/dist/core/stealth-patches.js +340 -0
  71. package/dist/core/stealth-patches.js.map +1 -0
  72. package/dist/core/strategies.d.ts +20 -0
  73. package/dist/core/strategies.d.ts.map +1 -1
  74. package/dist/core/strategies.js +284 -48
  75. package/dist/core/strategies.js.map +1 -1
  76. package/dist/core/strategy-hooks.d.ts +1 -1
  77. package/dist/core/strategy-hooks.d.ts.map +1 -1
  78. package/dist/index.d.ts +11 -0
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +37 -15
  81. package/dist/index.js.map +1 -1
  82. package/dist/mcp/server.js +109 -4
  83. package/dist/mcp/server.js.map +1 -1
  84. package/dist/server/app.d.ts.map +1 -1
  85. package/dist/server/app.js +29 -0
  86. package/dist/server/app.js.map +1 -1
  87. package/dist/server/middleware/rate-limit.d.ts +2 -1
  88. package/dist/server/middleware/rate-limit.d.ts.map +1 -1
  89. package/dist/server/middleware/rate-limit.js +24 -8
  90. package/dist/server/middleware/rate-limit.js.map +1 -1
  91. package/dist/server/routes/agent.d.ts +4 -0
  92. package/dist/server/routes/agent.d.ts.map +1 -1
  93. package/dist/server/routes/agent.js +196 -9
  94. package/dist/server/routes/agent.js.map +1 -1
  95. package/dist/server/routes/batch.js +5 -5
  96. package/dist/server/routes/batch.js.map +1 -1
  97. package/dist/server/routes/compat.d.ts.map +1 -1
  98. package/dist/server/routes/compat.js +1 -0
  99. package/dist/server/routes/compat.js.map +1 -1
  100. package/dist/server/routes/fetch.d.ts.map +1 -1
  101. package/dist/server/routes/fetch.js +60 -6
  102. package/dist/server/routes/fetch.js.map +1 -1
  103. package/dist/server/routes/mcp.d.ts.map +1 -1
  104. package/dist/server/routes/mcp.js +103 -2
  105. package/dist/server/routes/mcp.js.map +1 -1
  106. package/dist/server/routes/search.js +1 -1
  107. package/dist/server/routes/search.js.map +1 -1
  108. package/dist/types.d.ts +55 -4
  109. package/dist/types.d.ts.map +1 -1
  110. package/dist/types.js +4 -1
  111. package/dist/types.js.map +1 -1
  112. package/llms.txt +55 -125
  113. package/package.json +15 -1
@@ -0,0 +1,26 @@
1
+ /**
2
+ * PeelTLS — WebPeel's TLS Fingerprint Spoofing Engine
3
+ * BSD-licensed replacement for CycleTLS (GPL-3).
4
+ *
5
+ * Manages a singleton Go binary process that provides TLS fingerprint spoofing
6
+ * via uTLS (utls library). The binary exposes a local HTTP API that this module
7
+ * communicates with.
8
+ */
9
+ import type { FetchResult } from './fetcher.js';
10
+ export interface PeelTLSOptions {
11
+ timeout?: number;
12
+ proxy?: string;
13
+ headers?: Record<string, string>;
14
+ /** TLS fingerprint preset: 'chrome-133' | 'firefox-120' | 'safari-16' | raw JA3 string */
15
+ fingerprint?: string;
16
+ }
17
+ export interface PeelTLSResult extends FetchResult {
18
+ method: 'peeltls';
19
+ }
20
+ /** Check if the PeelTLS binary is available on this platform. */
21
+ export declare function isPeelTLSAvailable(): boolean;
22
+ /** Fetch a URL using PeelTLS TLS fingerprint spoofing. */
23
+ export declare function peelTLSFetch(url: string, options?: PeelTLSOptions): Promise<PeelTLSResult>;
24
+ /** Gracefully shut down the PeelTLS binary process. */
25
+ export declare function shutdownPeelTLS(): Promise<void>;
26
+ //# sourceMappingURL=peel-tls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peel-tls.d.ts","sourceRoot":"","sources":["../../src/core/peel-tls.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAiBhD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,MAAM,EAAE,SAAS,CAAC;CACnB;AAuDD,iEAAiE;AACjE,wBAAgB,kBAAkB,IAAI,OAAO,CAO5C;AA+ED,0DAA0D;AAC1D,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAsDhG;AAED,uDAAuD;AACvD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAiBrD"}
@@ -0,0 +1,221 @@
1
+ /**
2
+ * PeelTLS — WebPeel's TLS Fingerprint Spoofing Engine
3
+ * BSD-licensed replacement for CycleTLS (GPL-3).
4
+ *
5
+ * Manages a singleton Go binary process that provides TLS fingerprint spoofing
6
+ * via uTLS (utls library). The binary exposes a local HTTP API that this module
7
+ * communicates with.
8
+ */
9
+ import { existsSync } from 'fs';
10
+ import { resolve as pathResolve } from 'path';
11
+ import { spawn } from 'child_process';
12
+ import { randomBytes } from 'crypto';
13
+ import { platform, arch } from 'os';
14
+ import { fileURLToPath } from 'url';
15
+ import { dirname } from 'path';
16
+ // Chrome 133 user agent (matches Go binary's default fingerprint)
17
+ const CHROME_133_UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36';
18
+ const DEFAULT_HEADERS = {
19
+ 'Sec-Ch-Ua': '"Chromium";v="133", "Google Chrome";v="133"',
20
+ 'Sec-Ch-Ua-Mobile': '?0',
21
+ 'Sec-Ch-Ua-Platform': '"macOS"',
22
+ 'Sec-Fetch-Dest': 'document',
23
+ 'Sec-Fetch-Mode': 'navigate',
24
+ 'Sec-Fetch-Site': 'none',
25
+ Accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
26
+ 'Accept-Language': 'en-US,en;q=0.9',
27
+ };
28
+ // ─── Singleton state ──────────────────────────────────────────────────────────
29
+ let binaryProcess = null;
30
+ let binaryPort = null;
31
+ let binaryToken = null;
32
+ let startPromise = null;
33
+ // ─── Binary discovery ─────────────────────────────────────────────────────────
34
+ /** Get the binary path for the current platform/arch. */
35
+ function getBinaryPath() {
36
+ const plat = platform(); // 'darwin' | 'linux' | 'win32'
37
+ const ar = arch(); // 'x64' | 'arm64'
38
+ const platMap = {
39
+ darwin: 'darwin',
40
+ linux: 'linux',
41
+ win32: 'windows',
42
+ };
43
+ const archMap = {
44
+ x64: 'x64',
45
+ arm64: 'arm64',
46
+ };
47
+ const suffix = plat === 'win32' ? '.exe' : '';
48
+ const name = `peeltls-${platMap[plat] ?? plat}-${archMap[ar] ?? ar}${suffix}`;
49
+ // Resolve __dirname for both ESM and CJS
50
+ let thisDir;
51
+ try {
52
+ thisDir = dirname(fileURLToPath(import.meta.url));
53
+ }
54
+ catch {
55
+ thisDir = __dirname ?? process.cwd();
56
+ }
57
+ const candidates = [
58
+ // Relative to this file: src/core/ -> ../../peeltls/dist/
59
+ pathResolve(thisDir, '..', '..', 'peeltls', 'dist', name),
60
+ // From project root (cwd)
61
+ pathResolve(process.cwd(), 'peeltls', 'dist', name),
62
+ // Fallback: just 'peeltls' in dist (for development)
63
+ pathResolve(process.cwd(), 'peeltls', 'dist', 'peeltls'),
64
+ ];
65
+ for (const candidate of candidates) {
66
+ if (existsSync(candidate))
67
+ return candidate;
68
+ }
69
+ throw new Error(`PeelTLS binary not found for ${plat}/${ar}.\nExpected: ${candidates[0]}\nBuild it with: cd peeltls && bash build.sh`);
70
+ }
71
+ /** Check if the PeelTLS binary is available on this platform. */
72
+ export function isPeelTLSAvailable() {
73
+ try {
74
+ getBinaryPath();
75
+ return true;
76
+ }
77
+ catch {
78
+ return false;
79
+ }
80
+ }
81
+ // ─── Process management ───────────────────────────────────────────────────────
82
+ /** Start the PeelTLS Go binary (singleton — only spawned once). */
83
+ async function ensureRunning() {
84
+ // Already running
85
+ if (binaryPort !== null && binaryToken !== null && binaryProcess !== null && !binaryProcess.killed) {
86
+ return { port: binaryPort, token: binaryToken };
87
+ }
88
+ // Another call already started it
89
+ if (startPromise !== null) {
90
+ await startPromise;
91
+ return { port: binaryPort, token: binaryToken };
92
+ }
93
+ startPromise = new Promise((resolve, reject) => {
94
+ const binPath = getBinaryPath();
95
+ const token = randomBytes(32).toString('hex');
96
+ const proc = spawn(binPath, ['--port', '0', '--token', token], {
97
+ stdio: ['pipe', 'pipe', 'pipe'],
98
+ });
99
+ let stdoutBuf = '';
100
+ const startupTimeout = setTimeout(() => {
101
+ proc.kill();
102
+ reject(new Error('PeelTLS binary failed to start within 10s'));
103
+ }, 10_000);
104
+ proc.stdout.on('data', (chunk) => {
105
+ stdoutBuf += chunk.toString();
106
+ const newlineIdx = stdoutBuf.indexOf('\n');
107
+ if (newlineIdx !== -1) {
108
+ clearTimeout(startupTimeout);
109
+ try {
110
+ const info = JSON.parse(stdoutBuf.slice(0, newlineIdx));
111
+ binaryPort = info.port;
112
+ binaryToken = token;
113
+ binaryProcess = proc;
114
+ resolve();
115
+ }
116
+ catch {
117
+ proc.kill();
118
+ reject(new Error(`PeelTLS binary output invalid JSON: ${stdoutBuf}`));
119
+ }
120
+ }
121
+ });
122
+ proc.stderr.on('data', (chunk) => {
123
+ if (process.env['DEBUG']) {
124
+ process.stderr.write(`[peeltls] ${chunk.toString().trim()}\n`);
125
+ }
126
+ });
127
+ proc.on('error', (err) => {
128
+ clearTimeout(startupTimeout);
129
+ reject(new Error(`PeelTLS binary failed to spawn: ${err.message}`));
130
+ });
131
+ proc.on('exit', (code) => {
132
+ binaryProcess = null;
133
+ binaryPort = null;
134
+ binaryToken = null;
135
+ startPromise = null;
136
+ if (code !== 0 && code !== null) {
137
+ clearTimeout(startupTimeout);
138
+ // Don't reject here if already resolved — just clean state
139
+ }
140
+ });
141
+ });
142
+ await startPromise;
143
+ startPromise = null; // Reset so it can restart if the process exits later
144
+ return { port: binaryPort, token: binaryToken };
145
+ }
146
+ // ─── Public API ───────────────────────────────────────────────────────────────
147
+ /** Fetch a URL using PeelTLS TLS fingerprint spoofing. */
148
+ export async function peelTLSFetch(url, options) {
149
+ const { port, token } = await ensureRunning();
150
+ const mergedHeaders = {
151
+ 'User-Agent': CHROME_133_UA,
152
+ ...DEFAULT_HEADERS,
153
+ ...(options?.headers ?? {}),
154
+ };
155
+ const requestBody = JSON.stringify({
156
+ url,
157
+ method: 'GET',
158
+ headers: mergedHeaders,
159
+ fingerprint: options?.fingerprint ?? 'chrome-133',
160
+ proxy: options?.proxy ?? '',
161
+ timeout: Math.round((options?.timeout ?? 30_000) / 1000),
162
+ followRedirects: true,
163
+ maxRedirects: 10,
164
+ });
165
+ if (process.env['DEBUG']) {
166
+ process.stderr.write(`[peeltls] fetch: ${url}\n`);
167
+ }
168
+ const timeoutMs = options?.timeout ?? 30_000;
169
+ const response = await fetch(`http://127.0.0.1:${port}/fetch`, {
170
+ method: 'POST',
171
+ headers: {
172
+ 'Content-Type': 'application/json',
173
+ Authorization: `Bearer ${token}`,
174
+ },
175
+ body: requestBody,
176
+ signal: AbortSignal.timeout(timeoutMs + 5_000), // extra buffer over Go's own timeout
177
+ });
178
+ const result = (await response.json());
179
+ if (result.error) {
180
+ throw new Error(`PeelTLS fetch failed: ${result.error}`);
181
+ }
182
+ return {
183
+ html: result.body ?? '',
184
+ url: result.finalUrl ?? url,
185
+ statusCode: result.status ?? 0,
186
+ contentType: result.headers?.['content-type'] ?? 'text/html',
187
+ method: 'peeltls',
188
+ };
189
+ }
190
+ /** Gracefully shut down the PeelTLS binary process. */
191
+ export async function shutdownPeelTLS() {
192
+ if (binaryPort === null || binaryToken === null || binaryProcess === null)
193
+ return;
194
+ try {
195
+ await fetch(`http://127.0.0.1:${binaryPort}/shutdown`, {
196
+ method: 'POST',
197
+ headers: { Authorization: `Bearer ${binaryToken}` },
198
+ signal: AbortSignal.timeout(5_000),
199
+ });
200
+ }
201
+ catch {
202
+ // Force kill if graceful shutdown fails or times out
203
+ binaryProcess?.kill('SIGTERM');
204
+ }
205
+ binaryProcess = null;
206
+ binaryPort = null;
207
+ binaryToken = null;
208
+ }
209
+ // ─── Process exit cleanup ─────────────────────────────────────────────────────
210
+ process.on('exit', () => {
211
+ binaryProcess?.kill('SIGTERM');
212
+ });
213
+ process.on('SIGINT', () => {
214
+ binaryProcess?.kill('SIGTERM');
215
+ process.exit(0);
216
+ });
217
+ process.on('SIGTERM', () => {
218
+ binaryProcess?.kill('SIGTERM');
219
+ process.exit(0);
220
+ });
221
+ //# sourceMappingURL=peel-tls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"peel-tls.js","sourceRoot":"","sources":["../../src/core/peel-tls.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export interface PipelineContext {
21
21
  render: boolean;
22
22
  stealth: boolean;
23
23
  wait: number;
24
- format: 'markdown' | 'text' | 'html';
24
+ format: 'markdown' | 'text' | 'html' | 'clean';
25
25
  timeout: number;
26
26
  userAgent?: string;
27
27
  screenshot: boolean;
@@ -69,6 +69,10 @@ export interface PipelineContext {
69
69
  changeResult?: ChangeResult;
70
70
  summaryText?: string;
71
71
  screenshotBase64?: string;
72
+ /** True when domain API extraction handled the content (skip redundant extraction) */
73
+ domainApiHandled?: boolean;
74
+ /** Non-fatal warnings accumulated during the pipeline run */
75
+ warnings: string[];
72
76
  }
73
77
  /** Create the initial PipelineContext with defaults */
74
78
  export declare function createContext(url: string, options: PeelOptions): PipelineContext;
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/core/pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/core/pipeline.ts"],"names":[],"mappings":"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"}