วิธีแก้ไขเมื่อถูก Cloudflare บล็อค Cronjob

วิธีแก้ไขเมื่อถูก Cloudflare บล็อค Cronjob

วิธีแก้ไขเมื่อถูก Cloudflare บล็อค Cronjob

เมื่อ Cronjob ถูกบล็อกโดย Cloudflare อาจเกิดจากการตั้งค่าความปลอดภัยของ Cloudflare เช่น DDoS protection หรือ Firewall rules ที่มองว่า Cronjob เป็นการร้องขอที่ไม่ปลอดภัยหรือเป็นบ็อต วิธีแก้ไขสามารถทำได้หลายวิธีดังนี้:

1. สร้าง API Token สำหรับ Cronjob

  • Cloudflare อนุญาตให้คุณสร้าง API Token เพื่อให้ Cronjob เข้าถึงข้อมูลหรือทำงานได้อย่างถูกต้องและปลอดภัย แทนที่จะให้ Cronjob เรียกใช้งาน URL โดยตรง คุณสามารถให้มันเรียกผ่าน API พร้อม token ที่ Cloudflare ยอมรับได้
  • วิธีนี้ลดความเสี่ยงที่จะถูกบล็อก เพราะระบบ Cloudflare จะมองว่าเป็นการร้องขอที่ถูกต้องตามสิทธิ์

2. Whitelist IP ของเซิร์ฟเวอร์ที่รัน Cronjob

  • หากคุณมี IP ของเซิร์ฟเวอร์ที่แน่นอนซึ่ง Cronjob ทำงานอยู่ คุณสามารถเพิ่ม IP ของเซิร์ฟเวอร์นี้ลงใน Cloudflare Firewall เพื่อให้ Cloudflare ยอมรับการร้องขอจาก IP นั้น โดยไม่ตรวจสอบด้วยระบบรักษาความปลอดภัยที่เข้มงวด
  • ไปที่ Cloudflare Dashboard > Firewall > Tools > IP Access Rules และเพิ่ม IP ของเซิร์ฟเวอร์เข้าไป

3. ปิด Bypass Cloudflare สำหรับบางเส้นทาง (Page Rules)

  • หากคุณไม่ต้องการให้ Cloudflare ตรวจสอบเส้นทางที่ Cronjob เข้าถึง URL คุณสามารถสร้าง Page Rule เพื่อให้ Cloudflare Bypass การป้องกันในเส้นทางนั้น
  • ไปที่ Page Rules และตั้งค่า URL ที่จะถูกเรียกใช้โดย Cronjob และตั้งให้ไม่ต้องถูกตรวจสอบด้วย Security Level: Essentially Off

4. ใช้ User-Agent ที่เหมาะสม

  • Cloudflare มักจะบล็อคการร้องขอจาก User-Agent ที่ดูเหมือนบ็อตหรือโปรแกรมอัตโนมัติ เพื่อหลีกเลี่ยงปัญหานี้ คุณสามารถตั้งค่าให้ Cronjob ใช้ User-Agent ที่ Cloudflare จะยอมรับ (เช่น ตั้งเป็น User-Agent ของเว็บเบราว์เซอร์ธรรมดา)

ตัวอย่างการตั้งค่าใน Cronjob:

curl -A "Mozilla/5.0" http://example.com/cronjob

5. ลดจำนวน Request ที่เกิดจาก Cronjob

  • หาก Cronjob ส่งคำร้องขอ (request) บ่อยเกินไป Cloudflare อาจมองว่าเป็นการโจมตี คุณสามารถลดความถี่ของการรัน Cronjob เพื่อหลีกเลี่ยงการบล็อก

6. ตรวจสอบ Firewall Rules และ Security Settings ของ Cloudflare

  • หากคุณใช้ Custom Firewall Rules หรือตั้งค่า Security Level ใน Cloudflare ไว้สูงเกินไป คุณอาจต้องปรับระดับลง หรือเพิ่มข้อยกเว้นให้ Cronjob ผ่านการตรวจสอบได้

การปรับแก้ตามขั้นตอนเหล่านี้จะช่วยให้ Cronjob ทำงานได้ตามปกติโดยไม่ถูก Cloudflare บล็อก