การทำให้อีเมลอ่านยาก: วิธีไหนยังได้ผลในปี 2026?
(spencermortensen.com)- มีการทดลองเทคนิค HTML·CSS·JavaScript obfuscation หลายแบบเพื่อปกป้องที่อยู่อีเมลจาก ตัวเก็บสแปม และเปรียบเทียบอัตราการบล็อก
- ผลทดสอบกับตัวอย่าง ข้อความ 426 รายการ และ ลิงก์ 399 รายการ พบว่า เทคนิคฝั่ง JS ส่วนใหญ่ รวมถึงบางเทคนิคของ CSS·SVG ทำอัตราบล็อกได้ 100%
- วิธีแบบเก่าอย่าง HTML entities·URL encoding ก็ยังคงมีประสิทธิภาพในการบล็อกสูง
- ในทางกลับกัน วิธีอย่าง การแสดงเป็นรูปภาพ·การแทนที่ด้วยสัญลักษณ์·การกลับทิศทางข้อความ กลับกระทบ accessibility และ usability อย่างรุนแรง
- สำหรับปี 2026 วิธีที่ถูกประเมินว่า ปลอดภัยและใช้งานได้จริงที่สุด สำหรับการปกป้องอีเมลคือ การแปลงด้วย JS·การเข้ารหัส AES·วิธีที่อาศัยการโต้ตอบของผู้ใช้
เปรียบเทียบเทคนิคการทำให้อ่านที่อยู่อีเมลได้ยาก (อ้างอิงปี 2026)
- นำเสนอเทคนิค obfuscation หลายแบบสำหรับซ่อนที่อยู่อีเมลจาก ตัวเก็บสแปม (harvester) พร้อมสถิติผลลัพธ์จริงของแต่ละวิธี
- ปกป้องที่อยู่อีเมลแต่ละรายการด้วยวิธีที่ต่างกัน แล้ววัดว่าถูก harvester เข้าถึงได้หรือไม่จากตัวอย่าง 426 รายการ (ข้อความ) และ 399 รายการ (ลิงก์) เพื่อคำนวณอัตราการบล็อก
- เทคนิคที่อิง JavaScript ส่วนใหญ่ และบางเทคนิคของ CSS·SVG ทำอัตราบล็อกได้ 100%
- วิธีเก่าอย่าง HTML entities·URL encoding ก็ยังรักษาอัตราการบล็อกในระดับสูงไว้ได้
- บางเทคนิคกระทบ accessibility หรือ usability อย่างรุนแรง จึงไม่เหมาะกับการใช้งานจริง
1. เทคนิคปกป้องอีเมลแบบข้อความทั่วไป
- แสดงที่อยู่อีเมลบนหน้าเว็บโดยตรง แต่ใช้เทคนิค HTML·CSS·JS หลายแบบเพื่อทำให้ harvester อ่านไม่ได้
- หาก ผสมหลายเทคนิคและปกป้องเป็นรายเซกเมนต์ ก็สามารถเพิ่มประสิทธิภาพได้สูงสุด
-
ไม่มีการป้องกัน (No protection)
- อัตราการบล็อก 0% (บล็อกได้ 0 จาก 426 ราย)
- ที่อยู่อีเมลถูกเปิดเผยตรง ๆ และถูกเก็บโดย harvester ทั้งหมด
-
HTML entities
- อัตราการบล็อก 95%
- แม้ไลบรารีฝั่งเซิร์ฟเวอร์จะถอดรหัสให้อัตโนมัติ แต่ในทางปฏิบัติก็ยังบล็อก harvester ได้ส่วนใหญ่
-
HTML comments
- อัตราการบล็อก 99%
- ป้องกันได้เฉพาะ harvester แบบพื้นฐานที่ตีความ HTML tags ได้ไม่ดี
- แม้เรียบง่าย แต่ยังคงมีประสิทธิภาพในการบล็อกสูง
-
HTML SVG
- อัตราการบล็อก 100%
- ซ่อนที่อยู่อีเมลไว้เป็น ข้อความภายในออบเจ็กต์ SVG
- screen reader สำหรับผู้พิการทางสายตายังเข้าถึงได้
- ต้องใช้ element
<object>เท่านั้น ส่วน<img>หรือ inline SVG มีความเสี่ยงที่ source จะถูกเปิดเผย - มีการพึ่งพาฟอนต์ จึงต้อง กำหนดเว็บฟอนต์
-
CSS display:none
- อัตราการบล็อก 100%
- อาศัยข้อจำกัดของ harvester ที่ไม่สามารถประมวลผลกฎ style ได้
- ยังคงรักษา accessibility ได้ และแนะนำให้ใช้
display:noneแทนการซ่อนแบบภาพลวงตา
-
JS concatenation
- อัตราการบล็อก 100%
- ทำได้ง่ายโดยไม่ต้องพึ่ง dependency ภายนอก
- แต่อีเมลทั้งหมดยังคงอยู่ใน HTML source จึง อ่อนแอในเชิงความปลอดภัย
-
JS Rot18
- อัตราการบล็อก 100%
- ใช้การเข้ารหัสแบบหมุนอักขระคล้าย ROT13
- harvester แบบง่ายจะถอดไม่ได้ แต่ เปราะบางต่อเครื่องมือเก็บข้อมูลที่ไม่สนใจ JS
-
JS conversion
- อัตราการบล็อก 100%
- ใน HTML จะมีเพียงสตริงที่ไม่มีความหมาย และฟังก์ชัน JS จะแปลงให้เป็นอีเมลจริง
- harvester ส่วนใหญ่ไม่สามารถประมวลผล DOM·JS ได้ จึงกู้คืนไม่ได้
- เป็น เทคนิคที่เรียบง่ายแต่มีประสิทธิภาพมาก
-
JS AES encryption
- อัตราการบล็อก 100%
- ปกป้องอีเมลด้วย การเข้ารหัส AES-256
- ใช้ SubtleCrypto API ของเบราว์เซอร์ และทำงานได้เฉพาะบน HTTPS
- หากไม่มีไฟล์ JS จะไม่สามารถถอดรหัสได้
-
JS user interaction
- อัตราการบล็อก 100%
- จะแสดงอีเมลก็ต่อเมื่อผู้ใช้มีการโต้ตอบกับหน้าเว็บ
- harvester ต้อง รัน DOM + จำลอง user event ซึ่งแทบเป็นไปไม่ได้
-
HTML symbol substitution
- อัตราการบล็อก 96%
- แทนที่ด้วยคำอย่าง “AT”, “DOT”
- ผู้ใช้ต้องแก้กลับเอง จึง ลดทอน usability
-
HTML instructions
- อัตราการบล็อก 100%
- ใส่คำสั่งแบบ manual ไว้ในอีเมล เช่น “remove the .fluff”
- แม้มนุษย์หรือ AI จะตีความได้ แต่ สร้างความไม่สะดวกแก่ผู้ใช้ มาก
-
HTML image
- อัตราการบล็อก 100%
- แสดงที่อยู่อีเมลเป็นรูปภาพ
- ผู้พิการทางสายตาเข้าถึงไม่ได้ คัดลอกก็ไม่ได้ เป็น การพังของ usability โดยสิ้นเชิง
-
CSS content
- อัตราการบล็อก 100%
- แสดงอีเมลด้วย pseudo-element
::after - มองเห็นได้ด้วยตา แต่คัดลอกไม่ได้ และยังสามารถกู้คืนได้จาก HTML เพียงอย่างเดียว
- ถูกประเมินว่าเป็น เทคนิคที่ไร้ประโยชน์
-
CSS text direction
- อัตราการบล็อก 100%
- ใช้
direction: rtlเพื่อกลับสตริง - ถ้า harvester ไม่สนใจ CSS ก็ถอดได้ง่าย
- ข้อความจะถูกคัดลอกแบบกลับด้าน ทำให้ usability แย่ลง
2. เทคนิคปกป้องลิงก์ที่คลิกได้
- เป็นการปกป้อง attribute
hrefของลิงก์mailto: - หากข้อความลิงก์มีอีเมลรวมอยู่ด้วย ก็จำเป็นต้องใช้ เทคนิค obfuscation สำหรับข้อความ ควบคู่กันด้วย
-
ไม่มีการป้องกัน
- อัตราการบล็อก 0% (บล็อกได้ 0 จาก 399 ราย)
- ที่อยู่อีเมลถูกเปิดเผยทั้งหมด
-
HTML entities
- อัตราการบล็อก 100%
- แม้จะมีการถอดรหัสอัตโนมัติฝั่งเซิร์ฟเวอร์ แต่ก็ยังบล็อก harvester ได้ส่วนใหญ่
-
URL encoding
- อัตราการบล็อก 95%
- แม้จะถอดรหัสได้ง่าย แต่ในทางปฏิบัติก็ยังบล็อก harvester ได้ส่วนใหญ่
-
HTTP redirect
- อัตราการบล็อก 100%
- ซ่อนลิงก์
mailto:ให้ดูเหมือนลิงก์ทั่วไป - ตั้งค่า redirect 302 หรือ 301 ใน
.htaccess - ป้องกัน search engine indexing ด้วย
nofollow, noindex - หากมีการเติมข้อมูลในฟิลด์อีเมลอัตโนมัติ ต้องใช้แฟลก QSA
-
HTML SVG
- อัตราการบล็อก 100%
- ซ่อนลิงก์อีเมลไว้ภายใน SVG
- รักษา accessibility ได้ และต้องใช้
<object> - ต้องกำหนดฟอนต์
-
JS concatenation
- อัตราการบล็อก 100%
- ทำได้โดยไม่ต้องพึ่ง dependency ภายนอก
- แต่อีเมลถูกใส่ไว้ใน HTML โดยตรง จึงไม่ปลอดภัย
-
JS Rot18
- อัตราการบล็อก 99%
- การหมุนอักขระคล้าย ROT13
- harvester แบบง่ายจะถอดไม่ได้
-
JS conversion
- อัตราการบล็อก 100%
- ใน HTML จะมีเพียง ลิงก์ปลอม และ JS จะเปลี่ยนให้เป็น
mailto:จริง - harvester เข้าถึงได้แค่ HTML จึงกู้คืนไม่ได้
- เป็น เทคนิคที่เรียบง่ายแต่มีประสิทธิภาพมาก
-
JS AES encryption
- อัตราการบล็อก 100%
- ลิงก์อีเมลที่ถูกเข้ารหัสด้วย AES-256
- ใช้ SubtleCrypto API ของเบราว์เซอร์ และต้องใช้ HTTPS
-
JS user interaction
- อัตราการบล็อก 100%
- ลิงก์จะทำงานก็ต่อเมื่อผู้ใช้มีการโต้ตอบ
- harvester ทำซ้ำพฤติกรรมนี้ได้ยาก
3. คำวิจารณ์และข้อโต้แย้ง
- ต่อข้ออ้างว่า “spammer ไม่ได้ไล่เก็บจากเว็บ แต่ซื้อฐานข้อมูลที่รั่วไหล”
- ที่อยู่อีเมลในหน้านี้ ถูกเผยแพร่แค่บนหน้านี้เท่านั้น แต่ก็ยังได้รับสแปมหลายพันฉบับ
- ต่อข้ออ้างว่า “ไม่จำเป็นต้องป้องกัน”
- เนื้อหายอดนิยมมักถูกเก็บข้อมูลอย่างเข้มข้น จึง ควรป้องกันหากมีโอกาสกลายเป็นไวรัล
- ต่อข้ออ้างว่า “มีแค่ตัวกรองสแปมก็พอ”
- เทคนิคเหล่านี้ ทำได้ฟรีโดยไม่ทำให้เกิด false positive และควรใช้ร่วมกับตัวกรอง
- ต่อข้ออ้างว่า “ถ้าคนรู้เทคนิคแล้วก็ไร้ประโยชน์”
- สถิติยืนยันว่าเทคนิคเดิม ๆ ตลอดหลายทศวรรษยังคงใช้ได้ผล
4. วิธีการทดลอง
- เผยแพร่ที่อยู่อีเมลที่ปกป้องด้วยเทคนิค obfuscation แต่ละแบบจริง ๆ และใช้งานเป็น honeypot สำหรับ harvester
- เมื่อมีสแปมเข้ามา จะถือว่าเทคนิคปกป้องของที่อยู่นั้นถูกเจาะได้แล้ว
- จัดกลุ่มข้อความตาม spammer เพื่อคำนวณสถิติโดยอิง จำนวนผู้ส่ง
- เพื่อไม่ให้การกรองสแปมบิดเบือนสถิติ จึง สร้าง mail server และ client เองโดยตรง
- เนื่องจาก harvester แบบข้อความและแบบลิงก์ต่างกัน จึง แยกสถิติคนละชุด
- แม้จำนวนตัวอย่างยังไม่มาก แต่คาดว่าความน่าเชื่อถือของสถิติจะดีขึ้นเมื่อมีลิงก์เพิ่มขึ้น
สรุป
- เทคนิคที่อิง JS สำหรับการแปลง·การเข้ารหัส·การโต้ตอบของผู้ใช้ ให้ทั้งความปลอดภัยและ accessibility สูงที่สุด
- CSS display:none และ เทคนิค SVG object ก็โดดเด่นทั้งด้าน accessibility และอัตราการบล็อก
- การแทนที่ด้วยสัญลักษณ์, รูปภาพ, การกลับทิศทางข้อความ กระทบ usability อย่างรุนแรง จึงไม่แนะนำ
- หากจำเป็นต้องเผยแพร่อีเมล วิธี JS conversion แบบง่าย หรือการเข้ารหัส AES คือทางเลือกที่มีประสิทธิภาพที่สุด ณ ปี 2026
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เมื่อก่อนผมใส่ใจกับการเก็บกวาดอีเมล แต่ตอนนี้ก็แค่เปิดเผยอีเมลไว้บนเว็บไซต์ของตัวเอง
ตัวกรองสแปม ดีพอสมควรแล้ว
ถึงอย่างนั้น รีวิวเทคนิคแบบนี้ก็ยังน่าสนใจ ประหลาดใจเหมือนกันที่วิธีง่ายๆ ก็ได้ผลไม่น้อย
mailto:ไว้บนบล็อก และได้รับสแปมแค่วันละไม่กี่ฉบับอาจเป็นเพราะ การกรองของ Zoho ทำได้ดี แต่ผมก็ไม่คิดว่ามันดีกว่าบริการรายใหญ่เป็นพิเศษ
เพราะงั้นใช้วิธีง่ายๆ ของตัวเองก็พอได้ แต่ถ้าเผยแพร่มันออกไปก็อาจถูกทำให้หมดความหมายได้ทันที
display:noneช่วยกันได้เกิน 90% ก็น่าลองกลับมาพิจารณาอีกครั้งอีเมลของผมถูกใส่แบบข้อความธรรมดาในคอมมิตของ GitHub ของรีโปโอเพนซอร์สยอดนิยมมากกว่า 90 ครั้ง
แต่ตลอด 8 ปีแทบไม่เคยได้รับสแปมเลย
รูปแบบที่ครอบด้วย
<และ>อาจจะ ทำให้ตัวเก็บข้อมูลสับสน ก็ได้ทุกวันนี้ดูเหมือน การซื้อรายชื่ออีเมล จะพบได้บ่อยกว่าการเก็บข้อมูลเองโดยตรง
เลยมีสแปมส่งมาที่
git@,contact@,admin@บ่อยๆช่วงหลังยังมี อีเมลปลอมเป็น CEO ส่งมาที่ที่อยู่ปลอมอย่าง
finance@ด้วยน่าขันตรงที่อีเมลที่ผมใส่แบบข้อความธรรมดาในโปรไฟล์ HN กลับแทบไม่มีสแปมเลย
สมมติฐานของผมคือ ตัวเก็บอีเมลไม่ได้ parse HTML แต่แค่หา สตริงรอบๆ อักขระ
@เท่านั้นการ parse HTML มีต้นทุนสูง วิธีง่ายๆ แบบนี้จึงอาจมีประสิทธิภาพกว่า
เพราะงั้น HTML entity ถึงดูเหมือนจะได้ผล
เลยอาจเลือกมองข้ามที่อยู่แบบนั้นไปเลย
@ก็ยังใช้งานได้ดีพอด้วยการดัดแปลงนิดหน่อยบทความนี้เขียนดี แต่เสียดายที่ไม่ได้พูดถึงวิธี เป็นเจ้าของทั้งโดเมน แล้วแจกอีเมลเฉพาะให้ผู้รับแต่ละคน
ถ้ามีสแปมเข้ามาก็แค่บล็อกที่อยู่นั้น
หรือจะเลือกใช้ชีวิตแบบไม่ใช้อีเมลเลยก็ได้ ทุกวันนี้ อีเมลชั่วคราว จัดการหลายอย่างได้อยู่
แต่สแปมส่วนใหญ่เกิดจากเพื่อนหรือครอบครัวเอาที่อยู่อีเมลของผมไปแชร์กับแอป
สำหรับอีเมลที่เปิดเผยสาธารณะ ผมกันได้ 100% ด้วย วิธีประกอบผ่าน JavaScript แบบง่ายๆ
ผลลัพธ์พอๆ กันและจัดการง่ายกว่ามาก
มีวิธีซ่อน tarpit email address ไว้ในเว็บไซต์
ซ่อนด้วย CSS ให้คนมองไม่เห็น แล้วถ้าบอทส่งเมลไปยังที่อยู่นั้นก็แบน IP นั้น 24 ชั่วโมง
เพราะมีสแปมที่มาจากบัญชี Gmail เหมือนกัน เลยมีผลข้างเคียงสูง
เนื้อหาดี แต่ผมคิดว่าชื่อควรเป็น 'Email address obfuscation' มากกว่า
แต่อีกด้านหนึ่ง บทความแบบนี้ก็ดูเหมือนจะช่วยให้พวกสแปมเมอร์เรียนรู้ได้เหมือนกัน
เมื่อก่อนผมเคยทดสอบว่าแนวเขียนอย่าง “me at foobar dot com” ยังได้ผลอยู่ไหม
พอลองใช้ LLM แกะ วิธี obfuscate อีเมล หลายแบบ ก็พบว่าถ้าไม่ใช่แบบอิง CSS หรือ JS ส่วนใหญ่ตีความได้หมด
ถึงอย่างนั้น ทุกวันนี้ตัวกรองสแปมทำงานดีพอ การเปิดเผยอีเมลแบบข้อความธรรมดาเลยไม่ใช่ปัญหาใหญ่
กลับกัน อีเมลแจ้งเตือนจากบริการต่างๆ น่ารำคาญกว่า
ถ้ามีการ abuse ก็ทิ้งเฉพาะที่อยู่นั้นได้เลย
ถ้าไคลเอนต์กับเมลเซิร์ฟเวอร์รองรับ API แบบนี้ก็คงจะดีมาก
เพราะงั้น การ obfuscate ขั้นพื้นฐาน ที่ใช้กันบอท regex ธรรมดาจึงยังมีประโยชน์อยู่
ช่วงต้นปีนี้ผมทำ อินเทอร์พรีเตอร์ Brainfuck ด้วย C แล้วลองเอามาใช้กับการ obfuscate อีเมล
เก็บอีเมลแต่ละอันเป็นโปรแกรม Brainfuck แล้วให้ JS interpreter รันเพื่อแสดงข้อความจริง
ตัว JS ถูกโหลดจากโดเมนภายนอก และจะส่งโค้ดจริงกลับมาหลังตรวจสอบ referer
แน่นอนว่าถ้าเป็นตัวเก็บข้อมูลที่รัน JS ได้ก็ไร้ประโยชน์ แต่ก็สนุกดีในฐานะ การทดลอง obfuscate แบบสร้างสรรค์
บทความนี้ดูเหมือน คู่มือทำให้ตัวเก็บอีเมลฉลาดขึ้น อยู่บ้าง