No console, você pode forçar a página a permitir seleção de texto:
document.querySelectorAll('*').forEach(el => {
el.style.userSelect = 'text';
el.style.webkitUserSelect = 'text';
el.style.msUserSelect = 'text';
});Isso percorre todos os elementos da página e seta user-select: text.
Muitas páginas bloqueiam seleção com JS usando addEventListener para eventos como contextmenu, copy, mousedown, etc.
Remover manualmente usando DevTools: No DevTools, vá em:
- Elements → clique com botão direito em um elemento → Break on > Subtree modifications ou attribute modifications;
- Sources → abra os event listeners na aba "Event Listeners" e remova os que estão em document ou body;
const clone = document.cloneNode(true);
document.replaceWith(clone);Isso remove todos os event listeners do DOM original (clona a estrutura sem os handlers).
Ou de forma mais agressiva:
["copy", "cut", "paste", "contextmenu", "selectstart", "mousedown", "mouseup", "keydown", "keypress"].forEach(evt => {
document.body.addEventListener(evt, e => e.stopPropagation(), true);
});Isso impede que os eventos problemáticos sejam tratados pela página, usando o modo capture.
Caso prefira algo mais rápido para uso frequente, tem boas extensões como:
- Absolute Enable Right Click & Copy (Chrome)
- Enable Copy (Firefox)
Essas extensões automatizam o que mostramos acima.
Navegadores como Firefox, Edge e até extensões no Chrome permitem visualizar o conteúdo no modo leitura — o que geralmente ignora scripts bloqueadores.
Se quiser algo mais programático ou massivo, você pode usar Puppeteer ou salvar o conteúdo via fetch no console, dependendo da CORS:
fetch(location.href)
.then(res => res.text())
.then(html => console.log(html));Sites com mais proteção (tipo PDFs embutidos via canvas, ou texto renderizado em imagens) exigem técnicas diferentes (OCR ou devtools em modo gráfico).
Se você sabe a estrutura da DOM, pode capturar o texto diretamente:
document.getSelection().selectAllChildren(document.body);
// ou copiar com:
navigator.clipboard.writeText(document.body.innerText);