Scarnox · Blog

วิธี scrape เว็บไซต์ที่ป้องกันด้วย Cloudflare (คู่มือปี 2026)

Cloudflare อยู่หน้าเว็บสาธารณะจำนวนมาก ดังนั้น scraper ที่ทำงานได้กับเว็บไซต์หนึ่งมักจะชนกำแพงกับอีกเว็บไซต์ถัดไป คุณมักสังเกตเห็นเรื่องนี้จาก HTTP 403 หรือ 503 หน้า interstitial "Just a moment..." หรือ checkbox ของ Turnstile บนหน้า คู่มือนี้อธิบายว่า Cloudflare ตรวจสอบอะไร วิธีแก้ที่ได้ผลโดยไม่แตะสิ่งที่คุณไม่ควรแตะ และ solve captcha เข้ามาเกี่ยวข้องตรงไหน คำตอบสั้น ๆ คือ ตรวจว่าคุณได้รับอนุญาตให้ scrape เว็บไซต์นั้นหรือไม่ ชะลอ ส่ง request ที่ดูเหมือน client ปกติ ใช้เบราว์เซอร์จริงเมื่อหน้าต้องการ JavaScript และค่อยจัดการ captcha หลังจากนั้น Turnstile เป็น captcha ที่ Cloudflare ใช้บ่อยที่สุด การรองรับ Turnstile ของ Scarnox กำลังจะมาเร็ว ๆ นี้ captcha ที่ใช้งานได้จริงในวันนี้คือ PopularCaptcha

Cloudflare ตรวจสอบอะไร

Cloudflare ให้คะแนนทุก request ด้วยสัญญาณหลายอย่าง:

คะแนนสูงจะผ่านโดยไม่มีใครเห็น คะแนนปานกลางจะได้ความท้าทายแบบโต้ตอบ คะแนนต่ำจะถูกบล็อก งานส่วนใหญ่คือการทำให้คะแนนของคุณสูงขึ้นด้วยการประพฤติตัวเป็น client ที่ดี ไม่ใช่การต่อสู้กับการตรวจสอบ

ขั้นตอนที่ 1: ตรวจว่าคุณควร scrape เว็บไซต์นี้หรือไม่

ก่อนทำงานทางเทคนิคใด ๆ ให้อ่าน robots.txt และข้อกำหนดการให้บริการของเว็บไซต์ การบล็อกมักเป็นเจ้าของบอกอะไรบางอย่างกับคุณ การ scrape หน้าสาธารณะอย่างช้า ๆ และเพื่อวัตถุประสงค์ที่ชัดเจนเป็นเรื่องหนึ่ง การฝ่าการบล็อกเพื่อเข้าถึงข้อมูลที่เจ้าของจำกัดไว้เป็นอีกเรื่องหนึ่ง ซึ่งเป็นการใช้งานที่ Scarnox ไม่รองรับ ภาพรวมทางกฎหมาย ครอบคลุมคำถามทั่วไป

ขั้นตอนที่ 2: ทำให้คำขอพื้นฐานถูกต้อง

scraper จำนวนมากที่ดูเหมือนถูกบล็อกจริง ๆ แล้วกำลังส่ง request ที่ไม่ดี แก้เหล่านี้ก่อน:

import random
import time
import requests

session = requests.Session()
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                  "(KHTML, like Gecko) Chrome/124.0 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9",
})

def polite_get(url: str, attempts: int = 4) -> requests.Response:
    r = None
    for attempt in range(attempts):
        r = session.get(url, timeout=30)
        if r.status_code not in (429, 503):
            return r
        # Exponential backoff พร้อม jitter: ประมาณ 1, 2, 4 วินาทีบวกสัญญาณรบกวนเล็กน้อย
        time.sleep(2 ** attempt + random.uniform(0, 1))
    return r

หากวิธีนี้ทำให้คุณผ่านได้ ก็เสร็จแล้ว ให้คงการหน่วงเวลาไว้

ขั้นตอนที่ 3: ระบุว่าคุณกำลังเจอความท้าทายแบบไหน

การตอบกลับบอกคุณได้มาก:

การตรวจว่าคุณเห็นแบบไหนช่วยประหยัดความพยายามที่สูญเปล่าได้มาก

ขั้นตอนที่ 4: ใช้เบราว์เซอร์จริงเมื่อหน้าต้องการ

หากหน้าแสดงเนื้อหาหลังจาก JavaScript ทำงาน HTTP client ธรรมดาจะไม่เห็นเนื้อหานั้นเลย ให้ควบคุมเบราว์เซอร์เต็มรูปแบบด้วย Playwright หรือ Selenium แทน headless browser ตรวจจับได้ ดังนั้นให้อ่าน การตรวจจับ headless browser ก่อนพึ่งพามัน และตั้งค่าให้ตรงกับสภาพแวดล้อมที่ผู้เข้าชมจริงจะใช้ คู่มือ JavaScript แสดงตัวอย่างที่สมบูรณ์

ขั้นตอนที่ 5: ดูชื่อเสียงของ IP ของคุณ

address ของศูนย์ข้อมูลคลาวด์เป็นสาเหตุที่พบบ่อยที่สุดที่ request ที่สะอาดได้คะแนนต่ำ address แบบ residential มักได้คะแนนดีกว่า แต่มีต้นทุนด้านความเร็วและเงินที่สูงกว่า การแลกเปลี่ยนนี้อธิบายไว้ใน residential vs datacenter proxies

การหมุนก็มีกับดักของตัวเอง การเปลี่ยน address ทุก request ดูไม่เป็นธรรมชาติ เพราะผู้เข้าชมจริงใช้ address เดียวตลอดการเยี่ยมชม sticky session ซึ่งเก็บ address ไว้สำหรับชุด request ที่เกี่ยวข้องกัน มักทำงานได้ดีกว่าการหมุนอย่างรวดเร็ว Rotating proxies สำหรับ scraping อธิบายรายละเอียด

ขั้นตอนที่ 6: การ solve captcha เข้ามาเกี่ยวข้องตรงไหน

บางครั้ง widget ปรากฏขึ้นจริง บนฟอร์มที่คุณกำลังทดสอบหรือหน้าที่คุณได้รับอนุญาตให้ automate Turnstile token จึงเป็นขั้นตอนที่จำเป็นใน flow นั้น การรองรับ Turnstile ของ Scarnox กำลังจะมาเร็ว ๆ นี้ ดังนั้นอย่าสร้างโค้ดโปรดักชันบนมันในตอนนี้ captcha ที่ใช้งานได้จริงวันนี้คือ PopularCaptcha ซึ่งใช้ widget อีกแบบ

workflow ทั่วไปสำหรับ token-based captcha ใด ๆ เหมือนกัน คุณอ่าน sitekey จากหน้า ขอ token และวาง token ลงในฟิลด์ฟอร์มที่เว็บไซต์คาดหวัง token มีอายุสั้น ดังนั้นส่งทันที คู่มือ PopularCaptcha ด้วย Python แสดง workflow นั้นครบทั้งกระบวนการ และ ประเภทของ captcha ที่ควรรู้ เปรียบเทียบ widget ที่คุณจะพบ

หากคุณต้องการพร้อมเมื่อการรองรับ Turnstile เปิดให้ใช้งาน คุณเริ่มทดลองใช้ฟรีได้ตอนนี้ เริ่มต้นด้วยเครดิตทดลองใช้ฟรี ไม่ต้องใช้บัตรเครดิต: สร้างบัญชี สำหรับอัตราปัจจุบันของ captcha ประเภทที่ใช้งานได้จริง ดูที่ หน้าราคา

Scrape อย่างมีความรับผิดชอบ

ขั้นตอนถัดไป