Skip to content

Instantly share code, notes, and snippets.

@thihxm
Last active November 13, 2023 10:56
Show Gist options
  • Star 28 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save thihxm/ea2779cec517f3c126d34c8b374b409d to your computer and use it in GitHub Desktop.
Save thihxm/ea2779cec517f3c126d34c8b374b409d to your computer and use it in GitHub Desktop.
Este gist foi desenvolvido com a intenção de estudar mais sobre sistemas de ofuscação web que rodam em ambientes client-side. Não me responsabilizo pelo uso indevido por outros para obter conteúdos que não tem acesso!
// ==UserScript==
// @name No Blur RespondeAí
// @namespace thihxm
// @match *://*.respondeai.com.br/*
// @downloadURL https://gist.githubusercontent.com/thihxm/ea2779cec517f3c126d34c8b374b409d/raw/NoBlurRespondeAi.js
// @run-at document-idle
// @grant none
// @version 2.9
// @author thihxm
// @description Libera o acesso aos conteúdos da plataforma sem precisar fazer login
// ==/UserScript==
(function() {
'use strict';
const removePaywall = () => {
document.querySelectorAll('login-disclaimer').forEach((disclaimer) => {
disclaimer.remove();
});
document.querySelectorAll('overlay-disclaimer').forEach((disclaimer) => {
disclaimer.remove();
});
document.querySelectorAll('.blur').forEach((element) => {
element.classList.remove('blur');
});
document.querySelectorAll('.expand-btn').forEach((element) => {
if (element.innerHTML === 'MOSTRAR SOLUÇÃO COMPLETA') {
element.remove();
}
});
document.querySelectorAll('.ReactModalPortal').forEach((disclaimer) => {
disclaimer.remove();
document.body.classList.remove('ReactModal__Body--open');
});
const loginAlertTexts = Array.from(document.querySelectorAll('h2')).filter(el => el.innerText.includes('Loga aí pra continuar'));
loginAlertTexts.forEach(loginAlert => {
loginAlert.remove();
});
const exerciseContainer = document.querySelector('div[class^="BookEditionPage__Container"]');
if (exerciseContainer) observerPaywall.observe(exerciseContainer, observerPaywallConfig);
document.querySelectorAll('.paywall').forEach(el => {
el.classList.replace('paywall', 'autoHeight');
});
const paywallElements = document.querySelectorAll('[class*="ExpandPaywallContainer"]');
paywallElements.forEach(el => {
el.remove();
});
const paywallOverlays = document.querySelectorAll('[class*="PaywallOverlayContainer"]');
paywallOverlays.forEach(el => {
el.parentNode.style.height = 'auto !important';
el.remove();
});
const paywallHeadings = document.querySelectorAll('[class*="PaywallHeadingsSection"]');
paywallHeadings.forEach(el => {
el.remove();
});
}
window.removePaywall = removePaywall;
const observerStyle = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
mutation.target.removeAttribute("style");
});
});
const observerPaywall = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
removePaywall();
});
});
const observerStyleConfig = {
attributes: true,
attributeOldValue: true,
}
const observerPaywallConfig = {
...observerStyleConfig,
childList: true,
}
const overlay = document.querySelector('.login-overlay');
const main_wrapper = document.querySelector('.main-wrapper') || document.querySelector('.main-container');
const btn = document.querySelector('#exercise-expand-button');
const style = document.createElement('style');
style.innerHTML =
'@layer importantOverrides {' +
'* {' +
'-webkit-filter: none !important;' +
'filter: none !important;' +
'}' +
'.autoHeight {' +
'height: auto !important;' +
'}' +
'.content-card * {' +
'user-select: auto !important;' +
'}' +
'.blur {' +
'-webkit-filter: none !important;' +
'filter: none !important;' +
'pointer-events: all;' +
'}' +
'}';
document.querySelector('head').appendChild(style);
if (overlay) observerStyle.observe(overlay, observerStyleConfig);
if (main_wrapper) observerStyle.observe(main_wrapper, observerStyleConfig);
observerPaywall.observe(document.body, observerStyleConfig);
window.onload = () => {
removePaywall();
}
btn && btn.parentNode.removeChild(btn);
overlay && overlay.parentNode.removeChild(overlay);
})();
@caioba1
Copy link

caioba1 commented Oct 10, 2021

boa tarde, thiago. o site atualizou, quebrando o script atual. existe a possibilidade de vc atualizar o script? agradeço desde já

@brenovambaster
Copy link

Eu fiz um escript bem simples para tentar burlar isso. Segue o link: https://github.com/brenovambaster/responde-ai

@caioba1
Copy link

caioba1 commented Oct 11, 2021

Eu fiz um escript bem simples para tentar burlar isso. Segue o link: https://github.com/brenovambaster/responde-ai

ah sim, breno. fiz aqui e funcionou... muito obrigado, tenho prova semana q vem e as resoluçoes no halliday ajudam bastante o estudo. abraços!

@brenovambaster
Copy link

Bons estudos!

@thihxm
Copy link
Author

thihxm commented Oct 11, 2021

boa tarde, thiago. o site atualizou, quebrando o script atual. existe a possibilidade de vc atualizar o script? agradeço desde já

Bom dia, @caioba1. O pessoal do RespondeAí atualizou no modo que eles apresentam as informações do backend das soluções comentadas de livros, agora somente o primeiro passo é retornado na página. Por exemplo nesse livro do Sadiku https://app.respondeai.com.br/materias/solucionario/livro/27/edicao/45/exercicio/49288. Você consegue ver que tem todos os passos, mas são todos iguais. Teria que fazer alguma modificação na requisição inicial ao site, esse script que fiz só altera o frontend depois de receber todas as respostas do servidor

@thihxm
Copy link
Author

thihxm commented Oct 11, 2021

Ainda não tive tempo de atualizar o script, mas as requisições retornam todos os passos. Preciso fazer um redesign completo no funcionamento para pegar os dados das requisições ao invés de somente alterar a tela

@DanielErnany
Copy link

Boa noite Tiago, o código acima está atualizado(não manjo de git) ? Pq não estou conseguindo ver o conteúdo das respostas .

@thihxm
Copy link
Author

thihxm commented Oct 13, 2021

Boa noite Tiago, o código acima está atualizado(não manjo de git) ? Pq não estou conseguindo ver o conteúdo das respostas .

Esse código ali não é meu, mas acho que não funciona com todas as páginas mesmo. Ele não considera todas as possibilidades de classes dentro do RespondeAí

@brenovambaster
Copy link

@Ernany404 O responde aí atualizou as classes novamente. O código que fiz ficou desatualizado, como @thihxm disse, ele não considera todas as classes. É um código simples que só funcionava na pagina de questão.

@brenovambaster
Copy link

Uma maneira simples de resolver isso é usando um comando css global. Com explica o seguinte vídeo: https://youtu.be/CalBlzFGoQM

@DanielErnany
Copy link

Boa noite Tiago, o código acima está atualizado(não manjo de git) ? Pq não estou conseguindo ver o conteúdo das respostas .

Esse código ali não é meu, mas acho que não funciona com todas as páginas mesmo. Ele não considera todas as possibilidades de classes dentro do RespondeAí

A sim valeu.

@DanielErnany
Copy link

@Ernany404 O responde aí atualizou as classes novamente. O código que fiz ficou desatualizado, como @thihxm disse, ele não considera todas as classes. É um código simples que só funcionava na pagina de questão.

Entendi. Valeu mano. Esse código ajudou d+, você pretende atualizar ele pra voltar a funcionar no novo site ?

@DanielErnany
Copy link

Uma maneira simples de resolver isso é usando um comando css global. Com explica o seguinte vídeo: https://youtu.be/CalBlzFGoQM

Funcionou, obrigado !

@thihxm
Copy link
Author

thihxm commented Oct 14, 2021

Entendi. Valeu mano. Esse código ajudou d+, você pretende atualizar ele pra voltar a funcionar no novo site ?

Agora estou meio sem tempo, mas a intenção é reformular o script e criar uma extensão para o chrome. Fiz uma pesquisa rápida e fica mais viável de criar um proxy para as requisições e apresentar direto na tela os resultados, antes mesmo que o site possa fazer qualquer ofuscação.

@jvmath
Copy link

jvmath commented Oct 15, 2021

Algum plano para atualizar? um site até postou uma versão aprimorada desse seu, mas hoje já parou de pegar novamente :(

@thihxm
Copy link
Author

thihxm commented Oct 20, 2021

Algum plano para atualizar? um site até postou uma versão aprimorada desse seu, mas hoje já parou de pegar novamente :(

Lancei uma correção para a parte de conteúdos, acredito que agora esteja funcionando

@Isaias7777
Copy link

Alguém aqui sabe como remover o blur das respostas do site ingês Chegg? Cara, eu preciso muito! Aquele site tem todas as questôes que vc precisar

@Darlam-Alves
Copy link

Quando você vai atualizar o código para pegar na nova versão do site?

@jvmath
Copy link

jvmath commented Dec 21, 2021

Pretende adaptar o codigo novamente?

@sh0da7
Copy link

sh0da7 commented Feb 18, 2022

O site deles foi atualizado essa semana

@marcosena8291
Copy link

Olá, tudo bem? Ainda é possível atualizar o script? Nunca precisei tanto como agora : (

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment