Scarnox · Blog

AWS WAF captcha คืออะไรและจัดการอย่างไร

AWS WAF captcha คือการท้าทายที่ส่งมาจาก Web Application Firewall ของ Amazon เมื่อเจ้าของเว็บตั้งค่าให้ตรวจสอบผู้เข้าชม คำขอที่ firewall มองว่าน่าสงสัยจะได้รับหน้าท้าทายแทนเนื้อหา ผู้เข้าชมต้องผ่านการตรวจสอบก่อนที่หน้าจริงจะโหลด หากคุณเจอเรื่องนี้ระหว่างการทดสอบหรือการเก็บข้อมูล คุณต้องรู้วิธีจดจำมัน สิ่งที่เจ้าของเว็บควบคุมได้ และสิ่งที่ Scarnox ทำได้ในตอนนี้ คู่มือนี้ครอบคลุมทั้งสามเรื่อง

AWS WAF captcha คืออะไร

AWS WAF คือ rules engine ที่วางอยู่หน้าเว็บแอปพลิเคชัน บน Amazon CloudFront, Application Load Balancer หรือ API Gateway กฎสามารถอนุญาต บล็อก นับ หรือท้าทายคำขอได้ การท้าทายอาจเป็นการตรวจสอบ JavaScript แบบเงียบ หรือ captcha แบบปริศนาที่มองเห็น ขึ้นอยู่กับการตั้งค่ากฎ

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

วิธีจดจำในโค้ด

การท้าทายของ AWS WAF มักระบุตัวตนได้จากการตอบกลับ สัญญาณที่พบบ่อยคือ header การตอบกลับ x-amzn-waf-action และการท้าทายมักถูกส่งมาด้วยสถานะ HTTP 202 ก่อนที่หน้าจริงจะปรากฏ ให้ถือว่าสิ่งเหล่านี้เป็นสัญญาณ ไม่ใช่หลักฐานยืนยัน เพราะเว็บแต่ละแห่งตั้งค่า firewall ต่างกัน

import requests

def looks_like_aws_waf(resp: requests.Response) -> bool:
    # เป็นสัญญาณจาก header ไม่ใช่หลักฐานยืนยัน ให้ตรวจสอบกับหน้าที่คุณกำลังทดสอบ
    return "x-amzn-waf-action" in resp.headers

resp = requests.get("https://example.com/products", timeout=30)
if looks_like_aws_waf(resp):
    print("Challenge served. Stop, slow down, and check your request rate.")
else:
    print("Status", resp.status_code)

นอกจากนี้ให้มองหาสคริปต์ที่โหลดจาก path ของการท้าทาย AWS WAF ในซอร์สของหน้า และหน้าที่ไม่แสดงเนื้อหาจนกว่าสคริปต์จะทำงาน การเรียก requests ธรรมดามักได้รับหน้าท้าทายแทนข้อมูล ซึ่งเป็นเรื่องที่คาดไว้

เจ้าของเว็บทำอะไรได้บ้าง

หากคุณดูแลเว็บไซต์ คอนโซลของ AWS WAF ให้คุณปรับกฎที่กระตุ้นการท้าทายได้ ตัวเลือกที่มีประโยชน์ที่สุดคือ

หากคุณกำลังทดสอบเว็บของตัวเอง วิธีที่สะอาดที่สุดคือทำ allowlist ให้ test runner ของคุณ อย่าพยายามเอาชนะการท้าทายบนเว็บที่คุณไม่ได้ควบคุม นั่นคือการป้องกันของเจ้าของ และเป็นสิ่งแรกที่จะทำให้การเข้าถึงของคุณหยุดทำงาน

สถานะการรองรับของ Scarnox

ดังนั้นหากเว็บที่คุณได้รับอนุญาตให้ทำงานด้วยแสดงการท้าทาย AWS WAF ในวันนี้ ตัวเลือกคือแบบที่กล่าวไปข้างต้น ได้แก่ ชะลอคำขอ ใช้ allowlist หากเว็บเป็นของคุณ หรือขอ API หรือ data feed จากเจ้าของเว็บ คุณสามารถ สร้างบัญชี และเริ่มด้วยเครดิตทดลองใช้ฟรี ไม่ต้องใช้บัตร เพื่อตั้งค่าโฟลว์ PopularCaptcha ของคุณตอนนี้และพร้อมเมื่อการรองรับ AWS WAF เปิดใช้งาน ราคาปัจจุบัน อยู่ในหน้าราคา

ทดสอบเว็บของคุณที่อยู่หลัง AWS WAF

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

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

การ scrape อย่างรับผิดชอบ

หากเหตุผลที่คุณเข้าถึงหน้า AWS WAF คือการเก็บข้อมูล

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