Bỏ qua

Endpoint Chụp màn hình Playwright

⚠️ Tuyên bố miễn trừ trách nhiệm

  • Endpoint này không được thiết kế để bỏ qua CAPTCHA, Cloudflare, hoặc các biện pháp chống bot khác.
  • Vui lòng không tạo issue hoặc yêu cầu yêu cầu tính năng bỏ qua CAPTCHA hoặc Cloudflare.
  • Nó sẽ không hoạt động cho các trang web có các biện pháp phòng vệ như vậy, và việc cố gắng tự động hóa chống lại các trang web được bảo vệ có thể dẫn đến địa chỉ IP của bạn bị đưa vào danh sách đen bởi Cloudflare hoặc các dịch vụ tương tự.
  • Endpoint chụp màn hình hỗ trợ HTML, JavaScript và CSS tùy chỉnh để hiển thị và tự động hóa linh hoạt, như một giải pháp thay thế cho việc sử dụng URL.
  • Tính năng này chỉ nên được sử dụng trên các trang web mà bạn sở hữu hoặc có quyền rõ ràng để tự động hóa.

1. Tổng quan

Endpoint https://api.revidapi.com/paid/image/screenshot/webpage cho phép bạn chụp ảnh màn hình của các trang web bằng thư viện tự động hóa trình duyệt Playwright. Nó hỗ trợ các tùy chọn nâng cao như kích thước viewport, mô phỏng thiết bị, cookie, header, nhắm mục tiêu phần tử và nhiều hơn nữa. Ảnh chụp màn hình được tải lên cloud storage, và URL kết quả được trả về.

2. Endpoint

  • URL Path: https://api.revidapi.com/paid/image/screenshot/webpage
  • HTTP Method: POST

3. Yêu cầu

Headers

  • x-api-key (bắt buộc): API key của bạn để xác thực.
  • Content-Type: application/json

Tham số Body

Body yêu cầu phải là đối tượng JSON với các thuộc tính sau:

  • url (string, bắt buộc): URL của trang web cần chụp.
  • html (string, tùy chọn): Nội dung HTML thô để hiển thị và chụp.
    Lưu ý: Phải cung cấp url hoặc html, nhưng không phải cả hai.
  • viewport_width (integer, tùy chọn): Chiều rộng viewport tính bằng pixel.
  • viewport_height (integer, tùy chọn): Chiều cao viewport tính bằng pixel.
  • full_page (boolean, tùy chọn): Chụp toàn bộ trang có thể cuộn. Mặc định: false.
  • format (string, tùy chọn): Định dạng hình ảnh, png hoặc jpeg. Mặc định: png.
  • delay (integer, tùy chọn): Độ trễ tính bằng mili giây trước khi chụp màn hình.
  • device_scale_factor (number, tùy chọn): Hệ số tỷ lệ thiết bị (ví dụ: 2 cho retina).
  • user_agent (string, tùy chọn): Chuỗi user agent tùy chỉnh.
  • cookies (mảng, tùy chọn): Danh sách cookie cần đặt. Mỗi cookie là một đối tượng với name, value, và domain.
  • headers (object, tùy chọn): Các HTTP header bổ sung cần đặt.
  • quality (integer, tùy chọn): Chất lượng JPEG (0-100, chỉ cho định dạng jpeg).
  • clip (object, tùy chọn): Vùng cần chụp, với x, y, width, height (tất cả là số).
  • timeout (integer, tùy chọn): Timeout điều hướng tính bằng mili giây. Tối thiểu: 100.
  • wait_until (string, tùy chọn): Khi nào coi điều hướng thành công. Một trong load, domcontentloaded, networkidle, networkidle2. Mặc định: load.
  • wait_for_selector (string, tùy chọn): Đợi một selector trước khi chụp màn hình.
  • emulate (object, tùy chọn): Tùy chọn mô phỏng, ví dụ: { "color_scheme": "dark" }.
  • omit_background (boolean, tùy chọn): Ẩn nền trắng mặc định. Mặc định: false.
  • selector (string, tùy chọn): CSS selector cho một phần tử cụ thể cần chụp màn hình.
  • webhook_url (string, tùy chọn): Nếu được cung cấp, kết quả được gửi đến URL này không đồng bộ.
  • id (string, tùy chọn): Mã định danh tùy chỉnh cho yêu cầu.
  • js (string, tùy chọn): Mã JavaScript để chèn vào trang trước khi chụp màn hình.
  • css (string, tùy chọn): Mã CSS để chèn vào trang trước khi chụp màn hình.

Ví dụ yêu cầu

{
  "url": "https://vn.tradingview.com/chart/?symbol=OANDA%3AXAUUSD",
  "viewport_width": 1280,
  "viewport_height": 720,
  "full_page": true,
  "format": "jpeg",
  "delay": 1500,
  "device_scale_factor": 2,
  "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
  "headers": {
    "Accept-Language": "en-US,en;q=0.9"
  },
  "quality": 90,
  "timeout": 15000,
  "wait_until": "load",
  "omit_background": false,
  "webhook_url": "https://your-webhook.com/callback",
  "id": "custom-job-123"
}

Ví dụ cURL:

curl -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://vn.tradingview.com/chart/?symbol=OANDA%3AXAUUSD",
  "viewport_width": 1280,
  "viewport_height": 720,
  "full_page": true,
  "format": "jpeg",
  "delay": 1500,
  "device_scale_factor": 2,
  "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
  "headers": {
    "Accept-Language": "en-US,en;q=0.9"
  },
  "quality": 90,
  "timeout": 15000,
  "wait_until": "load",
  "omit_background": false,
  "webhook_url": "https://your-webhook.com/callback",
  "id": "custom-job-123"
}' \
https://api.revidapi.com/paid/image/screenshot/webpage

4. Phản hồi

Phản hồi thành công

Phản hồi là một đối tượng JSON chứa URL cloud storage của ảnh chụp màn hình và metadata công việc. Nếu cung cấp webhook_url, kết quả được gửi không đồng bộ đến webhook.

{
  "endpoint": "/v1/image/screenshot/webpage",
  "code": 200,
  "id": "custom-job-123",
  "job_id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
  "message": "success",
  "pid": 12345,
  "queue_id": 140682639937472,
  "run_time": 2.345,
  "queue_time": 0.012,
  "total_time": 2.357,
  "queue_length": 0,
  "build_number": "1.0.0"
}

Phản hồi lỗi

  • 400 Bad Request: Tham số không hợp lệ hoặc thiếu.
  • 401 Unauthorized: API key không hợp lệ hoặc thiếu.
  • 429 Too Many Requests: Hàng đợi đầy.
  • 500 Internal Server Error: Đã xảy ra lỗi trong quá trình xử lý.

Ví dụ phản hồi lỗi:

{
  "endpoint": "/v1/image/screenshot/webpage",
  "code": 500,
  "id": "custom-job-123",
  "job_id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
  "response": null,
  "message": "Error message details",
  "pid": 12345,
  "queue_id": 140682639937472,
  "run_time": 0.123,
  "queue_time": 0.056,
  "total_time": 0.179,
  "queue_length": 1,
  "build_number": "1.0.0"
}

5. Xử lý lỗi

  • Thiếu hoặc tham số không hợp lệ: Trả về 400 với chi tiết.
  • Lỗi xác thực: Trả về 401.
  • Hàng đợi đầy: Trả về 429.
  • Lỗi xử lý: Trả về 500 với thông báo lỗi.

6. Ghi chú sử dụng

  • Nếu cung cấp webhook_url, yêu cầu được xử lý không đồng bộ và kết quả được gửi đến webhook.
  • Ảnh chụp màn hình luôn được tải lên cloud storage; phản hồi chứa URL tệp.
  • Sử dụng selector để chụp một phần tử cụ thể thay vì toàn bộ trang.
  • Tham số clip cho phép chụp một vùng cụ thể.
  • Endpoint thực thi xác thực payload nghiêm ngặt.

7. Vấn đề thường gặp

  • URL không hợp lệ hoặc không thể truy cập.
  • Selector không tìm thấy (nếu sử dụng wait_for_selector hoặc selector).
  • Cookie domain không khớp.
  • Lỗi timeout cho các trang tải chậm.
  • API key không hợp lệ.

8. Thực hành tốt nhất

  • Luôn xác thực các tham số đầu vào của bạn trước khi gửi yêu cầu.
  • Sử dụng các giá trị id duy nhất để theo dõi công việc.
  • Giám sát độ dài hàng đợi và xử lý lỗi 429 một cách nhẹ nhàng.
  • Sử dụng HTTPS cho tất cả URL và webhook.
  • Kiểm tra selector và trạng thái trang ở local trước khi tự động hóa ảnh chụp màn hình.

Kiểm tra Trạng thái Công việc

Sau khi gửi một công việc, bạn có thể kiểm tra trạng thái của nó bằng cách sử dụng job_id được trả về trong phản hồi.

Endpoint

URL Path: https://api.revidapi.com/paid/get/job/status
HTTP Method: POST

Yêu cầu

Headers

  • x-api-key (bắt buộc): API key để xác thực.
  • Content-Type: application/json

Tham số Body

{
  "job_id": "d290f1ee-6c54-4b01-90e6-d701748f0851"
}

Ví dụ Yêu cầu

curl -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"job_id": "d290f1ee-6c54-4b01-90e6-d701748f0851"}' \
  https://api.revidapi.com/paid/get/job/status

Phản hồi

Phản hồi Thành công

{
  "endpoint": "/v1/toolkit/job/status",
  "code": 200,
  "id": null,
  "job_id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
  "response": {
    "job_status": "done",
    "job_id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
    "queue_id": 140368864456064,
    "process_id": 123456,
    "response": {
      "endpoint": "/v1/image/screenshot/webpage",
      "code": 200,
      "id": "custom-job-123",
      "job_id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
      "response": "https://cloud.example.com/screenshot.png",
      "message": "success",
      "pid": 123456,
      "queue_id": 140368864456064,
      "run_time": 2.345,
      "queue_time": 0.012,
      "total_time": 2.357,
      "queue_length": 0,
      "build_number": "1.0.0"
    }
  },
  "message": "success",
  "pid": 123456,
  "queue_id": 140368864456064,
  "run_time": 0.001,
  "queue_time": 0.0,
  "total_time": 0.001,
  "queue_length": 0,
  "build_number": "1.0.0"
}

Phản hồi Lỗi

  • 404 Not Found: Nếu không tìm thấy công việc với job_id được cung cấp:
{
  "error": "Job not found",
  "job_id": "d290f1ee-6c54-4b01-90e6-d701748f0851"
}
  • 500 Internal Server Error: Nếu xảy ra lỗi không mong muốn:
{
  "error": "Failed to retrieve job status: <error_message>",
  "code": 500
}