เส้นทางที่เร็วที่สุดสำหรับการ scrape — พอร์ต TypeScript ของ HTTP layer จาก Scrapling สำหรับ Bun และ Cloudflare Workers ไม่ใช้เบราว์เซอร์ ไม่มี overhead จาก headless: wreq-js TLS impersonation, stealth headers ที่สอดคล้องกัน และ selector API ที่ใช้ cheerio
scrapling-js เน้นความเร็ว เมื่อเว็บสู้กลับด้วย JS challenge ให้สลับไปใช้โปรเจกต์พี่น้องที่เป็นเบราว์เซอร์ล่องหน
ดึงข้อมูลผ่าน HTTP ล้วน พร้อม TLS impersonation ระดับมิลลิวินาที ไม่ใช่วินาที
__NEXT_DATA__)ระบบอัตโนมัติ Chrome จริงแบบ headed ที่เอาชนะการตรวจจับบอท
ไม่อยากเลือกเอง? skill craft-scraper จะสำรวจเว็บแล้วสร้างสคริปต์ด้วยเครื่องมือที่เหมาะสม — scrapling-js สำหรับ API, Ultrastealth สำหรับเว็บที่ป้องกัน
สร้างชุด header แบบ Chrome/Firefox/Edge ที่สอดคล้องกัน (Client Hints, Sec-Fetch-*, ลำดับ Accept) ตรงกับลายนิ้วมือเบราว์เซอร์จริง
จับคู่ header กับ wreq-js (Rust/BoringSSL) เพื่อให้ลายนิ้วมือ JA3/JA4 + HTTP/2 ตรงกับ Chrome เวอร์ชันที่อ้าง (chrome_145–147)
Fetcher แบบครั้งเดียว และ FetcherSession แบบมีสถานะ เก็บ cookie, retry และหมุน proxy ได้
CSS + XPath ที่ใช้ cheerio พร้อม pseudo-element ::text / ::attr() ใช้งานคล้าย requests
core ไม่มี dependency เฉพาะ Node — deploy ขึ้น Cloudflare Workers ได้ทันที
เวอร์ชัน Chrome ใน header ตามโปรไฟล์ TLS ของ wreq-js เพื่อให้ UA และลายนิ้วมือไม่ขัดกัน
bun add scrapling-js # หรือ: npm i scrapling-js
import { Fetcher } from "scrapling-js";
// เปิด stealth headers ให้อัตโนมัติ
const page = await Fetcher.get("https://example.com");
const title = page.css("title::text").get();
const links = page.css("a::attr(href)").getAll();
const r = await Fetcher.get("https://shop.example.com/api/products", {
params: { page: "1" },
headers: { accept: "application/json", referer: "https://shop.example.com/" },
stealthyHeaders: true,
});
const data = JSON.parse(r.body);
ต้องการ TLS แบบ Chrome เต็มรูปแบบระดับ wire สำหรับเว็บที่ดื้อ? รัน stealth-proxy.ts ที่มากับโปรเจกต์ (Bun + wreq-js) แล้ว fetch ผ่าน localhost:3001