Ir para conteúdo

[JS] Script para proteger seu site de copiadores de código


Blonorr

Posts Recomendados

Juaum Dev

 

Olá galerinha, hoje vendo trazer pra vocês um script em JS (Java Script) para ajudar a proteger seu site contra copiadores de código.

 

Funções:

Desabilita o CTRL+U, CTRL+X, CTRL+C, F12, F5.

Desabilita a opção de copiar (assim, não é possivel selecionar nenhum texto do site.

Desabilita o botão direito

Mensagem de erro configurável (Você pode escolher uma mensagem customizada para aparecer quando alguém tentar executar uma das funções bloqueadas

 

Prints:

wSduHyClRfKDuk8_aLA0_Q.png

 

 

aTclgHpJSaGpLqTgfmVXJA.png

 

Código:

// JuaumFP
// Gamers Board

shortcut = {
	'all_shortcuts':{},
	'add': function(shortcut_combination,callback,opt) {

		var default_options = {
			'type':'keydown',
			'propagate':false,
			'disable_in_input':false,
			'target':document,
			'keycode':false
		}
		if(!opt) opt = default_options;
		else {
			for(var dfo in default_options) {
				if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];
			}
		}

		var ele = opt.target
		if(typeof opt.target == 'string') ele = document.getElementById(opt.target);
		var ths = this;
		shortcut_combination = shortcut_combination.toLowerCase();


		var func = function(e) {
			e = e || window.event;
			
			if(opt['disable_in_input']) { 
				var element;
				if(e.target) element=e.target;
				else if(e.srcElement) element=e.srcElement;
				if(element.nodeType==3) element=element.parentNode;

				if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return;
			}
	
		
			if (e.keyCode) code = e.keyCode;
			else if (e.which) code = e.which;
			var character = String.fromCharCode(code).toLowerCase();
			
			if(code == 188) character=","; //
			if(code == 190) character="."; //
	
			var keys = shortcut_combination.split("+");
			
			var kp = 0;
			
		
			var shift_nums = {
				"`":"~",
				"1":"!",
				"2":"@",
				"3":"#",
				"4":"$",
				"5":"%",
				"6":"^",
				"7":"&",
				"8":"*",
				"9":"(",
				"0":")",
				"-":"_",
				"=":"+",
				";":":",
				"'":"\"",
				",":"<",
				".":">",
				"/":"?",
				"\\":"|"
			}
		
			var special_keys = {
				'esc':27,
				'escape':27,
				'tab':9,
				'space':32,
				'return':13,
				'enter':13,
				'backspace':8,
	
				'scrolllock':145,
				'scroll_lock':145,
				'scroll':145,
				'capslock':20,
				'caps_lock':20,
				'caps':20,
				'numlock':144,
				'num_lock':144,
				'num':144,
				
				'pause':19,
				'break':19,
				
				'insert':45,
				'home':36,
				'delete':46,
				'end':35,
				
				'pageup':33,
				'page_up':33,
				'pu':33,
	
				'pagedown':34,
				'page_down':34,
				'pd':34,
	
				'left':37,
				'up':38,
				'right':39,
				'down':40,
	
				'f1':112,
				'f2':113,
				'f3':114,
				'f4':115,
				'f5':116,
				'f6':117,
				'f7':118,
				'f8':119,
				'f9':120,
				'f10':121,
				'f11':122,
				'f12':123
			}
	
			var modifiers = { 
				shift: { wanted:false, pressed:false},
				ctrl : { wanted:false, pressed:false},
				alt  : { wanted:false, pressed:false},
				meta : { wanted:false, pressed:false}	
			};
                        
			if(e.ctrlKey)	modifiers.ctrl.pressed = true;
			if(e.shiftKey)	modifiers.shift.pressed = true;
			if(e.altKey)	modifiers.alt.pressed = true;
			if(e.metaKey)   modifiers.meta.pressed = true;
                        
			for(var i=0; k=keys[i],i<keys.length; i++) {

				if(k == 'ctrl' || k == 'control') {
					kp++;
					modifiers.ctrl.wanted = true;

				} else if(k == 'shift') {
					kp++;
					modifiers.shift.wanted = true;

				} else if(k == 'alt') {
					kp++;
					modifiers.alt.wanted = true;
				} else if(k == 'meta') {
					kp++;
					modifiers.meta.wanted = true;
				} else if(k.length > 1) { 
					if(special_keys[k] == code) kp++;
					
				} else if(opt['keycode']) {
					if(opt['keycode'] == code) kp++;

				} else { 
					if(character == k) kp++;
					else {
						if(shift_nums[character] && e.shiftKey) { 
							character = shift_nums[character]; 
							if(character == k) kp++;
						}
					}
				}
			}

			if(kp == keys.length && 
						modifiers.ctrl.pressed == modifiers.ctrl.wanted &&
						modifiers.shift.pressed == modifiers.shift.wanted &&
						modifiers.alt.pressed == modifiers.alt.wanted &&
						modifiers.meta.pressed == modifiers.meta.wanted) {
				callback(e);
	
				if(!opt['propagate']) { 
					
					e.cancelBubble = true;
					e.returnValue = false;
	
			
					if (e.stopPropagation) {
						e.stopPropagation();
						e.preventDefault();
					}
					return false;
				}
			}
		}
		this.all_shortcuts[shortcut_combination] = {
			'callback':func, 
			'target':ele, 
			'event': opt['type']
		};

		if(ele.addEventListener) ele.addEventListener(opt['type'], func, false);
		else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func);
		else ele['on'+opt['type']] = func;
	},


	'remove':function(shortcut_combination) {
		shortcut_combination = shortcut_combination.toLowerCase();
		var binding = this.all_shortcuts[shortcut_combination];
		delete(this.all_shortcuts[shortcut_combination])
		if(!binding) return;
		var type = binding['event'];
		var ele = binding['target'];
		var callback = binding['callback'];

		if(ele.detachEvent) ele.detachEvent('on'+type, callback);
		else if(ele.removeEventListener) ele.removeEventListener(type, callback, false);
		else ele['on'+type] = false;
	}
}

function mk(descricao){
alert("Função boqueada por \n motivos de segurança \n" + descricao)
}
shortcut.add("CTRL+U",function() 
{
 oncontextmenu='return false';
 mk("Respeite o código fonte");
});
shortcut.add("CTRL+C",function() 
{
 oncontextmenu='return false';
 mk("Não Copie Faça o Seu");
});
shortcut.add("CTRL+X",function() 
{
 oncontextmenu='return false';
 mk("Outra Tentativa de Copiar");
});
shortcut.add("ALT+F4",function() 
{
 alert("Obrigado pela Visita \n Volte Sempre");
 window.close()
});
shortcut.add("f12", function()
{
 alert("Não tente ver o código fonte");
 window.close()
});
function click() {
if (event.button==2||event.button==3) {
 oncontextmenu='return false';
  mk(" Botão direito? ");
  }
}
document.onmousedown=click
document.oncontextmenu = new Function("return false;")

/**
* Anti Seleção
 */
var tagsAbertas =["input", "textarea", "select", "div"];
tagsAbertas = tagsAbertas.join("|");

function fechaCamposFF(e){
var elemento = (e.target)?e.target:e.srcElement;
	if (tagsAbertas.indexOf(elemento.tagName.toLowerCase())==-1)
		return false;
}

function abreCamposFF(){
return true
}

function fechaCamposIE(){
var elemento = event.srcElement;
	if(tagsAbertas.indexOf(elemento.tagName.toLowerCase()) == -1)
		document.onselectstart = new Function ("return false");
}

function abreCamposIE(){
var elemento = event.srcElement;
	if(tagsAbertas.indexOf(elemento.tagName.toLowerCase()) == -1){
		document.onselectstart = new Function ("return false");
	}else{
		document.onselectstart = new Function ("return true");
	}
}

if (typeof document.onselectstart != "undefined"){
document.onmousedown	=	fechaCamposIE;
document.onmouseup		=	abreCamposIE;
document.onselectstart  = new Function ("return false");
}else{
document.onmousedown	=	fechaCamposFF;
document.onmouseup		=	abreCamposFF;
}

Como integrar ao HTML:

Passo 1: Crie um arquivo com a extensão .js, cole esse código no arquivo e salve.

Passo 2: Após criar o arquivo, cole o segunte código no BODY do seu site:

<script type="text/javascript" src="NomeDoArquivo.js"></script>

OBS:

Isso não protege 100% seu site. Apenas ajuda a proteger.

 

 

@OFF

Sou desenvolvedor Web, caso queira um site, contete me no Discord: JuaumFP#8374

 

 

Link para o comentário
Compartilhar em outros sites

Não adianta tentar fazer isso. Você pode simplesmente usar view-source:URL ou até usar o curl/wget pra baixar o código da página.

Na minha opinião, ficar se preocupando com isso é só perda de tempo.

Não tinha pensado por esse lado!

Mas de qualquer modo, caso alguém queira bloquear algo no site, tem o código fonte aí para ajudar

 

Obrigado pela opnião :D

Link para o comentário
Compartilhar em outros sites

Participe da Conversa

Você pode postar agora e se cadastrar mais tarde. Se você tiver uma conta, a class='ipsType_brandedLink' href='https://gamersboard.com.br/login/' data-ipsDialog data-ipsDialog-size='medium' data-ipsDialog-title='Sign In Now'>acesse agora para postar com sua conta.
Observação: sua postagem exigirá aprovação do moderador antes de ficar visível.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.

Processando...
×
×
  • Criar Novo...