WordPress Malware & Virus

Cloaking คืออะไร? ทำไมเปิดเว็บดูเองปกติ แต่ใน Google กลับเป็นเว็บพนัน

Cloaking คืออะไร? ทำไมเปิดเว็บดูเองปกติ แต่ใน Google กลับเป็นเว็บพนัน

สรุปคำตอบ

Cloaking คือการแสดงเนื้อหาให้ผู้ใช้กับเครื่องมือค้นหาต่างกัน โดยมีเจตนาปั่นอันดับและทำให้ผู้ใช้เข้าใจผิด ตามนิยามของ Google ในเว็บที่ถูกแฮก โค้ดจะคัดแยกผู้เข้าชมจาก User-Agent, IP, referrer หรือสถานะล็อกอิน แล้วแสดงเนื้อหาพนันเฉพาะกับ Googlebot เจ้าของเว็บจึงเห็นหน้าปกติ วิธีตรวจคือดู HTML ที่ Google เห็นผ่าน URL Inspection ใน Search Console แล้วล้างโค้ดและขอ Review

Cloaking คือการแสดงเนื้อหาให้ผู้ใช้กับเครื่องมือค้นหาแตกต่างกัน โดยมีเจตนาปั่นอันดับและทำให้ผู้ใช้เข้าใจผิด นี่คือนิยามในนโยบายสแปมของ Google ซึ่งเขียนว่า “Cloaking refers to the practice of presenting different content to users and search engines with the intent to manipulate search rankings and mislead users” (Google Search Central: Spam policies) ในเว็บที่ถูกแฮก cloaking คือเหตุผลที่เจ้าของเปิดเว็บดูเองแล้วทุกอย่างปกติ แต่ผลค้นหาใน Google กลับขึ้นหัวข้อสล็อตหรือบาคาร่าใต้โดเมนของตัวเอง

Cloaking ไม่ใช่มัลแวร์ชนิดแยก แต่เป็นเทคนิคซ่อนตัวที่มัลแวร์เว็บไซต์หลายประเภทใช้ร่วมกัน โดยเฉพาะ SEO Spam ภาพรวมของมัลแวร์แต่ละประเภทอยู่ในบทความ Malware คืออะไร และรายละเอียดของการฝังลิงก์และหน้าสแปมอยู่ในบทความ เว็บโดนฝังลิงก์พนัน (SEO Spam)

Cloaking คืออะไร

นโยบายของ Google ยกตัวอย่าง cloaking ไว้ เช่น การแสดงหน้าเกี่ยวกับการท่องเที่ยวให้เครื่องมือค้นหา แต่แสดงหน้าขายยาลดราคาให้ผู้ใช้ และการแทรกคำค้นลงในหน้าเฉพาะเมื่อผู้ร้องขอเป็นเครื่องมือค้นหา (Spam policies: Cloaking) ในนโยบายเดียวกัน หมวด hacked content ระบุว่า content injection อาจใช้ cloaking ร่วมด้วย และรายงาน Security issues ใน Search Console ก็อธิบายว่าแฮกเกอร์ “อาจซ่อนเนื้อหาสแปมด้วยเทคนิค cloaking เพื่อไม่ให้เจ้าของเว็บตรวจพบ” (Search Console Help: Security issues report)

หัวใจของนิยามคือ “เจตนา” และ “ความแตกต่างของเนื้อหา” Google ระบุกรณีที่ไม่ถือเป็น cloaking ไว้อย่างน้อยสองกรณี

กรณี สิ่งที่ Google ระบุ
Paywall หรือเนื้อหาที่ต้องสมัครสมาชิก ไม่ถือเป็น cloaking ถ้า Google เห็นเนื้อหาเต็มเหมือนคนที่มีสิทธิ์เข้าถึง (Spam policies) และ structured data สำหรับ paywalled content ช่วยให้ Google แยกเนื้อหาแบบนี้ออกจาก cloaking (Paywalled content structured data)
Dynamic rendering Googlebot โดยทั่วไปไม่ถือว่าเป็น cloaking ตราบใดที่เนื้อหาที่ได้ใกล้เคียงกัน แต่ถ้าใช้ส่งเนื้อหาคนละเรื่องให้ผู้ใช้กับ crawler ถือเป็น cloaking ได้ (Dynamic rendering as a workaround)

สำหรับเว็บที่ถูกแฮก ไม่มีความกำกวม เนื้อหาพนันที่เจ้าของไม่ได้สร้างและแสดงเฉพาะกับ Googlebot คือ cloaking ตามนิยามโดยตรง

Cloaking ทำงานอย่างไร

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

เงื่อนไขที่ใช้คัดแยก หลักการ ผลที่เจ้าของเว็บเห็น
User-Agent ถ้าข้อความระบุตัวเบราว์เซอร์มีคำว่า Googlebot ให้ส่งหน้าสแปม เปิดด้วยเบราว์เซอร์ปกติไม่เห็นอะไร
IP address ตรวจว่า IP มาจากเครือข่ายของ Google หรือไม่ เช่น ด้วย reverse DNS ปลอม User-Agent เป็น Googlebot ก็ยังไม่เห็น
Referrer ส่งเนื้อหาต่างไปเฉพาะคนที่คลิกมาจากผลค้นหา พิมพ์ URL เข้าเองไม่เห็น
สถานะล็อกอิน / คุกกี้ ไม่แสดงสแปมให้ผู้ใช้ที่ล็อกอิน WordPress อยู่ แอดมินไม่เห็นเลย
อุปกรณ์ แสดงเฉพาะมือถือหรือเฉพาะเดสก์ท็อป เห็นเฉพาะบางเครื่อง

ประเด็นเรื่อง IP น่าสนใจในเชิงวิชาการ Google เผยแพร่วิธียืนยันว่า request มาจาก Google จริง คือทำ reverse DNS แล้วตรวจว่าชื่อโดเมนเป็น googlebot.com, google.com หรือ googleusercontent.com จากนั้นทำ forward DNS ยืนยันซ้ำ หรือเทียบกับไฟล์ JSON ของช่วง IP ที่ Google เผยแพร่ (Google: Verifying Googlebot and other Google crawlers) ข้อมูลชุดเดียวกันที่ช่วยผู้ดูแลเว็บกันบอทปลอม ผู้โจมตีก็นำไปใช้คัดแยก Googlebot ตัวจริงได้เช่นกัน ส่วนการซ่อนจากผู้ใช้ที่ล็อกอินอยู่ มีตัวอย่างจริงในรายงานของ Sucuri ที่มัลแวร์เลือกแสดงลิงก์สแปมเฉพาะผู้ใช้ที่ไม่ได้ลงทะเบียน (Sucuri, 2018)

ตัวอย่างโค้ด Cloaking ในเว็บที่ถูกแฮก

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

ตัวอย่างโค้ดอันตราย · ตัดให้ใช้งานไม่ได้

1. ตัวคัดแยกที่เช็กทั้ง User-Agent, IP และสถานะล็อกอิน

<?php
$ua  = strtolower( $_SERVER['HTTP_USER_AGENT'] ?? '' );
$ip  = $_SERVER['REMOTE_ADDR'] ?? '';
$bot = strpos( $ua, 'googlebot' ) !== false
    && preg_match( '/\.(googlebot|google)\.com$/', gethostbyaddr( $ip ) );

if ( $bot && empty( $_COOKIE ) ) {
    // ดึงหน้าสแปมพนันจาก https://spam-feed.example/… มาแสดงแทน — ตัดออก
    …
    exit;
}
// ผู้ใช้ทั่วไปและแอดมินได้หน้าเว็บปกติ

จุดสังเกต: โค้ดที่อ่าน HTTP_USER_AGENT หรือเรียก gethostbyaddr() แล้วแยกทางแสดงผล เว็บธุรกิจทั่วไปไม่มีเหตุผลต้องส่งเนื้อหาต่างกันให้ Googlebot ยกเว้นระบบแคชหรือ Plugin ด้านความปลอดภัยบางตัว ซึ่งต้องตรวจว่าเป็น Plugin ที่คุณติดตั้งเอง

มักซ่อนอยู่ที่: บรรทัดบนสุดของ index.php, wp-config.php, functions.php ของ Theme หรือไฟล์ใน wp-content/mu-plugins/

คำสั่งตรวจสอบ · ใช้ได้จริง

2. เทียบหน้าที่ได้เมื่อเรียกด้วย User-Agent ปกติกับ User-Agent ของ Googlebot

# นับคำต้องสงสัยในหน้าที่ได้จากเบราว์เซอร์ทั่วไป
curl -s -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" https://yoursite.example/ | grep -ciE 'สล็อต|บาคาร่า|casino'

# นับคำเดียวกันเมื่ออ้างตัวเป็น Googlebot
curl -s -A "Mozilla/5.0 (compatible; Googlebot/2.1)" https://yoursite.example/ | grep -ciE 'สล็อต|บาคาร่า|casino'

# หาไฟล์ PHP ที่อ้างถึง googlebot หรือเรียก reverse DNS
grep -rlE 'googlebot|gethostbyaddr' --include='*.php' .

เปลี่ยน yoursite.example เป็นโดเมนของคุณ ถ้าตัวเลขสองบรรทัดแรกต่างกัน เว็บมี cloaking แบบ User-Agent แต่ถ้าเท่ากันยังสรุปไม่ได้ว่าปลอดภัย เพราะ cloaking ที่ตรวจ IP จะไม่ทำงานกับเครื่องของคุณ ผลของ grep อาจมี Plugin ปกติ (เช่น ระบบแคชหรือ SEO) ต้องอ่านบริบทก่อนลบ

ทำไมเจ้าของเว็บถึงรู้ตัวช้า

  • เจ้าของอยู่ในกลุ่มที่ถูกคัดออก เจ้าของมักเข้าเว็บโดยพิมพ์ URL เอง ล็อกอินค้างไว้ และใช้ IP ที่ไม่ใช่ของ Google ซึ่งตรงกับทุกเงื่อนไขที่โค้ดใช้คัดออกในตารางข้างต้น
  • ผู้โจมตีหลอกว่าหน้าหายแล้ว คู่มือของ web.dev เตือนว่าแฮกเกอร์จะพยายามทำให้คุณคิดว่าหน้าหายไปหรือแก้แล้วทั้งที่ยังถูกแฮกอยู่ โดยใช้ cloaking เช่น แสดง 404 ให้คุณเห็น แต่หน้าสแปมยังอยู่ (web.dev: Fix the Japanese keyword hack; web.dev: Fix the cloaked keywords and links hack)
  • ผลกระทบปรากฏเฉพาะในผลค้นหา คนส่วนใหญ่ไม่ได้ค้นชื่อเว็บของตัวเองใน Google เป็นประจำ จากเคสที่เราแก้ เจ้าของมักรู้จากลูกค้าหรือจากอีเมลของ Search Console

วิธีตรวจสอบด้วย URL Inspection ใน Google Search Console

URL Inspection คือเครื่องมือที่ใกล้เคียงที่สุดกับการดูเว็บ “ผ่านสายตาของ Google” ทั้ง web.dev และ Search Console แนะนำให้ใช้ตรวจ cloaking (web.dev: How do I know if my site was hacked?) เครื่องมือนี้มีสองมุมมองที่ควรใช้คู่กัน

  1. View crawled page แสดงข้อมูลจากครั้งที่ Google รวบรวมข้อมูลไว้ในดัชนี ได้แก่ HTML ที่ได้รับ ภาพหน้าจอ และ HTTP headers (Search Console Help: URL Inspection tool) ให้เปิดแท็บ HTML แล้วค้นคำว่า สล็อต บาคาร่า หรือโดเมนแปลก
  2. Test live URL ดึง URL แบบเรียลไทม์แล้วให้ดูผ่าน View tested page ใช้ตรวจว่าหลังล้างแล้ว Google ได้หน้าอะไร
  3. เทียบกับสิ่งที่คุณเห็น เปิดหน้าเดียวกันในหน้าต่างไม่ระบุตัวตนแล้วดูซอร์ส ถ้า HTML ใน Search Console มีเนื้อหาที่เบราว์เซอร์ของคุณไม่มี แปลว่ามีการแสดงผลแยกกลุ่ม

ข้อควรรู้ที่มักถูกมองข้าม การทดสอบสดใน Search Console ใช้ crawler ชื่อ Google-InspectionTool ซึ่ง User-Agent สำหรับมือถือลงท้ายด้วย (compatible; Google-InspectionTool/1.0) ขณะที่ Googlebot Smartphone ลงท้ายด้วย (compatible; Googlebot/2.1; +http://www.google.com/bot.html) (Google: Common crawlers) ดังนั้นโค้ดที่เช็กเฉพาะคำว่า googlebot อาจไม่ทำงานในการทดสอบสด ผลทดสอบสดที่ดูสะอาดจึงไม่พอเป็นหลักฐาน ควรดู View crawled page ประกอบ และใช้วิธีในบทความ เช็คเว็บติดไวรัสด้วยเครื่องมือฟรี ร่วมด้วย

สรุปสั้น: ใช้ View crawled page เพื่อดูว่า Google เคยเห็นอะไร ใช้ Test live URL เพื่อดูว่า Google เห็นอะไรตอนนี้ และอย่าสรุปว่าเว็บสะอาดจากการเปิดดูด้วยเบราว์เซอร์ของตัวเองเพียงอย่างเดียว

บทลงโทษจาก Google

  • อันดับลดหรือไม่แสดงในผลค้นหา Google ตรวจจับการละเมิดทั้งด้วยระบบอัตโนมัติและการตรวจโดยคนซึ่งอาจนำไปสู่ manual action และระบุว่าเว็บที่ละเมิดนโยบาย “may rank lower in results or not appear in results at all” (Spam policies)
  • Manual action ประเภท Cloaking and/or sneaky redirects เป็นหนึ่งในประเภทที่แสดงในรายงาน Manual actions ของ Search Console (Manual actions report)
  • คำเตือนด้านความปลอดภัย ถ้าเกิดจากการถูกแฮก หน้าที่ได้รับผลกระทบอาจแสดงป้ายเตือนในผลค้นหา หรือหน้าเตือนในเบราว์เซอร์ (Security issues report)

ในเว็บที่ถูกแฮก ปัญหาอาจปรากฏในรายงาน Security issues, Manual actions หรือทั้งสองรายงาน ควรเปิดดูทั้งคู่ วิธีอ่านรายงาน Security issues อยู่ในบทความ Search Console แจ้ง Security Issues

วิธีแก้ไขและยื่นขอตรวจสอบใหม่

  1. หาตัวคัดแยกให้เจอ ไล่ไฟล์ที่ web.dev ระบุว่ามักถูกแทรกสคริปต์ คือ index.php, wp-load.php, 404.php และ view.php รวมถึงกฎ rewrite ใน .htaccess และโค้ดที่ใช้ฟังก์ชันอย่าง base64_decode, eval หรือ gzinflate (web.dev)
  2. ลบเนื้อหาที่ถูกซ่อน ทั้งหน้าสแปม ลิงก์ในฐานข้อมูล และ option ที่เก็บ payload ขั้นตอนละเอียดอยู่ในบทความ เว็บโดนฝังลิงก์พนัน
  3. ปิดทางกลับเข้ามา cloaking มักมาพร้อม Backdoor ถ้าลบเฉพาะตัวคัดแยก ผู้โจมตีจะติดตั้งใหม่ได้ อ่าน Backdoor ใน WordPress และถ้าพบการเด้งร่วมด้วย ดู เว็บเด้งไปเว็บอื่น
  4. ยืนยันผลด้วย URL Inspection คู่มือ web.dev แนะนำให้ตรวจ URL ที่ถูกแฮกซ้ำ ถ้าตอบกลับเป็น Not Found แสดงว่าน่าจะอยู่ในสภาพดี
  5. ยื่นขอตรวจสอบใหม่ ถ้าเป็นปัญหาความปลอดภัย กด Request Review ในรายงาน Security issues แล้วอธิบายสิ่งที่แก้ (Security issues report) ถ้าเป็น manual action ให้ส่ง reconsideration request ที่อธิบายปัญหา ขั้นตอนที่แก้ และผลลัพธ์ (Manual actions report)

เรื่องระยะเวลา เอกสาร Search Console ระบุว่า reconsideration review ส่วนใหญ่ใช้เวลาหลายวันถึงหลายสัปดาห์ และไม่แนะนำให้ส่งซ้ำก่อนได้รับผล ส่วน web.dev ระบุว่า Review ของเว็บที่ถูกแฮกด้วยสแปมอาจใช้เวลาถึงหลายสัปดาห์ (web.dev: Request a review) ถ้าต้องการให้ผู้เชี่ยวชาญตามหาตัวคัดแยกและล้างให้ครบก่อนยื่น ดูบริการ ล้างไวรัสและมัลแวร์ WordPress

คำถามที่พบบ่อย

Cloaking คืออะไร อธิบายสั้นๆ?

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

ทำไมเปิดเว็บเองปกติ แต่ใน Google เป็นเว็บพนัน?

โค้ด cloaking คัดแยกผู้เข้าชมจาก User-Agent, IP, referrer หรือสถานะล็อกอิน แล้วแสดงเนื้อหาพนันเฉพาะกับ Googlebot เจ้าของเว็บจึงได้หน้าปกติเสมอ ให้ตรวจด้วย URL Inspection ใน Search Console

Paywall ถือเป็น cloaking ไหม?

Google ระบุว่าไม่ถือเป็น cloaking ถ้า Google เห็นเนื้อหาเต็มเหมือนผู้ที่มีสิทธิ์เข้าถึง และแนะนำให้ใช้ structured data สำหรับ paywalled content

ทดสอบ URL จริงใน Search Console แล้วไม่เจออะไร แปลว่าเว็บสะอาดไหม?

ยังสรุปไม่ได้ การทดสอบสดใช้ User-Agent ของ Google-InspectionTool ซึ่งไม่มีคำว่า Googlebot โค้ดที่เช็กเฉพาะคำนี้จึงอาจไม่แสดงสแปม ให้ดู View crawled page และตรวจไฟล์บนเซิร์ฟเวอร์ประกอบ

Cloaking กับเว็บเด้งต่างกันอย่างไร?

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

แก้ cloaking แล้วต้องรอนานเท่าไรกว่า Google จะตรวจใหม่?

เอกสาร Search Console ระบุว่า reconsideration review ส่วนใหญ่ใช้เวลาหลายวันถึงหลายสัปดาห์ และ web.dev ระบุว่าเว็บที่ถูกแฮกด้วยสแปมอาจใช้เวลาถึงหลายสัปดาห์

แหล่งอ้างอิง

  1. Google Search Central. (ม.ป.ป.). Spam policies for Google web search. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://developers.google.com/search/docs/essentials/spam-policies
  2. Google Search Console Help. (ม.ป.ป.). Security issues report. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://support.google.com/webmasters/answer/9044101
  3. Google Search Console Help. (ม.ป.ป.). Manual actions report. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://support.google.com/webmasters/answer/9044175
  4. Google Search Console Help. (ม.ป.ป.). URL Inspection tool. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://support.google.com/webmasters/answer/9012289
  5. Google Search Central. (ม.ป.ป.). Google’s common crawlers. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers
  6. Google Search Central. (ม.ป.ป.). Verifying Googlebot and other Google crawlers. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://developers.google.com/search/docs/crawling-indexing/verifying-googlebot
  7. Google Search Central. (ม.ป.ป.). Subscription and paywalled content (structured data). สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://developers.google.com/search/docs/appearance/structured-data/paywalled-content
  8. Google Search Central. (ม.ป.ป.). Dynamic rendering as a workaround. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://developers.google.com/search/docs/crawling-indexing/javascript/dynamic-rendering
  9. web.dev. (ม.ป.ป.). Fix the Japanese keyword hack. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://web.dev/articles/fix-the-japanese-keyword-hack
  10. web.dev. (ม.ป.ป.). Fix the cloaked keywords and links hack. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://web.dev/articles/fix-the-cloaked-keywords-hack
  11. web.dev. (ม.ป.ป.). How do I know if my site was hacked?. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://web.dev/articles/how-do-i-know-if-my-site-was-hacked
  12. web.dev. (ม.ป.ป.). Request a review. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://web.dev/articles/request-a-review
  13. Peixoto, P. (2018). Clever SEO Spam Injection. Sucuri Blog. สืบค้นเมื่อ 3 ตุลาคม 2026, จาก https://blog.sucuri.net/2018/12/clever-seo-spam-injection.html
อ่านบทความหลักของหมวดนี้ WordPress ติดไวรัส คืออะไร? อาการและวิธีตรวจสอบเบื้องต้น

บทความอื่นในหมวดนี้

เว็บโดนแฮก ทำอย่างไรดี? ขั้นตอนกู้เว็บ WordPress ทีละขั้น

ขั้นตอนกู้เว็บ WordPress ที่โดนแฮกทีละขั้น เรียบเรียงจาก NIST SP 800-61 Rev. 3, เอกสาร FAQ My site was hacked ของ WordPress.org และคำแนะนำของ Google สำหรับเว็บที่ถูกแฮก

42 นาที 18 Jun 2026
อ่านต่อ
LINE ส่งปัญหา