Skip to content

โหมดล่องหน ​

โหมดล่องหนแก้ challenge จากโค้ดของคุณเองโดยไม่แสดงอะไรบนหน้า เหมาะกับการกระทำที่ไม่มีฟอร์ม เช่น ปุ่มถูกใจหรือคำขอที่ทำงานเบื้องหลัง

js
import Cap from "cap-widget";

const cap = new Cap({ apiEndpoint: "https://cap.example.com/<site-key>/" });
const { token } = await cap.solve();

เมื่อใช้สคริปต์จาก CDN Cap จะเป็นตัวแปร global และไม่ต้อง import

API ​

new Cap(config, element?) ​

ต้องระบุ config.apiEndpoint เว้นแต่คุณตั้ง CAP_CUSTOM_FETCH ไว้ คีย์อื่น ๆ จะถูกตั้งเป็นแอตทริบิวต์บนวิดเจ็ต จึงใช้แอตทริบิวต์ของวิดเจ็ตที่นี่ได้ด้วย:

js
const cap = new Cap({
  apiEndpoint: "https://cap.example.com/<site-key>/",
  "data-cap-worker-count": "4",
});

หากไม่ส่ง element Cap จะสร้าง <cap-widget> แบบซ่อนที่ปิดการสั่นไว้ วิดเจ็ตที่ซ่อนจะไม่ขอหรือแก้ challenge ล่วงหน้า งานทั้งหมดจึงเกิดขึ้นเมื่อคุณเรียก solve() หากต้องการควบคุมวิดเจ็ตที่มีอยู่แล้ว ให้ส่งวิดเจ็ตนั้นเข้ามา

cap.solve() ​

ขอและแก้ challenge โดย resolve เป็น { success, token }

เมื่อล้มเหลว จะส่งเหตุการณ์ error และ reject promise ด้วย Error ที่มี code เป็นหนึ่งในรหัสข้อผิดพลาด เช่น instr_csp_blocked สำหรับเฟรมที่ถูกบล็อก:

js
try {
  const { token } = await cap.solve();
} catch (err) {
  console.error(err.code, err.message);
}

หากเรียกขณะกำลังแก้ challenge อยู่ จะ resolve เป็น undefined

cap.token ​

คืนค่า token จากการแก้ครั้งล่าสุด หรือ null

cap.reset() ​

ล้าง token

cap.addEventListener(type, listener) ​

ดักฟังเหตุการณ์ของวิดเจ็ต:

js
cap.addEventListener("progress", (e) => {
  console.log(`${e.detail.progress}%`);
});

คีย์ที่ให้คะแนนพฤติกรรม ​

การแก้ในโหมดล่องหนไม่มีการคลิกวิดเจ็ต บนคีย์ที่ให้คะแนนพฤติกรรม ผลตัดสินจะเป็น no_interaction จึงล้มเหลวบนคีย์ที่เปิดการบล็อกและกำหนดให้ต้องมีการโต้ตอบ ในไลบรารี core ให้ตั้ง requireInteraction: false ในนโยบาย behavior สำหรับ route เหล่านั้น

เผยแพร่ภายใต้สัญญาอนุญาต Apache 2.0