ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingหา code ไม่ให้ save หน้าเวปไซต์
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: หา code ไม่ให้ save หน้าเวปไซต์  (อ่าน 1445 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
zeelacul
คนรักเสียว
*

พลังน้ำใจ: 4
ออฟไลน์ ออฟไลน์

กระทู้: 159



ดูรายละเอียด
« เมื่อ: 16 ตุลาคม 2025, 17:22:48 »

ตามหัวข้อเลยครับ ไม่ได้ทำนานแล้ว ลืม code ห้ามคลิกขวา หาได้แล้ว และยังหา code ไม่ใช้ save ยังไม่เจอ อยากทราบใช้ตัวไหนครับ ขอบคุณครับ
« แก้ไขครั้งสุดท้าย: 16 ตุลาคม 2025, 17:23:42 โดย zeelacul » บันทึกการเข้า
helloweentz
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 43
ออฟไลน์ ออฟไลน์

กระทู้: 1,827



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 17 ตุลาคม 2025, 21:05:06 »

เดี๋ยวนี้ code ไม่ให้ เซฟ ใช้ไม่ได้ครับ  wanwan021
บันทึกการเข้า

pond_z1000
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 42
ออฟไลน์ ออฟไลน์

กระทู้: 1,371



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 17 ตุลาคม 2025, 22:40:06 »

Dev tool  Sad กันไม่ได้ครับ
บันทึกการเข้า

teelin
คนรักเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 177



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 21 ตุลาคม 2025, 15:37:52 »

เคยอ่านบทความเก่าๆเห็นหลายคนว่า มันจะป้องกัน bot ให้ index เรายากด้วย ไม่รู้จริงไหมครับ  Tongue
บันทึกการเข้า

guriko01
Newbie
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 95



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 22 ตุลาคม 2025, 17:47:14 »

ตามตัวคนมือใหม่ wanwan011
บันทึกการเข้า
thai2ads
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 136
ออฟไลน์ ออฟไลน์

กระทู้: 1,175



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 22 ตุลาคม 2025, 21:48:18 »

ตามหัวข้อเลยครับ ไม่ได้ทำนานแล้ว ลืม code ห้ามคลิกขวา หาได้แล้ว และยังหา code ไม่ใช้ save ยังไม่เจอ อยากทราบใช้ตัวไหนครับ ขอบคุณครับ

โค๊ด:
<!-- CSS: ป้องกันการเลือกข้อความ และป้องกันการลาก -->
<style>
  /* ป้องกันการเลือกข้อความ */
  html, body {
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
    user-select: none !important;
    -webkit-touch-callout: none !important; /* iOS long press */
  }

  /* ป้องกันการลากภาพหรือข้อความ */
  img, a {
    -webkit-user-drag: none !important;
    user-drag: none !important;
  }

  /* ถ้าต้องการให้บาง element สามารถเลือกได้ ให้เพิ่ม class .allow-select */
  .allow-select {
    -webkit-user-select: text !important;
    user-select: text !important;
  }
</style>

<script>
/*
  Comprehensive anti-copy / anti-devtools script.
  - ปิด contextmenu (คลิกขวา)
  - ปิด selectstart, copy, cut, paste
  - ดัก keydown สำหรับ F12, Ctrl Shift I/J/C, Ctrl U, Ctrl S, Ctrl P, Ctrl C (optionally)
  - ตรวจจับ DevTools แบบพื้นฐาน (ขนาดหน้าต่าง และ debugger trick)
  - แจ้งเตือนหรือ redirect เมื่อพบการพยายามเปิด DevTools (คุณสามารถเปลี่ยน action ได้)
*/
const ANTI_DEBUG = {
  enableDetectSize: true,      // ตรวจสอบ outerWidth - innerWidth / outerHeight - innerHeight
  sizeThreshold: 160,          // ค่าเกณฑ์ ถ้ามากกว่านี้น่าจะเปิด devtools (ปรับได้)
  enableDebuggerProbe: true,   // ใช้ debugger/probe trick
  probeIntervalMs: 1000,       // ความถี่ในการตรวจจับ (ms)
  onDetect: () => {            // เมื่อพบการเปิด DevTools -> ปรับเปลี่ยน action ตามต้องการ
    // ตัวอย่าง actions: alert, redirect, clear page, log server, ฯลฯ
    console.warn("DevTools detected — action triggered.");
    // ตัวอย่าง: ซ่อนเนื้อหา
    document.documentElement.innerHTML = "<h2>Access denied</h2>";
    
  }
};


(function() {
  // ปิดคลิกขวา
  document.addEventListener('contextmenu', function(e) {
    e.preventDefault();
  }, { passive: false });

  // ป้องกันการเลือกข้อความด้วยเมาส์/คีย์บอร์ด
  document.addEventListener('selectstart', function(e) {
    // อนุญาตถ้ามี class .allow-select
    if (!e.target.closest || !e.target.closest('.allow-select')) {
      e.preventDefault();
    }
  }, { passive: false });

  // ป้องกันการคัดลอก/ตัด/วาง
  ['copy', 'cut', 'paste'].forEach(evt => {
    document.addEventListener(evt, function(e) {
      // อนุญาตถ้า element มี .allow-select
      if (e.target && e.target.closest && e.target.closest('.allow-select')) return;
      e.preventDefault();
    }, { passive: false });
  });

  
  document.addEventListener('keydown', function(e) {
    // ปิด F12
    if (e.key === 'F12') {
      e.preventDefault();
      return false;
    }

    
    if ((e.ctrlKey || e.metaKey) && e.shiftKey) {
      if (e.key === 'I' || e.key === 'J' || e.key === 'C') {
        e.preventDefault();
        return false;
      }
    }

    
    if ((e.ctrlKey || e.metaKey) && (e.key === 'U' || e.key === 'u')) {
      e.preventDefault();
      return false;
    }

    
    if ((e.ctrlKey || e.metaKey) && (e.key === 'S' || e.key === 's')) {
      e.preventDefault();
      return false;
    }

    
    if ((e.ctrlKey || e.metaKey) && (e.key === 'P' || e.key === 'p')) {
      e.preventDefault();
      return false;
    }

    
  }, { passive: false });
})();



(function(cfg) {
  
  function checkWindowSize() {
    try {
      if (!cfg.enableDetectSize) return false;
      const widthDiff = Math.abs(window.outerWidth - window.innerWidth);
      const heightDiff = Math.abs(window.outerHeight - window.innerHeight);
      if (widthDiff > cfg.sizeThreshold || heightDiff > cfg.sizeThreshold) {
        return true;
      }
    } catch (e) { /* ignore */ }
    return false;
  }

  
  function checkDebuggerProbe() {
    let detected = false;
    const start = Date.now();
    const fn = function() { /* probe */ };
    const str = fn.toString();
    
    const t0 = performance.now();
    
    for (let i = 0; i < 1e3; i  ) {
      // empty loop test
    }
    const t1 = performance.now();
    if ((t1 - t0) > 100) {
      detected = true;
    }
    return detected;
  }

  
  function probe() {
    let devOpen = false;
    if (checkWindowSize()) devOpen = true;
    if (cfg.enableDebuggerProbe && checkDebuggerProbe()) devOpen = true;

    if (devOpen) {
      try {
        cfg.onDetect();
      } catch (e) {
        console.error(e);
      }
    }
  }

  
  setInterval(probe, cfg.probeIntervalMs || 2000);

 
  window.addEventListener('load', probe);
})(ANTI_DEBUG);
</script>

test demo

มันป้องกันได้ระดับหนึ่งนะครับ ไม่ได้ 100% ลองเอาไปรันดูครับ
บันทึกการเข้า

รับทำเว็บไซต์ เขียนระบบต่างๆตามที่ต้องการ (ยกเว้น 18+ กับการพนัน) ระบบมีปัญหาการใช้งานแจ้งพจได้เลยนะครับอย่าได้เกรงใจเพราะเดี๋ยวมันจะไม่รู้ปัญหา
ออกแบบเว็บไซต์ | รับทำเว็บไซต์ |
thai2ads
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 136
ออฟไลน์ ออฟไลน์

กระทู้: 1,175



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 22 ตุลาคม 2025, 21:48:47 »

ตามหัวข้อเลยครับ ไม่ได้ทำนานแล้ว ลืม code ห้ามคลิกขวา หาได้แล้ว และยังหา code ไม่ใช้ save ยังไม่เจอ อยากทราบใช้ตัวไหนครับ ขอบคุณครับ

โค๊ด:
<!-- CSS: ป้องกันการเลือกข้อความ และป้องกันการลาก -->
<style>
  /* ป้องกันการเลือกข้อความ */
  html, body {
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
    user-select: none !important;
    -webkit-touch-callout: none !important; /* iOS long press */
  }

  /* ป้องกันการลากภาพหรือข้อความ */
  img, a {
    -webkit-user-drag: none !important;
    user-drag: none !important;
  }

  /* ถ้าต้องการให้บาง element สามารถเลือกได้ ให้เพิ่ม class .allow-select */
  .allow-select {
    -webkit-user-select: text !important;
    user-select: text !important;
  }
</style>

<script>
/*
  Comprehensive anti-copy / anti-devtools script.
  - ปิด contextmenu (คลิกขวา)
  - ปิด selectstart, copy, cut, paste
  - ดัก keydown สำหรับ F12, Ctrl Shift I/J/C, Ctrl U, Ctrl S, Ctrl P, Ctrl C (optionally)
  - ตรวจจับ DevTools แบบพื้นฐาน (ขนาดหน้าต่าง และ debugger trick)
  - แจ้งเตือนหรือ redirect เมื่อพบการพยายามเปิด DevTools (คุณสามารถเปลี่ยน action ได้)
*/
const ANTI_DEBUG = {
  enableDetectSize: true,      // ตรวจสอบ outerWidth - innerWidth / outerHeight - innerHeight
  sizeThreshold: 160,          // ค่าเกณฑ์ ถ้ามากกว่านี้น่าจะเปิด devtools (ปรับได้)
  enableDebuggerProbe: true,   // ใช้ debugger/probe trick
  probeIntervalMs: 1000,       // ความถี่ในการตรวจจับ (ms)
  onDetect: () => {            // เมื่อพบการเปิด DevTools -> ปรับเปลี่ยน action ตามต้องการ
    // ตัวอย่าง actions: alert, redirect, clear page, log server, ฯลฯ
    console.warn("DevTools detected — action triggered.");
    // ตัวอย่าง: ซ่อนเนื้อหา
    document.documentElement.innerHTML = "<h2>Access denied</h2>";
    
  }
};


(function() {
  // ปิดคลิกขวา
  document.addEventListener('contextmenu', function(e) {
    e.preventDefault();
  }, { passive: false });

  // ป้องกันการเลือกข้อความด้วยเมาส์/คีย์บอร์ด
  document.addEventListener('selectstart', function(e) {
    // อนุญาตถ้ามี class .allow-select
    if (!e.target.closest || !e.target.closest('.allow-select')) {
      e.preventDefault();
    }
  }, { passive: false });

  // ป้องกันการคัดลอก/ตัด/วาง
  ['copy', 'cut', 'paste'].forEach(evt => {
    document.addEventListener(evt, function(e) {
      // อนุญาตถ้า element มี .allow-select
      if (e.target && e.target.closest && e.target.closest('.allow-select')) return;
      e.preventDefault();
    }, { passive: false });
  });

  
  document.addEventListener('keydown', function(e) {
    // ปิด F12
    if (e.key === 'F12') {
      e.preventDefault();
      return false;
    }

    
    if ((e.ctrlKey || e.metaKey) && e.shiftKey) {
      if (e.key === 'I' || e.key === 'J' || e.key === 'C') {
        e.preventDefault();
        return false;
      }
    }

    
    if ((e.ctrlKey || e.metaKey) && (e.key === 'U' || e.key === 'u')) {
      e.preventDefault();
      return false;
    }

    
    if ((e.ctrlKey || e.metaKey) && (e.key === 'S' || e.key === 's')) {
      e.preventDefault();
      return false;
    }

    
    if ((e.ctrlKey || e.metaKey) && (e.key === 'P' || e.key === 'p')) {
      e.preventDefault();
      return false;
    }

    
  }, { passive: false });
})();



(function(cfg) {
  
  function checkWindowSize() {
    try {
      if (!cfg.enableDetectSize) return false;
      const widthDiff = Math.abs(window.outerWidth - window.innerWidth);
      const heightDiff = Math.abs(window.outerHeight - window.innerHeight);
      if (widthDiff > cfg.sizeThreshold || heightDiff > cfg.sizeThreshold) {
        return true;
      }
    } catch (e) { /* ignore */ }
    return false;
  }

  
  function checkDebuggerProbe() {
    let detected = false;
    const start = Date.now();
    const fn = function() { /* probe */ };
    const str = fn.toString();
    
    const t0 = performance.now();
    
    for (let i = 0; i < 1e3; i  ) {
      // empty loop test
    }
    const t1 = performance.now();
    if ((t1 - t0) > 100) {
      detected = true;
    }
    return detected;
  }

  
  function probe() {
    let devOpen = false;
    if (checkWindowSize()) devOpen = true;
    if (cfg.enableDebuggerProbe && checkDebuggerProbe()) devOpen = true;

    if (devOpen) {
      try {
        cfg.onDetect();
      } catch (e) {
        console.error(e);
      }
    }
  }

  
  setInterval(probe, cfg.probeIntervalMs || 2000);

 
  window.addEventListener('load', probe);
})(ANTI_DEBUG);
</script>

test demo

มันป้องกันได้ระดับหนึ่งนะครับ ไม่ได้ 100% ลองเอาไปรันดูครับ
บันทึกการเข้า

รับทำเว็บไซต์ เขียนระบบต่างๆตามที่ต้องการ (ยกเว้น 18+ กับการพนัน) ระบบมีปัญหาการใช้งานแจ้งพจได้เลยนะครับอย่าได้เกรงใจเพราะเดี๋ยวมันจะไม่รู้ปัญหา
ออกแบบเว็บไซต์ | รับทำเว็บไซต์ |
thai2ads
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 136
ออฟไลน์ ออฟไลน์

กระทู้: 1,175



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 22 ตุลาคม 2025, 21:49:22 »

ตามหัวข้อเลยครับ ไม่ได้ทำนานแล้ว ลืม code ห้ามคลิกขวา หาได้แล้ว และยังหา code ไม่ใช้ save ยังไม่เจอ อยากทราบใช้ตัวไหนครับ ขอบคุณครับ

โค๊ด:
<!-- CSS: ป้องกันการเลือกข้อความ และป้องกันการลาก -->
<style>
  /* ป้องกันการเลือกข้อความ */
  html, body {
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
    user-select: none !important;
    -webkit-touch-callout: none !important; /* iOS long press */
  }

  /* ป้องกันการลากภาพหรือข้อความ */
  img, a {
    -webkit-user-drag: none !important;
    user-drag: none !important;
  }

  /* ถ้าต้องการให้บาง element สามารถเลือกได้ ให้เพิ่ม class .allow-select */
  .allow-select {
    -webkit-user-select: text !important;
    user-select: text !important;
  }
</style>

<script>
/*
  Comprehensive anti-copy / anti-devtools script.
  - ปิด contextmenu (คลิกขวา)
  - ปิด selectstart, copy, cut, paste
  - ดัก keydown สำหรับ F12, Ctrl Shift I/J/C, Ctrl U, Ctrl S, Ctrl P, Ctrl C (optionally)
  - ตรวจจับ DevTools แบบพื้นฐาน (ขนาดหน้าต่าง และ debugger trick)
  - แจ้งเตือนหรือ redirect เมื่อพบการพยายามเปิด DevTools (คุณสามารถเปลี่ยน action ได้)
*/
const ANTI_DEBUG = {
  enableDetectSize: true,      // ตรวจสอบ outerWidth - innerWidth / outerHeight - innerHeight
  sizeThreshold: 160,          // ค่าเกณฑ์ ถ้ามากกว่านี้น่าจะเปิด devtools (ปรับได้)
  enableDebuggerProbe: true,   // ใช้ debugger/probe trick
  probeIntervalMs: 1000,       // ความถี่ในการตรวจจับ (ms)
  onDetect: () => {            // เมื่อพบการเปิด DevTools -> ปรับเปลี่ยน action ตามต้องการ
    // ตัวอย่าง actions: alert, redirect, clear page, log server, ฯลฯ
    console.warn("DevTools detected — action triggered.");
    // ตัวอย่าง: ซ่อนเนื้อหา
    document.documentElement.innerHTML = "<h2>Access denied</h2>";
   
  }
};


(function() {
  // ปิดคลิกขวา
  document.addEventListener('contextmenu', function(e) {
    e.preventDefault();
  }, { passive: false });

  // ป้องกันการเลือกข้อความด้วยเมาส์/คีย์บอร์ด
  document.addEventListener('selectstart', function(e) {
    // อนุญาตถ้ามี class .allow-select
    if (!e.target.closest || !e.target.closest('.allow-select')) {
      e.preventDefault();
    }
  }, { passive: false });

  // ป้องกันการคัดลอก/ตัด/วาง
  ['copy', 'cut', 'paste'].forEach(evt => {
    document.addEventListener(evt, function(e) {
      // อนุญาตถ้า element มี .allow-select
      if (e.target && e.target.closest && e.target.closest('.allow-select')) return;
      e.preventDefault();
    }, { passive: false });
  });

 
  document.addEventListener('keydown', function(e) {
    // ปิด F12
    if (e.key === 'F12') {
      e.preventDefault();
      return false;
    }

   
    if ((e.ctrlKey || e.metaKey) && e.shiftKey) {
      if (e.key === 'I' || e.key === 'J' || e.key === 'C') {
        e.preventDefault();
        return false;
      }
    }

   
    if ((e.ctrlKey || e.metaKey) && (e.key === 'U' || e.key === 'u')) {
      e.preventDefault();
      return false;
    }

   
    if ((e.ctrlKey || e.metaKey) && (e.key === 'S' || e.key === 's')) {
      e.preventDefault();
      return false;
    }

   
    if ((e.ctrlKey || e.metaKey) && (e.key === 'P' || e.key === 'p')) {
      e.preventDefault();
      return false;
    }

   
  }, { passive: false });
})();



(function(cfg) {
 
  function checkWindowSize() {
    try {
      if (!cfg.enableDetectSize) return false;
      const widthDiff = Math.abs(window.outerWidth - window.innerWidth);
      const heightDiff = Math.abs(window.outerHeight - window.innerHeight);
      if (widthDiff > cfg.sizeThreshold || heightDiff > cfg.sizeThreshold) {
        return true;
      }
    } catch (e) { /* ignore */ }
    return false;
  }

 
  function checkDebuggerProbe() {
    let detected = false;
    const start = Date.now();
    const fn = function() { /* probe */ };
    const str = fn.toString();
   
    const t0 = performance.now();
   
    for (let i = 0; i < 1e3; i  ) {
      // empty loop test
    }
    const t1 = performance.now();
    if ((t1 - t0) > 100) {
      detected = true;
    }
    return detected;
  }

 
  function probe() {
    let devOpen = false;
    if (checkWindowSize()) devOpen = true;
    if (cfg.enableDebuggerProbe && checkDebuggerProbe()) devOpen = true;

    if (devOpen) {
      try {
        cfg.onDetect();
      } catch (e) {
        console.error(e);
      }
    }
  }

 
  setInterval(probe, cfg.probeIntervalMs || 2000);

 
  window.addEventListener('load', probe);
})(ANTI_DEBUG);
</script>

test demo

มันป้องกันได้ระดับหนึ่งนะครับ ไม่ได้ 100% ลองเอาไปรันดูครับ
บันทึกการเข้า

รับทำเว็บไซต์ เขียนระบบต่างๆตามที่ต้องการ (ยกเว้น 18+ กับการพนัน) ระบบมีปัญหาการใช้งานแจ้งพจได้เลยนะครับอย่าได้เกรงใจเพราะเดี๋ยวมันจะไม่รู้ปัญหา
ออกแบบเว็บไซต์ | รับทำเว็บไซต์ |
Consolez
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 84
ออฟไลน์ ออฟไลน์

กระทู้: 1,523



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 23 ตุลาคม 2025, 09:35:52 »

ตามหัวข้อเลยครับ ไม่ได้ทำนานแล้ว ลืม code ห้ามคลิกขวา หาได้แล้ว และยังหา code ไม่ใช้ save ยังไม่เจอ อยากทราบใช้ตัวไหนครับ ขอบคุณครับ

โค๊ด:
<!-- CSS: ป้องกันการเลือกข้อความ และป้องกันการลาก -->
<style>
  /* ป้องกันการเลือกข้อความ */
  html, body {
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
    user-select: none !important;
    -webkit-touch-callout: none !important; /* iOS long press */
  }

  /* ป้องกันการลากภาพหรือข้อความ */
  img, a {
    -webkit-user-drag: none !important;
    user-drag: none !important;
  }

  /* ถ้าต้องการให้บาง element สามารถเลือกได้ ให้เพิ่ม class .allow-select */
  .allow-select {
    -webkit-user-select: text !important;
    user-select: text !important;
  }
</style>

<script>
/*
  Comprehensive anti-copy / anti-devtools script.
  - ปิด contextmenu (คลิกขวา)
  - ปิด selectstart, copy, cut, paste
  - ดัก keydown สำหรับ F12, Ctrl Shift I/J/C, Ctrl U, Ctrl S, Ctrl P, Ctrl C (optionally)
  - ตรวจจับ DevTools แบบพื้นฐาน (ขนาดหน้าต่าง และ debugger trick)
  - แจ้งเตือนหรือ redirect เมื่อพบการพยายามเปิด DevTools (คุณสามารถเปลี่ยน action ได้)
*/
const ANTI_DEBUG = {
  enableDetectSize: true,      // ตรวจสอบ outerWidth - innerWidth / outerHeight - innerHeight
  sizeThreshold: 160,          // ค่าเกณฑ์ ถ้ามากกว่านี้น่าจะเปิด devtools (ปรับได้)
  enableDebuggerProbe: true,   // ใช้ debugger/probe trick
  probeIntervalMs: 1000,       // ความถี่ในการตรวจจับ (ms)
  onDetect: () => {            // เมื่อพบการเปิด DevTools -> ปรับเปลี่ยน action ตามต้องการ
    // ตัวอย่าง actions: alert, redirect, clear page, log server, ฯลฯ
    console.warn("DevTools detected — action triggered.");
    // ตัวอย่าง: ซ่อนเนื้อหา
    document.documentElement.innerHTML = "<h2>Access denied</h2>";
    
  }
};


(function() {
  // ปิดคลิกขวา
  document.addEventListener('contextmenu', function(e) {
    e.preventDefault();
  }, { passive: false });

  // ป้องกันการเลือกข้อความด้วยเมาส์/คีย์บอร์ด
  document.addEventListener('selectstart', function(e) {
    // อนุญาตถ้ามี class .allow-select
    if (!e.target.closest || !e.target.closest('.allow-select')) {
      e.preventDefault();
    }
  }, { passive: false });

  // ป้องกันการคัดลอก/ตัด/วาง
  ['copy', 'cut', 'paste'].forEach(evt => {
    document.addEventListener(evt, function(e) {
      // อนุญาตถ้า element มี .allow-select
      if (e.target && e.target.closest && e.target.closest('.allow-select')) return;
      e.preventDefault();
    }, { passive: false });
  });

  
  document.addEventListener('keydown', function(e) {
    // ปิด F12
    if (e.key === 'F12') {
      e.preventDefault();
      return false;
    }

    
    if ((e.ctrlKey || e.metaKey) && e.shiftKey) {
      if (e.key === 'I' || e.key === 'J' || e.key === 'C') {
        e.preventDefault();
        return false;
      }
    }

    
    if ((e.ctrlKey || e.metaKey) && (e.key === 'U' || e.key === 'u')) {
      e.preventDefault();
      return false;
    }

    
    if ((e.ctrlKey || e.metaKey) && (e.key === 'S' || e.key === 's')) {
      e.preventDefault();
      return false;
    }

    
    if ((e.ctrlKey || e.metaKey) && (e.key === 'P' || e.key === 'p')) {
      e.preventDefault();
      return false;
    }

    
  }, { passive: false });
})();



(function(cfg) {
  
  function checkWindowSize() {
    try {
      if (!cfg.enableDetectSize) return false;
      const widthDiff = Math.abs(window.outerWidth - window.innerWidth);
      const heightDiff = Math.abs(window.outerHeight - window.innerHeight);
      if (widthDiff > cfg.sizeThreshold || heightDiff > cfg.sizeThreshold) {
        return true;
      }
    } catch (e) { /* ignore */ }
    return false;
  }

  
  function checkDebuggerProbe() {
    let detected = false;
    const start = Date.now();
    const fn = function() { /* probe */ };
    const str = fn.toString();
    
    const t0 = performance.now();
    
    for (let i = 0; i < 1e3; i  ) {
      // empty loop test
    }
    const t1 = performance.now();
    if ((t1 - t0) > 100) {
      detected = true;
    }
    return detected;
  }

  
  function probe() {
    let devOpen = false;
    if (checkWindowSize()) devOpen = true;
    if (cfg.enableDebuggerProbe && checkDebuggerProbe()) devOpen = true;

    if (devOpen) {
      try {
        cfg.onDetect();
      } catch (e) {
        console.error(e);
      }
    }
  }

  
  setInterval(probe, cfg.probeIntervalMs || 2000);

 
  window.addEventListener('load', probe);
})(ANTI_DEBUG);
</script>

test demo

มันป้องกันได้ระดับหนึ่งนะครับ ไม่ได้ 100% ลองเอาไปรันดูครับ

ขอบคุณครับ
บันทึกการเข้า

helloweentz
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 43
ออฟไลน์ ออฟไลน์

กระทู้: 1,827



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 29 ตุลาคม 2025, 22:03:09 »

ติดตามครับ ใครทดสอบได้บ้างคับ Tongue
บันทึกการเข้า

TG_Min
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 165
ออฟไลน์ ออฟไลน์

กระทู้: 1,536



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 30 ตุลาคม 2025, 11:24:23 »

มันทำได้ครับ แต่ได้อย่างก็เสียอย่าง
ตัวอย่างก็เว็บกองสลาก หน้าประกาศผลรางวัล มัน save ไปไม่ได้ เพราะใช้ js รัน และแสดงผลฝั่ง client
แต่ถ้าเก่งโปรแกรมระดับนึง ก็ดึงไปใช้ได้อยู่

ข้อเสียคือ bot และ search หาไม่เจอ
บันทึกการเข้า

suriyan2538
ก๊วนเสียว
*

พลังน้ำใจ: 11
ออฟไลน์ ออฟไลน์

กระทู้: 421



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 31 ตุลาคม 2025, 10:30:53 »

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

ทั้งโค้ดควบคุมการใช้คีย์ลัดต่างๆ บนคอม ที่เกี่ยวกับการเปิดดูโค้ด คัดลอก หรือเปิดโหมดผู้พัฒนาเว็บ
แล้วก็ห้ามคัดลอกในมือถือ รวมไปถึงการโหลดเนื้อหาผ่าน Java เมื่อคนเข้าชมไม่เปิด Java เนื้อหาก็จะไม่โหลด

โค้ดหลักๆ ก็น่าจะประมาณนี้ครับ

<script>
document.onkeydown = function(e) {
  if(event.keyCode == 123) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) {
     return false;
  }
  if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) {
     return false;
  }
    if(e.ctrlKey && e.keyCode == 'S'.charCodeAt(0)) {
     return false;
  }
    if(e.ctrlKey && e.keyCode == 'P'.charCodeAt(0)) {
     return false;
  }
}
</script>

<script type="text/javascript">
var message="";
function clickIE(){
if(document.all){
(message);
return false;
}
}
function clickNS(e){
if (document.layers || (document.getElementById && !document.all)){
if (e.which==2||e.which==3){
(message);
return false;
}
}
}
if(document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickNS;
}else{
document.onmouseup=clickNS;
document.oncontextmenu=clickIE;
}
document.oncontextmenu=new Function("return false");
</script>

<script language="JavaScript1.2">
//Disable select-text script (IE4 , NS6 )
function disableselect(e){
return false
}
function reEnable(){
return true
}
//if IE4
document.onselectstart=new Function ("return false")
//if NS6
if (window.sidebar){
document.onmousedown=disableselect
document.onclick=reEnable
}
</script>

 <style>
 body {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
 </style>

<noscript>
    <style type="text/css">
        body {
display:none;}
    </style>
    <div>
        <p>กรุณาเปิดใช้จาว่าสคริปต์ในการชมเนื้อหาบนเว็บไซต์ มิเช่นนั้นจะถือว่ามีเจตนาคัดลอกเนื้อหาบนเว็บไซต์</p>
    </div>
</noscript>
บันทึกการเข้า

tamuraki
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 31
ออฟไลน์ ออฟไลน์

กระทู้: 1,706



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 31 ตุลาคม 2025, 13:57:33 »

มาแวะดูเผื่อมีปัญหา  wanwan011
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์