🎯 Trình duyệt đám mây tùy chỉnh, chống phát hiện được hỗ trợ bởi Chromium tự phát triển, thiết kế dành cho trình thu thập dữ liệu webtác nhân AI. 👉Dùng thử ngay
Quay lại blog

API Mở Khóa Web: Hiển Thị Bất Kỳ Trang Đến HTML, Markdown, hoặc PNG

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

08-Jul-2026

Tóm tắt:

  • Web Unlocker biến bất kỳ URL nào thành dữ liệu sạch chỉ với một POST. Gửi một URL đến unlocker.webunlocker; nhận lại trang dưới dạng HTML, văn bản thuần, Markdown, một ảnh chụp màn hình hoặc nội dung đã được trích xuất — không cần quản lý trình duyệt.
  • Kết xuất JavaScript là một cờ, không phải sản phẩm riêng biệt. Đặt jsRender.enabled: true và trang sẽ được kết xuất trong một trình duyệt thực trước khi phản hồi được xây dựng, vì vậy nội dung phía khách hàng đã có sẵn.
  • Bạn chọn hình thức của phản hồi. response.type là một trong các giá trị html, plaintext, markdown, png, jpeg, network, hoặc content — yêu cầu Markdown cho LLMs, PNG cho một ảnh chụp màn hình, content để trích xuất theo cấu trúc.
  • Quốc gia proxy là một trường. Đặt proxy.country để định tuyến yêu cầu qua đi ra dân cư trong khu vực đó; một khu vực không khớp là một lý do phổ biến khiến một trang kết xuất khác nhau.
  • Hai thời gian chờ điều chỉnh mọi cuộc gọi. Một giới hạn tải trang 30 giây và một giới hạn thực hiện toàn cầu 180 giây — giới hạn tải trang có ưu tiên trước.
  • Miễn phí để bắt đầu. Các tài khoản mới của Scrapeless bao gồm việc sử dụng miễn phí API Truy xuất Dữ liệu Toàn cầu — đăng ký tại app.scrapeless.com.

Giới thiệu: một điểm cuối, bất kỳ trang nào, hình thức bạn đã yêu cầu

Hầu hết mã sao chép dành thời gian cho mọi thứ xung quanh dữ liệu: khởi chạy một trình duyệt, đợi JavaScript, xử lý khối, sau đó phân tích HTML thành thứ gì đó có thể sử dụng. API Truy xuất Dữ liệu Toàn cầu của Scrapeless sắp xếp lại tất cả những thứ đó thành một yêu cầu HTTP duy nhất. Bạn POST một URL đến diễn viên Web Unlocker, và phản hồi là trang — đã được kết xuất, đã ở định dạng bạn yêu cầu.

Hướng dẫn này đi qua diễn viên unlocker.webunlocker từ đầu đến cuối: hình dạng yêu cầu, một curl đầu tiên, phong bì phản hồi, tích hợp Python, bảy loại phản hồi mà kết xuất JavaScript có thể trả lại, và cách giữ cho các yêu cầu sạch sẽ. Mỗi yêu cầu và phản hồi bên dưới đều được ghi lại từ API trực tiếp.


Những gì bạn có thể làm với nó

  • Lấy một trang dưới dạng HTML thô — một GET đơn giản qua ngõ ra sạch, khi bạn sẽ tự phân tích đánh dấu.
  • Kết xuất các trang nặng JavaScript — đặt jsRender.enabled và đọc nội dung chỉ xuất hiện sau khi khách hàng chạy.
  • Nhận Markdown cho một LLM — yêu cầu type: markdown và cho kết quả vào ngay trong một pipeline RAG hoặc lời nhắc.
  • Chụp một ảnh chụp màn hình — yêu cầu type: png hoặc jpeg và nhận vùng nhìn đã được kết xuất dưới dạng hình ảnh.
  • Trích xuất nội dung có cấu trúc — yêu cầu type: content để lấy tiêu đề, liên kết, bảng, email, hình ảnh và metadata từ trang.
  • Theo dõi phản hồi mạng — yêu cầu type: network để ghi lại các phản hồi XHR/fetch mà một trang thực hiện, được lọc theo URL, trạng thái và phương thức.
  • Điều khiển trang đầu tiên — chạy instructions (chờ một bộ chọn, nhấp, điền, nhấn phím) trước khi phản hồi được xây dựng.

Tại sao lại là API Truy xuất Dữ liệu Toàn cầu của Scrapeless

API Truy xuất Dữ liệu Toàn cầu là bề mặt mở khóa web quản lý: bạn gửi một URL, nó xử lý việc kết xuất, ngõ ra và chống phát hiện, và trả về dữ liệu sạch. Đối với quy trình công việc này, nó mang đến:

  • Kết xuất JavaScript phía đám mây — một trình duyệt thực chạy trang, vì vậy các ứng dụng một trang và nội dung tải chậm sẽ được giải quyết trước khi phản hồi được xây dựng.
  • Proxy dân cư ở hơn 195 quốc gia — định tuyến qua proxy.country để reputat IP đầu ra rõ ràng và các trang geo-routed phục vụ đúng cách.
  • Xử lý thử thách tự động — reCAPTCHA v2, Cloudflare Turnstile, và màn hình chờ Cloudflare được xử lý bên trong diễn viên.
  • Bảy định dạng phản hồi — HTML, văn bản thuần, Markdown, PNG, JPEG, ghi lại mạng, và nội dung có cấu trúc từ cùng một điểm cuối.
  • Một hợp đồng HTTP duy nhất — không có vòng đời trình duyệt, không có phiên bản driver; phản hồi chính là dữ liệu.

Nhận khóa API của bạn ở gói miễn phí tại app.scrapeless.com.


Các yêu cầu cần thiết

  • Một tài khoản Scrapeless và khóa API — đăng ký tại app.scrapeless.com
  • curl cho yêu cầu đầu tiên, và Python 3.10+ (hoặc Node.js 18+) cho tích hợp
  • Kiến thức cơ bản về HTTP và JSON

Cách hoạt động của Web Unlocker

Mỗi cuộc gọi là một POST đến một điểm cuối với một body JSON của {actor, input, proxy}.

Tham số yêu cầu

Trường Vị trí Ý nghĩa
actor cấp cao unlocker.webunlocker
input.url đầu vào trang cần lấy
input.method đầu vào phương thức HTTP (mặc định là GET)
input.redirect đầu vào theo dõi chuyển hướng (true/false)
input.jsRender đầu vào { enabled, response, instructions, block } — tùy chọn kết xuất
proxy.country proxy mã quốc gia ISO hoặc ANY

Xác thực là tiêu đề x-api-token. Phong bì phản hồi luôn là { "code": 200, "data": ... }.

Ghi lại nhanh với curl

Lấy một trang dưới dạng HTML qua ngõ ra dân cư:

bash Copy
curl -X POST https://api.scrapeless.com/api/v2/unlocker/request \
  -H "x-api-token: ${SCRAPELESS_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
```json
"diễn viên": "unlocker.webunlocker",
    "đầu vào": { "url": "https://www.example.com", "phương thức": "GET", "chuyển hướng": false },
    "proxy": { "quốc gia": "BẤT KỲ" }
  }'

Bao bì phản hồi

json Copy
// mẫu minh họa — hình dạng bao bì là chính xác; GET trực tiếp ở trên trả về mã 200 với 559 byte HTML của example.com
{
  "mã": 200,
  "dữ liệu": "<!doctype html><html>…</html>"
}

Một là 200 có nghĩa là yêu cầu thành công; dữ liệu chứa tải trọng — văn bản HTML ở đây, Markdown hoặc một hình ảnh base64 cho các loại phản hồi khác.


Tích hợp API trong Python

Cuộc gọi tương tự từ Python, đọc khoá từ môi trường:

python Copy
import os
import requests

API_KEY = os.environ["SCRAPELESS_API_KEY"]

resp = requests.post(
    "https://api.scrapeless.com/api/v2/unlocker/request",
    headers={"x-api-token": API_KEY, "Content-Type": "application/json"},
    json={
        "diễn viên": "unlocker.webunlocker",
        "đầu vào": {"url": "https://www.example.com", "phương thức": "GET", "chuyển hướng": False},
        "proxy": {"quốc gia": "BẤT KỲ"},
    },
    timeout=70,
)

data = resp.json()
if data.get("mã") == 200:
    html = data["dữ liệu"]
    print(len(html), "byte của HTML")

Nhận khoá API của bạn trên gói miễn phí: app.scrapeless.com


Kết xuất JavaScript: bảy loại phản hồi

Để kết xuất trang trong trình duyệt thực sự trước, thêm jsRender. response.type quyết định những gì được trả về. Yêu cầu Markdown cho một trang — lý tưởng để cung cấp cho LLM:

python Copy
payload = {
    "diễn viên": "unlocker.webunlocker",
    "proxy": {"quốc gia": "BẤT KỲ"},
    "đầu vào": {
        "url": "https://www.example.com",
        "jsRender": {
            "enabled": True,
            "phản hồi": {"type": "markdown"},
        },
    },
}
resp = requests.post(
    "https://api.scrapeless.com/api/v2/unlocker/request",
    json=payload,
    headers={"x-api-token": API_KEY, "Content-Type": "application/json"},
    timeout=70,
)
print(resp.json()["dữ liệu"])
# "# Ví dụ tên miền\n\nTên miền này được sử dụng trong ví dụ tài liệu..."

Trường type chọn định dạng:

response.type Trả về
html HTML được kết xuất sau khi JavaScript chạy
plaintext văn bản hiển thị, đã loại bỏ đánh dấu
markdown trang dưới dạng Markdown (sẵn sàng cho LLM)
png / jpeg ảnh chụp màn hình dưới dạng chuỗi base64
network phản hồi XHR/fetch đã bị chặn, được lọc theo urls, status, methods
content khai thác có cấu trúc — tiêu đề, liên kết, bảng, hình ảnh, email, siêu dữ liệu

Để chụp ảnh màn hình, yêu cầu png và giải mã dữ liệu base64 thành bytes:

python Copy
import base64

payload["đầu vào"]["jsRender"]["phản hồi"] = {"type": "png"}
resp = requests.post(
    "https://api.scrapeless.com/api/v2/unlocker/request",
    json=payload,
    headers={"x-api-token": API_KEY, "Content-Type": "application/json"},
    timeout=70,
)
with open("page.png", "wb") as f:
    f.write(base64.b64decode(resp.json()["dữ liệu"]))

Điều khiển trang trước khi ghi nhận

Khi nội dung chỉ xuất hiện sau tương tác, gửi instructions — mỗi cái là một động từ mà trình kết xuất thực hiện theo thứ tự trước khi xây dựng phản hồi:

json Copy
{
  "diễn viên": "unlocker.webunlocker",
  "đầu vào": {
    "url": "https://example.com",
    "jsRender": {
      "enabled": true,
      "hướng dẫn": [
        { "waitFor": [".dynamic-content", 30000] },
        { "click": ["#load-more", 1000] },
        { "fill": ["#search-input", "từ khóa tìm kiếm"] },
        { "keyboard": ["nhấn", "Enter"] },
        { "evaluate": "window.scrollTo(0, document.body.scrollHeight)" }
      ]
    }
  }
}

Bạn cũng có thể cắt băng thông bằng cách chặn những loại tài nguyên mà bạn không cần với jsRender.block.resources (ví dụ Image, Font, Media, Stylesheet), mà lớp lấy dữ liệu bỏ qua theo các danh mục tài nguyên được xác định trong Fetch API.


Cách tránh các vấn đề phổ biến

  • Một trường không có trên trang thì là null, không phải là lỗi. Xem xét mọi trường đã trích xuất là tùy chọn và bảo vệ cho sự vắng mặt của nó thay vì giả định rằng nó có mặt.
  • Chú ý đến hai giới hạn thời gian. Giới hạn tải trang tối đa là 30 giây và giới hạn thực thi toàn cầu tối đa là 180 giây giới hạn mỗi cuộc gọi, và giới hạn tải trang có ưu tiên — giữ giá trị waitFor trong ngân sách đó. Chỉ dẫn ngữ nghĩa HTTP định nghĩa các mã trạng thái bạn sẽ thấy nếu mục tiêu tự nó gặp lỗi.
  • Gắn quốc gia với nội dung. Nếu một trang định tuyến theo địa lý, đặt proxy.quốc gia thành khu vực phục vụ phiên bản bạn muốn; BẤT KỲ là tốt khi nó không.
  • Hãy chọn loại phản hồi một cách có chủ ý. Yêu cầu markdown hoặc content khi bạn muốn dữ liệu, không phải html mà bạn phải phân tích — việc trích xuất dữ liệu xảy ra ở phía máy chủ trong mọi trường hợp, và các mẫu lưu lượng tự động mà khóa mở xử lý được phân loại trong dự án Các mối đe dọa tự động của OWASP.

Kết luận: trang web, ở dạng bạn cần

Web Unlocker giảm quy trình trích xuất xuống một quyết định: URL nào, và loại phản hồi nào. Rendering, egress, và chống phát hiện được xử lý bên trong actor, vì vậy một trang web nặng JavaScript trở thành Markdown sạch hoặc một ảnh chụp màn hình trong một yêu cầu duy nhất. Kết hợp nó với Scraping Browser khi bạn cần một phiên tương tác đầy đủ, và tìm hiểu về egress từ nhà ở so với trung tâm dữ liệu vì độ tin cậy của proxy quyết định phần lớn các kết quả render. Tài liệu API Trích xuất Toàn cầu bao phủ mọi trường hợp.


Sẵn sàng để Xây dựng Quy trình Dữ liệu AI của Bạn?

Tham gia cộng đồng của chúng tôi để nhận kế hoạch miễn phí và kết nối với các nhà phát triển đang xây dựng quy trình trích xuất: Discord · Telegram.

Đăng ký tại app.scrapeless.com để sử dụng miễn phí API Trích xuất Toàn cầu, và xem bảng giá cho quy mô.


Câu hỏi Thường Gặp

Q: Sự khác biệt giữa Web Unlocker và Scraping Browser là gì?
Web Unlocker là một điểm cuối yêu cầu/đáp ứng duy nhất — gửi một URL, nhận lại trang trong một lần gọi. Scraping Browser là một trình duyệt đám mây tương tác đầy đủ mà bạn điều khiển bằng Puppeteer hoặc Playwright. Sử dụng unlocker để truy xuất và phân tích; sử dụng trình duyệt cho các phiên nhiều bước.

Q: Tôi có cần bật rendering JavaScript không?
Chỉ khi nội dung bạn cần được render phía client. Một GET thông thường trả về HTML của máy chủ; thêm jsRender.enabled: true sẽ chạy trang trong một trình duyệt thực tế trước, đây là điều bạn muốn cho các ứng dụng trang đơn và nội dung tải lén.

Q: Tôi nên sử dụng loại phản hồi nào cho một quy trình LLM?
markdown — nó trả về trang dưới dạng Markdown sạch với các định dạng bị loại bỏ, điều mà hầu hết các quy trình RAG và prompt mong muốn. Sử dụng content khi bạn cần các trường riêng lẻ (tiêu đề, liên kết, bảng) thay vì văn xuôi.

Q: Làm thế nào để tôi có được một ảnh chụp màn hình?
Đặt response.type thành png hoặc jpeg; trường data sẽ trở lại dưới dạng chuỗi base64 mà bạn giải mã thành byte hình ảnh.

Q: Tôi có cần một proxy không?
Egress được tích hợp sẵn. Đặt proxy.country để định tuyến qua IP dân cư ở một khu vực cụ thể, hoặc ANY để cho dịch vụ lựa chọn. Việc cố định một quốc gia quan trọng khi một trang web định tuyến theo địa lý hoặc thách thức các IP từ trung tâm dữ liệu.

Q: Các khoảng thời gian là gì?
Một giới hạn tải trang cố định là 30 giây và một giới hạn thực thi toàn cầu là 180 giây. Giới hạn tải trang được ưu tiên và có thể kết thúc yêu cầu trước giới hạn toàn cầu, vì vậy hãy giữ bất kỳ giá trị waitFor nào trong ngân sách đó.

Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến ​​cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.

Bài viết phổ biến nhất

Danh mục