proxy_set_ja3_spoof
Enable JA3 fingerprint spoofing for HTTPS requests to bypass TLS fingerprint detection, using Chrome preset with custom user agent and host filtering.
Instructions
Legacy: enable JA3 spoofing (deprecated, use proxy_set_fingerprint_spoof). Custom JA3 strings are ignored by the curl-impersonate backend; the request will use the default Chrome preset.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ja3 | Yes | JA3 fingerprint string (ignored by curl-impersonate backend — use proxy_set_fingerprint_spoof with a preset instead) | |
| user_agent | No | User-Agent header to use with spoofed requests | |
| host_patterns | No | Only spoof requests to hostnames containing these substrings. Empty = spoof all HTTPS. |
Implementation Reference
- src/tools/tls.ts:112-142 (handler)The tool 'proxy_set_ja3_spoof' is registered and defined in 'src/tools/tls.ts'. It is a legacy wrapper that uses 'proxyManager.setJa3Spoof' to configure JA3 spoofing.
server.tool( "proxy_set_ja3_spoof", "Legacy: enable JA3 spoofing (deprecated, use proxy_set_fingerprint_spoof). Custom JA3 strings are ignored by the curl-impersonate backend; the request will use the default Chrome preset.", { ja3: z.string().describe("JA3 fingerprint string (ignored by curl-impersonate backend — use proxy_set_fingerprint_spoof with a preset instead)"), user_agent: z.string().optional().describe("User-Agent header to use with spoofed requests"), host_patterns: z.array(z.string()).optional().describe("Only spoof requests to hostnames containing these substrings. Empty = spoof all HTTPS."), }, async ({ ja3, user_agent, host_patterns }) => { try { await proxyManager.setJa3Spoof({ ja3, userAgent: user_agent, hostPatterns: host_patterns, }); return { content: [{ type: "text" as const, text: JSON.stringify({ status: "success", message: "JA3 spoofing enabled (note: custom JA3 strings are not supported by the curl-impersonate backend; the default Chrome preset fingerprint will be used instead. Use proxy_set_fingerprint_spoof with a preset for explicit control.)", config: { ja3, userAgent: user_agent, hostPatterns: host_patterns ?? [] }, }), }], }; } catch (e) { return { content: [{ type: "text" as const, text: JSON.stringify({ status: "error", error: String(e) }) }] }; } }, );