วิธีหา sitekey ของ captcha ในหน้าใดก็ได้ (4 วิธี)
การแก้ captcha ทุกครั้งเริ่มจาก sitekey ซึ่งเป็นรหัสสาธารณะที่เว็บลงทะเบียนไว้กับผู้ให้บริการ captcha เบราว์เซอร์มองเห็นมัน ดังนั้นคุณก็อ่านได้เช่นกัน สำหรับ PopularCaptcha sitekey คือ UUID เช่น a5f74b19-9e45-40e0-b45d-47ff91b7a6c2 ผู้ให้บริการอื่นใช้รูปแบบที่ต่างออกไป เช่น คีย์ของ Google reCAPTCHA ขึ้นต้นด้วย 6L นี่คือสี่ตำแหน่งที่จะหาได้ เรียงจากง่ายที่สุดไปจนถึงเชื่อถือได้มากที่สุด
Scarnox แก้ PopularCaptcha ได้ในวันนี้ การค้นหา sitekey ทำงานเหมือนกันกับ captcha ทุกประเภท ดังนั้นวิธีเหล่านี้ก็ช่วยเมื่อคุณวางแผนสำหรับประเภทอื่นได้ด้วย ประเภทอื่น เช่น reCAPTCHA และ Cloudflare Turnstile เร็ว ๆ นี้
1. attribute data-sitekey
เปิด DevTools (F12) ไปที่ Elements กด Ctrl+F แล้วค้นหา data-sitekey widget ส่วนใหญ่ใส่ key ไว้ใน attribute แบบนี้
<div class="h-captcha" data-sitekey="a5f74b19-9e45-40e0-b45d-47ff91b7a6c2"></div>
หากพบตรงนี้ คุณเสร็จแล้ว คัดลอกค่าและไปต่อที่การแก้
2. แท็บ network
หาก widget ถูกเรนเดอร์โดย JavaScript attribute อาจไม่เคยปรากฏใน HTML เปิด Network รีโหลดหน้า แล้วกรองหาคำขอ configuration ของ widget สำหรับ PopularCaptcha คำขอนั้นมักชื่อ checksiteconfig sitekey เป็นหนึ่งใน query parameter ของมัน
.../checksiteconfig?v=...&host=example.com&sitekey=a5f74b19-...
การกรองด้วยคำว่า sitekey ใน URL ของคำขอก็ใช้ได้ หากชื่อต่างออกไปในเว็บที่คุณกำลังทดสอบ
3. URL ของ iframe
การท้าทายเองเป็น iframe ที่ผู้ให้บริการ captcha ให้มา src ของมันมี sitekey เป็นพารามิเตอร์ คลิกขวาที่ widget เลือก Inspect แล้วอ่านค่าจาก address ของ iframe นี่คือวิธีที่เชื่อถือได้ที่สุดเมื่อหน้าซ่อน attribute จากเอกสารหลัก
4. widget แบบ invisible
widget แบบ invisible ไม่มีช่องติ๊ก เว็บเรียกฟังก์ชัน render() หรือ execute() ของ widget จากโค้ดของตัวเอง และ sitekey ถูกส่งเป็นอาร์กิวเมนต์ ค้นหาใน JavaScript ของหน้า: เปิดแผง Sources แล้วกด Ctrl+Shift+F จากนั้นค้นหา sitekey sitekey แบบ invisible ต้องตั้งธงแบบ invisible ตอนแก้ ดู การแก้ captcha แบบ invisible
การอ่าน sitekey จากสคริปต์
หาก attribute อยู่ใน HTML ดิบ สคริปต์สามารถอ่านได้โดยไม่ต้องใช้เบราว์เซอร์
import re
import requests
html = requests.get("https://example.com/signup", timeout=30).text
m = re.search(r'data-sitekey="([^"]+)"', html)
print(m.group(1) if m else "no data-sitekey in the raw HTML")
หากสิ่งนี้พิมพ์ออกมาเป็นค่าว่าง แสดงว่า widget ถูกเรนเดอร์โดย JavaScript ให้ใช้เบราว์เซอร์จริง ตามวิธีแท็บ Network ด้านบน ดึงเฉพาะหน้าที่คุณได้รับอนุญาตให้ทำ automation และรักษาอัตราคำขอให้ต่ำ
URL ใดคู่กับมัน
ส่ง URL ของหน้าที่มี widget เป็น site_url โฮสต์คือสิ่งที่สำคัญที่สุด ดังนั้น https://example.com/signup คือค่าที่ควรใช้สำหรับ widget ของหน้าสมัครสมาชิก คำขอเต็มสำหรับ PopularCaptcha มีลักษณะดังนี้
{
"captcha_type": "PopularCaptchaTaskProxyless",
"site_key": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2",
"site_url": "https://example.com/signup"
}
ส่งไปยัง https://api.scarnox.com/api/tasks/create พร้อม key ของคุณใน header Authorization: Bearer การเรียกจะบล็อกจนกว่า token จะพร้อม จึงไม่มีคำขอที่สองเพื่อตรวจผลลัพธ์
ปัญหาที่พบบ่อย
- มี sitekey สองตัวในหน้าเดียว บางครั้งเว็บใส่ widget หนึ่งสำหรับฟอร์มเข้าสู่ระบบและอีกตัวสำหรับสมัครสมาชิก จับคู่ key กับฟอร์มที่ปฏิเสธคุณจริง ๆ และดูว่าตัวไหนอยู่ใกล้ปุ่ม submit ที่สุด
- key เปลี่ยนระหว่างการเยี่ยมชม อ่านใหม่ทุกครั้งที่รัน key ปกติคงที่ แต่ key ที่แคชจาก deploy เก่าอาจหยุดทำงาน
- พบ key แต่ token ถูกปฏิเสธ sitekey น่าจะถูกต้อง ให้ตรวจขนาด widget และการตั้งค่า proxy ต่อไป เริ่มที่คู่มือ invisible captcha และการเปรียบเทียบ proxy
ตรวจว่าคุณได้ sitekey ที่ถูกต้อง
หน้าหนึ่งอาจมีมากกว่าหนึ่ง sitekey วิดเจ็ตวิเคราะห์ ความคิดเห็น และกล่องจดหมายข่าวบางครั้งเพิ่ม key ของตัวเอง ก่อนแก้ ให้ยืนยันว่า sitekey เป็นของฟอร์มที่คุณกำลังทำ automation อยู่ มีสามการตรวจสอบรวดเร็วที่ช่วยได้
- ค้นหาปุ่ม submit ของฟอร์มใน DevTools แล้วไล่ขึ้นไปใน DOM จนถึง element ที่ใกล้ที่สุดที่มี
data-sitekeyนั่นคือ widget ที่คุ้มครองฟอร์ม - เทียบ key กับค่าใน URL ของ iframe หากตรงกัน คุณได้ key ที่ widget ใช้จริง
- submit ฟอร์มด้วยตนเองหนึ่งครั้งด้วย token ที่แก้แล้ว หากคุณได้รับอนุญาต และตรวจว่าเว็บยอมรับ
key อาจเปลี่ยนเมื่อเว็บถูก deploy ใหม่ หาก key ที่ใช้ได้เมื่อวานหยุดสร้าง token ที่ถูกยอมรับ ให้อ่านหน้าใหม่ก่อนเปลี่ยนอย่างอื่น การอ่านใหม่ไม่มีค่าใช้จ่าย และตัดสาเหตุที่พบบ่อยที่สุดของความล้มเหลวกะทันหันออกไป
หน้าที่โหลด widget หลังจากคลิกเท่านั้นต้องมีขั้นตอนเพิ่มอีกหนึ่งขั้น เปิดหน้า ทำการคลิกที่แสดง widget แล้วจึงอ่าน sitekey การอ่านหน้าก่อนคลิกจะได้ค่าว่าง ซึ่งดูเหมือน widget หายไป แต่จริง ๆ เป็นปัญหาเรื่องจังหวะเวลา รอให้ element ที่ตรงกับ [data-sitekey] ปรากฏ แทนการหน่วงเวลาตายตัว
ขั้นตอนถัดไป
- วิธีแก้ PopularCaptcha ด้วย Python
- การแก้ PopularCaptcha ใน Playwright และ Puppeteer
- ประเภทของ captcha
- ทดลองใช้ captcha solver ฟรี
เริ่มด้วยเครดิตทดลองใช้ฟรี ไม่ต้องใช้บัตร: สร้างบัญชี และทดสอบ sitekey แรกของคุณ