Tất cả bài viết

FourA Digest, từ ngày 8 tháng 5 đến ngày 15 tháng 5 năm 2026

Dashboard hiện đã có một playground thực tế để soạn thảo các cuộc gọi API, và `unblocker: true` đã hoạt động trở lại từ đầu đến cuối (end-to-end) trên Single và Proxy Finder.

Highlights

Giờ đây bạn có thể soạn thảo, gửi và phát lại các request trực tiếp bằng API key của riêng mình ngay trong dashboard. Playground mới hỗ trợ cả ba sản phẩm và lưu giữ các cookie, preset cũng như lịch sử qua các lần chạy. Hai bản sửa lỗi về độ tin cậy cũng được phát hành cùng lúc: unblocker: true đã bị giảm hiệu năng một cách âm thầm trong vài tuần (hiện đã hoạt động trở lại, end-to-end), và Browser hiện đã thu thập cookie cf_clearance từ passive-challenge của Cloudflare một cách đáng tin cậy.

What's New

Dashboard Playground

/dashboard/#playground hiện đã là một môi trường làm việc thực thụ. Ba tab sản phẩm (Single, Proxy Finder, Browser), thanh URL, các header, body, cùng tất cả các flag riêng cho từng sản phẩm được hiển thị và khớp với schema thực tế của từng sản phẩm. Gửi request, xem response hiển thị với các chế độ xem JSON, HTML và văn bản. Tìm kiếm trên các bảng response bằng Ctrl/Cmd+K. Mở rộng response ra toàn bộ viewport khi bạn cần đọc một khối HTML lớn.

Một vài điểm nổi bật từ việc xây dựng công cụ này theo cách mà chính chúng tôi muốn sử dụng:

  • Các cookie bạn nhận được sẽ được lưu vào một jar riêng cho từng host. Request tiếp theo đến cùng một host sẽ tự động đính kèm chúng, và bạn có thể kiểm tra, chỉnh sửa hoặc xóa bất kỳ cookie nào trước khi gửi.
  • Một thanh danh sách proxy đang hoạt động sẽ thu thập mọi proxy id trả về từ một lượt chạy Proxy Finder thành công, nhờ đó bạn có thể nhấp vào "use" và tái sử dụng proxy đó trong một request Single hoặc Browser mà không cần nhập lại.
  • Lưu các request dưới dạng preset. Phát lại bất kỳ lượt chạy nào trong số 20 lượt chạy gần nhất từ hộp thoại lịch sử.
  • Một trình tái tạo curl sẽ hiển thị chính xác câu lệnh (với x-api-key) mà bạn sẽ chạy từ terminal để gửi cùng một request.

Playground này sẽ ký một token nội bộ có thời hạn ngắn, vì vậy key dạng văn bản thuần (plaintext) của bạn không bao giờ rời khỏi dashboard. Quota, metrics và last_used_at sẽ được tính cho key mà bạn đã chọn, tương tự như khi bạn gửi request từ mã nguồn của chính mình.

unblocker: true hoạt động trở lại, end-to-end

Chúng tôi đã phát hiện một sự sự cố build khiến các request Single và Proxy Finder có cấu hình unblocker: true bị giảm cấp một cách âm thầm trong vài tuần qua. Bản build đã được phát hành mà không thực sự tích hợp cơ chế bypass, vì vậy các request lẽ ra phải vượt qua được các bức tường anti-bot ở cấp độ handshake-level lại nhận được một chữ ký request chung chung. Các trang web lẽ ra phải cho phép chúng tôi đi qua lại chặn chúng tôi.

Bản sửa lỗi đã được triển khai. Chúng tôi đã xác minh end-to-end trên mười một mục tiêu thực tế, bao gồm ba mục tiêu có màn hình chờ (interstitial) của Cloudflare mà trước đây cần có Browser để vượt qua. Single có thể tự mình vượt qua chúng. Luồng liên kết Proxy Finder + Browser + Single (tìm một proxy, lấy cookie cf_clearance từ Browser, gửi request trang bằng Single kèm theo cookie và chính proxy đó) trả về toàn bộ HTML chỉ trong một round trip.

Lỗi này thuộc về chúng tôi. unblocker: true đã hoạt động vào ngày phát hành, và bị lỗi một cách lặng lẽ trong một đợt rebuild định kỳ. Nếu bạn đã chạy một request với unblocker: true tới một trang web được bảo vệ trong vài tuần qua và nhận về lỗi 403 thay vì mã 200 như mong đợi, thì đó chính là lý do. Hãy thử lại lần nữa.

Browser xử lý passive JavaScript challenge của Cloudflare

Cloudflare có hai chế độ challenge. Chế độ active (HTTP 403 cùng màn hình chờ) đã được chúng tôi xử lý. Chế độ passive thì tinh vi hơn: trang web trả về mã 200 ngay lập tức, nhưng Cloudflare chèn một đoạn probe JavaScript bất đồng bộ để thu thập fingerprint của client và chỉ sau đó mới cấp cookie cf_clearance. Trước bản sửa lỗi này, Browser đã hoàn tất response trước khi đoạn probe kịp hoàn thành, vì vậy cookie clearance không bao giờ được lưu vào jar.

Browser hiện lắng nghe sự kiện Set-Cookie một cách rõ ràng và chờ đợi cf_clearance nếu phát hiện dấu hiệu passive-challenge trong body. Không cần polling, không cần khoảng thời gian chờ cố định, không cần đợi thêm đối với các trang web không sử dụng Cloudflare. Mười hai tên miền thực tế trong bộ test suite, với ba trong số đó nằm trên luồng passive, hiện đã trả về cookie clearance một cách đáng tin cậy.

Vá lỗ hổng SSRF tại API edge

Một API key pk_live_... hợp lệ không đồng nghĩa với việc được phép truy cập vào mạng nội bộ của chúng tôi. API hiện từ chối bất kỳ mục tiêu nào có hostname literal hoặc phân giải DNS rơi vào khối tài nguyên dự phòng của RFC 5735, 6598 hoặc IPv6. Kiểm tra tương tự cũng được chạy ở mọi sản phẩm backend như một lớp phòng thủ thứ hai.

Bạn sẽ không thấy bất kỳ sự khác biệt nào ở bề ngoài. Chúng tôi ngăn chặn một loại hình dò quét mạng nội bộ trước khi nó có thể hoàn thành quá trình TCP handshake.

Blog có bản xem trước mạng xã hội riêng biệt, sửa lỗi phân trang

Mỗi bài viết trên blog giờ đây sẽ tự động tạo hình ảnh Open Graph riêng với tiêu đề và đoạn trích của bài viết được hiển thị trên một thẻ thương hiệu. Khi dán liên kết foura.ai/blog/... vào Discord, LinkedIn, Slack hoặc Twitter, bạn sẽ thấy bản xem trước dành riêng cho bài viết đó thay vì một hình ảnh mặc định chung chung.

Tính năng phân trang trên trang chủ blog đã bị lỗi một cách âm thầm. Nút "Older" đã đưa bạn quay trở lại trang 1. Chúng tôi đã xây dựng lại tính năng này dựa trên các URL dạng đường dẫn (/blog/page/N/), thêm thanh điều hướng dạng số với một cửa sổ thông minh, và bổ sung các thẻ liên kết rel=prev/next chuẩn xác cho các chuỗi bài viết được phân trang. Các URL cũ dạng ?page=N sẽ được chuyển hướng 301 sang định dạng mới, vì vậy không có dữ liệu nào đã được crawl trước đó bị mất.

Under the Hood

MCP server của chúng tôi hiện đã hoạt động tại mcp.foura.ai cho bất kỳ công cụ LLM nào hỗ trợ Model Context Protocol. Phương thức xác thực vẫn là Bearer token pk_live_... tương tự như khi bạn sử dụng với REST API. Nó cung cấp ba sản phẩm dưới dạng các công cụ (Single, Proxy Finder, Browser) cùng một vài prompt. Nếu bạn đang tích hợp FourA vào Claude Code hoặc bất kỳ agent nào hỗ trợ MCP, bạn có thể ngừng chạy một local bridge.

Nếu trước đây bạn còn ngần ngại chưa sử dụng dashboard vì phiên bản playground cũ còn sơ sài, hãy mở nó ra trong tuần này. Đây chính là giao diện mà hiện tại chúng tôi tự sử dụng mỗi khi có vấn đề xảy ra với một mục tiêu API.