import React, { useState } from 'react'; const App = () => { const [isBlocked, setIsBlocked] = useState(false); const [blockedUrls, setBlockedUrls] = useState([ '/sitemap.xml', '/?s=', '/search?q=', '/wp-admin', '/admin' ]); const [newUrl, setNewUrl] = useState(''); // Função para bloquear URLs com base em padrões const blockUrls = () => { // Bloquear acesso direto ao sitemap.xml if (window.location.pathname.endsWith('sitemap.xml')) { alert('Acesso negado: Arquivo sitemap.xml não disponível'); window.history.back(); return; } // Bloquear buscas com parâmetros ?s= if (window.location.search.includes('?s=')) { alert('Busca não permitida. Por favor, use a funcionalidade de busca fornecida.'); window.history.back(); return; } // Bloquear outros padrões comuns de busca if (window.location.search.includes('?q=') || window.location.search.includes('?search=')) { alert('Acesso restrito a páginas de busca diretas.'); window.history.back(); return; } setIsBlocked(true); setTimeout(() => setIsBlocked(false), 2000); }; // Função para adicionar nova URL para bloqueio const addBlockedUrl = () => { if (newUrl.trim() && !blockedUrls.includes(newUrl)) { setBlockedUrls([...blockedUrls, newUrl]); setNewUrl(''); } }; // Função para remover URL da lista de bloqueio const removeBlockedUrl = (url) => { setBlockedUrls(blockedUrls.filter(u => u !== url)); }; // Script JavaScript que pode ser inserido no site const javascriptCode = ` // Script de Bloqueio de URLs Sensíveis (function() { 'use strict'; // URLs e padrões a serem bloqueados const blockedPatterns = [ 'sitemap.xml', '/?s=', '?s=', '/search?', '/wp-admin', '/admin', 'login', 'config' ]; // Verificar URL atual function checkCurrentURL() { const currentPath = window.location.pathname.toLowerCase(); const currentSearch = window.location.search.toLowerCase(); const currentHref = window.location.href.toLowerCase(); // Verificar se a URL corresponde a algum padrão bloqueado for (let pattern of blockedPatterns) { if (currentPath.includes(pattern) || currentSearch.includes(pattern) || currentHref.includes(pattern)) { // Impedir o carregamento normal da página document.body.innerHTML = \`

Acesso Negado

O acesso a esta página não é permitido.

\`; // Redirecionar após 3 segundos setTimeout(() => { window.history.back(); }, 3000); return true; } } return false; } // Verificar imediatamente ao carregar if (checkCurrentURL()) { return; } // Monitorar mudanças de URL (para SPAs) let oldHref = window.location.href; const body = document.querySelector('body'); const observer = new MutationObserver(() => { if (oldHref !== window.location.href) { oldHref = window.location.href; checkCurrentURL(); } }); observer.observe(body, { childList: true, subtree: true }); // Prevenir navegação programática const originalPushState = history.pushState; history.pushState = function(state, title, url) { if (url) { const lowerUrl = url.toLowerCase(); for (let pattern of blockedPatterns) { if (lowerUrl.includes(pattern)) { console.warn('Tentativa de navegação bloqueada:', url); return; } } } return originalPushState.apply(history, arguments); }; // Interceptação de requisições XHR (opcional) const originalOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url) { const lowerUrl = url.toLowerCase(); for (let pattern of blockedPatterns) { if (lowerUrl.includes(pattern)) { console.warn('Requisição bloqueada:', method, url); this.abort(); return; } } return originalOpen.apply(this, arguments); }; console.log('Proteção de URLs ativada'); })(); `; // Código para .htaccess (alternativa server-side) const htaccessCode = ` # Proteger sitemap.xml e páginas de busca RewriteEngine On # Bloquear acesso direto ao sitemap.xml RewriteRule ^sitemap\\.xml$ - [R=403,L] RewriteRule ^.*sitemap\\.xml$ - [R=403,L] # Bloquear parâmetros de busca ?s= RewriteCond %{QUERY_STRING} (^|&)s= [NC] RewriteRule ^.*$ - [R=403,L] # Bloquear outros parâmetros de busca RewriteCond %{QUERY_STRING} (^|&)(q|search|query)= [NC] RewriteRule ^.*$ - [R=403,L] # Proteger áreas administrativas RewriteRule ^wp-admin/ - [R=403,L] RewriteRule ^admin/ - [R=403,L] RewriteRule ^login/ - [R=403,L] # Alternativamente, redirecionar para página de erro amigável ErrorDocument 403 /acesso-negado.html `; return (
{/* Header */}

Bloqueador de URLs

Proteja seu site bloqueando acesso a arquivos sensíveis como sitemap.xml e páginas de busca

{/* Main Content */}
{/* Left Column - Demo */}

Teste de Bloqueio

URLs Monitoradas:

{blockedUrls.map((url, index) => (
{url}
))}
setNewUrl(e.target.value)} placeholder="Adicionar nova URL..." className="flex-1 px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent" />
{/* Right Column - Information */}
{/* JavaScript Code */}

Código JavaScript

                  {javascriptCode.trim()}
                
{/* HTAccess Code */}

Código .htaccess (Server-side)

                  {htaccessCode.trim()}
                
{/* Features */}

Funcionalidades

{[ { icon: "🛡️", title: "Proteção Completa", desc: "Bloqueia acesso direto a arquivos sensíveis e páginas de busca" }, { icon: "🚀", title: "Performance", desc: "Leve e eficiente, sem impacto significativo no desempenho" }, { icon: "🔧", title: "Personalizável", desc: "Adicione facilmente novos padrões de URLs para bloqueio" } ].map((feature, index) => (
{feature.icon}

{feature.title}

{feature.desc}

))}
{/* Footer */}

© 2024 Bloqueador de URLs | Proteja seu site com segurança

); }; export default App;