Skip to content

v0.7.0 — Browserless Fetch + Pure Node.js bx-ua

Choose a tag to compare

@youssefvdel youssefvdel released this 22 Jun 23:43

Performance:

  • Memory: eliminated Playwright/CDP Chromium daemon (~300-500MB RSS per browser process).
    API calls use wreq-js with zero browser overhead. Playwright browser only for
    cookie refresh (30-min TTL, ~7s every 30 min).
  • bx-ua generation: 0.1ms vs Playwright extraction ~7s. Cold start eliminated
    (pure JS, no VM bootstrap).
  • Session management: wreq-js TLS/HTTP2 sessions instead of CDP debug protocol.
    No Chromium per-account overhead.

Fixes:

  • Issue #22: session acquire timeout. getBasicHeaders() no longer calls
    initPlaywright(). Cookies from saved profiles, bx-ua from Node.js generator.
    Playwright only used for periodic cookie refresh, not for header extraction.
  • Health check test: removed stale playwright assertion.

CI: 112 tests, 0 failures. All checks pass (Biome, tsc, test).

Changes since v0.6.0 (22 files, +2225/-547):

Pure Node.js bx-ua Generator (new):
src/services/bxUaGenerator.ts — real-format tokens without Playwright
"231!" + base64(900 bytes) = 1204 chars, SHA-256 fingerprint + HMAC filler
15-min TTL cache, 9/9 tests pass

Browserless Fetch Stack (new):
src/services/browserlessFetch.ts — wreq-js TLS/HTTP2 impersonation (Chrome 142)
src/services/bxTokenExtractor.ts — bx-umidtoken from sg-wum endpoint
src/services/tokenCache.ts — generic TTL cache
src/services/fireyejsRunner.ts — token gen + cookie refresh

Removed (Playwright/CDP):
getBasicHeaders() no longer calls initPlaywright() — no Playwright for headers
Removed extractBxUaFromBrowser() — no more Playwright for bx-ua
Removed dead getQwenHeaders import and buildRequestHeaders from qwen.ts
Simplified playwright.ts (-45 lines), qwen.ts (-218 lines)
Stripped CDP/Chrome dashboard code (accounts.js -25 lines)
src/index.tsx simplified (-295/+0 net)

Updated:
sessionPool.ts — wreq-js sessions instead of CDP
qwenModels.ts, qwenFileUpload.ts — browserlessFetch instead of Playwright
package.json — added wreq-js dependency