GanGster 516 Postat 3 noiembrie 2025 Metode practice (HTML/CSS/JS + server) care descurajează copierea și clonarea, fără a afecta indexarea în Google și Bing. Cuprins Introducere & limite Metoda SEO-safe: anti-copiere „deterrent” Copiere cu atribuire automată (recomandat) Watermark invizibil în text (urmărire) Watermark vizibil (overlay CSS) Protecție imagini: anti-hotlink (Apache/Nginx) Antiframe & CSP (securitate suplimentară) Aspecte legale (DMCA) & bune practici Checklist de testare & revert FAQ scurt 1) Introducere & limite Nu există o metodă perfectă care să impiedice 100% copierea. Browserul trebuie să primească conținutul pentru a-l afișa, deci orice soluție pur front-end poate fi ocolită. Totuși, putem descuraja majoritatea încercărilor fără a afecta SEO: blocăm copierea „casual”, adăugăm atribuire automată la clipboard, marcăm textul cu un watermark invizibil și protejăm imaginile de hotlink. 2) Metoda SEO-safe: anti-copiere „deterrent” (CSS + JS) Această metodă nu afectează indexarea în Google/Bing. Blochează click dreapta, selectarea textului și shortcut-uri uzuale (F12, Ctrl+U, Ctrl+C etc.). Este ușor de implementat și oprește încercările obișnuite. CSS (în <head>) <style> /* Interzice selecția pe tot site-ul (dar permite pe controale) */ body, .nocopy { -webkit-user-select: none !important; -moz-user-select: none !important; -ms-user-select: none !important; user-select: none !important; } a, button, input, textarea { -webkit-user-select: text !important; user-select: text !important; } ::selection { background: transparent; color: inherit; } /* Mesaj discret în colț */ .copy-warning { position: fixed; right: 18px; bottom: 18px; background: rgba(59,130,246,.96); color:#fff; padding:10px 14px; border-radius:12px; font-size:14px; box-shadow:0 6px 18px rgba(0,0,0,.4); z-index:99999; display:none; } </style> HTML (în <body>) <div id="copyWarning" class="copy-warning" role="status" aria-live="polite"> Copierea conținutului este restricționată. </div> JS (înainte de </body>) <script> (function(){ const warn = (msg) => { const el = document.getElementById('copyWarning'); if(!el) return; el.textContent = msg || 'Copierea conținutului este restricționată.'; el.style.display = 'block'; clearTimeout(el._t); el._t = setTimeout(() => el.style.display = 'none', 2200); }; document.addEventListener('contextmenu', (e) => { e.preventDefault(); warn('Click dreapta dezactivat.'); }); document.addEventListener('copy', (e) => { e.preventDefault(); warn('Copierea este dezactivată.'); }); document.addEventListener('selectstart', (e) => { const t = e.target; if (t && (t.tagName==='INPUT' || t.tagName==='TEXTAREA' || t.isContentEditable || t.closest('a'))) return; e.preventDefault(); }); document.addEventListener('keydown', (e) => { const t = e.target; if (t && (t.tagName==='INPUT' || t.tagName==='TEXTAREA' || t.isContentEditable)) return; const k = e.key.toUpperCase(); if (k==='F12' || (e.ctrlKey && (k==='U' || k==='S' || k==='A')) || (e.ctrlKey && e.shiftKey && (k==='I' || k==='J' || k==='C'))) { e.preventDefault(); e.stopPropagation(); warn('Acces limitat la sursă.'); } }, true); document.addEventListener('mouseup', () => { const sel = window.getSelection && window.getSelection(); if (sel && sel.toString().length > 24) { sel.removeAllRanges(); warn('Copierea textului este restricționată.'); } }); })(); </script> 3) Copiere cu atribuire automată (recomandat) În loc să blochezi complet copierea, poți permite copierea dar adăuga automat sursa în clipboard. SEO rămâne intact, iar tu primești mențiune când textul e lipit. <script> document.addEventListener('copy', async (e) => { const sel = window.getSelection(); if (!sel || sel.toString().length < 1) return; const page = location.href; const plain = sel.toString() + `\n\n— Copiat de pe: ${page}`; const html = (() => { try { const div = document.createElement('div'); for (let i=0; i<sel.rangeCount; i++) div.appendChild(sel.getRangeAt(i).cloneContents()); return `${div.innerHTML}<br><br><em>— Copiat de pe: <a href="${page}">${page}</a></em>`; } catch(_) { return sel.toString(); } })(); e.preventDefault(); if (navigator.clipboard && window.ClipboardItem) { await navigator.clipboard.write([ new ClipboardItem({ "text/plain": new Blob([plain], {type:"text/plain"}), "text/html" : new Blob([html], {type:"text/html"}) }) ]); } else { const tmp = document.createElement('textarea'); tmp.value = plain; document.body.appendChild(tmp); tmp.select(); document.execCommand('copy'); document.body.removeChild(tmp); } alert('Text copiat cu atribuire la sursă ✅'); }); </script> 4) Watermark invizibil în text (urmărire) Inserează caractere „zero-width” în textul principal (clasa .wm). Te ajută să demonstrezi proveniența când găsești copia online. <script> // Marchează discret textul din elementele .wm (function watermark(){ const MARK = "\u200B"; // zero-width space const targets = document.querySelectorAll('.wm'); const stampEvery = 10; // inserează la fiecare 10 caractere targets.forEach(el => { const walk = document.createTreeWalker(el, NodeFilter.SHOW_TEXT, null); let node; while (node = walk.nextNode()) { const t = node.nodeValue; if (!t || t.trim().length < 20) continue; let out = '', c = 0; for (let i=0; i<t.length; i++) { out += t[i]; if (++c % stampEvery === 0) out += MARK; } node.nodeValue = out; } }); })(); </script> 5) Watermark vizibil (overlay CSS, opțional) Un overlay ușor peste zona de conținut descurajează copierea vizuală (screenshot-uri reutilizate). <style> .brand-watermark { position: relative; overflow: hidden; } .brand-watermark::before { content: "© NumeleBrandului • siteul-tau.ro"; position: absolute; inset: 0; pointer-events: none; font: 700 16px/1.2 system-ui, Arial; color: rgba(255,255,255,.08); transform: rotate(-30deg); white-space: nowrap; background: repeating-linear-gradient(-30deg, transparent 0 40px, rgba(255,255,255,.06) 40px 42px); display: grid; place-items: center; } </style> <main class="brand-watermark wm"> <!-- conținutul tău aici --> </main> 6) Protecție imagini: anti-hotlink Apache (.htaccess) # Activează mod_rewrite RewriteEngine On # Permite doar de pe site-ul tău și motoarele de căutare RewriteCond %{HTTP_REFERER} !^https?://(www\.)?siteul-tau\.ro/ [NC] RewriteCond %{HTTP_REFERER} !google\. [NC] RewriteCond %{HTTP_REFERER} !bing\.com [NC] # În rest, servește o imagine placeholder RewriteRule \.(jpg|jpeg|png|gif|webp)$ /images/no-hotlink.png [L,NC] Nginx location ~* \.(jpg|jpeg|png|gif|webp)$ { valid_referers none blocked server_names *.siteul-tau.ro *.google.* *.bing.com; if ($invalid_referer) { rewrite ^/ /images/no-hotlink.png last; } } 7) Antiframe & CSP (securitate suplimentară) Împiedică includerea site-ului tău în iframe-uri (clickjacking) și aplică o politică CSP simplă. # Nginx add_header X-Frame-Options "DENY" always; add_header Content-Security-Policy "frame-ancestors 'none'; upgrade-insecure-requests" always; 😎 Aspecte legale & bune practici Adaugă în footer: © [An] [Brand] — Toate drepturile rezervate. Publică o pagină „Copyright & DMCA” cu adresa ta de contact. Activează Google Alerts/Copyscape pentru a detecta copii. La nevoie, trimite notificări de înlăturare (DMCA) către hostingul copierului. 9) Checklist de testare & revert Testează în Chrome/Firefox/Edge (desktop + mobil). Verifică PageSpeed/Lighthouse: scorurile nu ar trebui să scadă. Asigură-te că formularul/inputs permit selectare (sunt exceptate). Dacă vrei să revii: șterge blocurile CSS/JS adăugate. 10) FAQ scurt Îmi va afecta SEO? Nu. Metodele de mai sus sunt SEO-safe: conținutul rămâne în HTML, indexabil de Google și Bing. Poate cineva totuși să copieze? Un utilizator avansat poate ocoli restricțiile. De aceea combinăm „deterrent” + atribuire + watermark + protecție server. Ce recomandare minimă? 1) Anti-copiere „deterrent”, 2) Atribuire automată, 3) Anti-hotlink imagini, 4) Pagină DMCA. 💡 Recomandare: dacă rulezi pe Apache/Nginx, implementează și anti-hotlink pentru a descuraja clonarea media. Pentru orice întrebare, lasă un comentariu mai jos și te ajut cu configurarea exactă pe domeniul tău. Distribuie postarea Link către postare Distribuie pe alte site-uri Mai multe opțiuni de distribuire...