burlesco/userscript/burlesco.user.js

424 lines
16 KiB
JavaScript

// ==UserScript==
// @name Burlesco
// @namespace https://burles.co/
// @version 11.15
// @description Leia notícias sem ser assinante, burle o paywall
// @author rodorgas & AugustoResende
// @supportURL https://burles.co
// @icon64 https://burles.co/userscript/icon.png
// Atenção: Caso algum site não funcione logo após a instalação, limpe o cache do navegador.
// @grant GM_webRequest
// @grant GM_xmlhttpRequest
// @connect gauchazh.clicrbs.com.br
// @connect static.infoglobo.com.br
// @connect cdn.tinypass.com
// @match *://www.bloomberg.com/*
// @match *://correio.rac.com.br/*
// @match *://*.nsctotal.com.br/*
// @match *://www.economist.com/*
// @match *://*.estadao.com.br/*
// @match *://foreignpolicy.com/*
// @match *://blockv2.fivewall.com.br/*
// @match *://*.folha.uol.com.br/*
// @match *://*.folha.com.br/*
// @match *://gauchazh.clicrbs.com.br/*
// @match *://*.zh.clicrbs.com.br/*
// @match *://api.clicrbs.com.br/*
// @match *://*.gazetadopovo.com.br/*
// @match *://ogjs.infoglobo.com.br/*
// @match *://*.jota.info/*
// @match *://www.jornalnh.com.br/*
// @match *://*.nexojornal.com.br/*
// @match *://www.netdeal.com.br/*
// @match *://*.nytimes.com/*
// @match *://*.nyt.com/*
// @match *://*.oglobo.globo.com/*
// @match *://www.rbsonline.com.br/*
// @match *://api.tinypass.com/*
// @match *://cdn.tinypass.com/*
// @match *://dashboard.tinypass.com/*
// @match *://*.washingtonpost.com/*
// @match *://*.exame.abril.com.br/*
// @match *://www.eltiempo.com/*
// @match *://super.abril.com.br/*
// @match *://veja.abril.com.br/*
// @match *://quatrorodas.abril.com.br/*
// @match *://*.uol.com.br/*
// @match *://www.uol/*
// @match *://*.wsj.com/*
// @match *://*.ft.com/*
// @match *://*.gramophone.co.uk/*
// @match *://*.folhadelondrina.com.br/*
// @match *://*.wired.com/*
// @match *://www.jornalvs.com.br/*
// @match *://*.br18.com.br/*
// @match *://*.diariopopular.com.br/*
// @match *://*.haaretz.com/*
// @match *://*.haaretz.co.il/*
// @match *://*.diarinho.com.br/*
// @match *://*.diariodaregiao.com.br/*
// @webRequestItem {"selector":{"include":"*://paywall.folha.uol.com.br/*","exclude":"*://paywall.folha.uol.com.br/status.php"} ,"action":"cancel"}
// @webRequestItem {"selector":"*://static.folha.uol.com.br/paywall/*","action":"cancel"}
// @webRequestItem {"selector":"*://ogjs.infoglobo.com.br/*/js/controla-acesso-aux.js","action":"cancel"}
// @webRequestItem {"selector":"*://static.infoglobo.com.br/paywall/register-piano/*/scripts/nova-tela-register.js","action":"cancel"}
// @webRequestItem {"selector":"*://www.netdeal.com.br/*","action":"cancel"}
// @webRequestItem {"selector":"*://correio.rac.com.br/includes/js/novo_cp/fivewall.js*","action":"cancel"}
// @webRequestItem {"selector":"*://dashboard.tinypass.com/xbuilder/experience/load*","action":"cancel"}
// @webRequestItem {"selector":"*://*.jornalnh.com.br/includes/js/paywall.js*","action":"cancel"}
// @webRequestItem {"selector":"*://blockv2.fivewall.com.br/*","action":"cancel"}
// @webRequestItem {"selector":"*://www.rbsonline.com.br/cdn/scripts/SLoader.js","action":"cancel"}
// @webRequestItem {"selector":"*://*.nytimes.com/js/mtr.js","action":"cancel"}
// @webRequestItem {"selector":"*://*.washingtonpost.com/wp-stat/pwapi/*","action":"cancel"}
// @webRequestItem {"selector":"*://cdn.tinypass.com/api/tinypass.min.js","action":"cancel"}
// @webRequestItem {"selector":"*://api.tinypass.com/tpl/*","action":"cancel"}
// @webRequestItem {"selector":"*://tm.jsuol.com.br/modules/content-gate.js","action":"cancel"}
// @webRequestItem {"selector":"*://gauchazh.clicrbs.com.br/static/main*","action":"cancel"}
// @webRequestItem {"selector":"*://www.rbsonline.com.br/cdn/scripts/special-paywall.min.js*","action":"cancel"}
// @webRequestItem {"selector":"https://paywall.nsctotal.com.br/behaviors","action":"cancel"}
// @webRequestItem {"selector":"*://*.estadao.com.br/paywall/*","action":"cancel"}
// @webRequestItem {"selector":"*://www.folhadelondrina.com.br/*/fivewall.js*","action":"cancel"}
// @webRequestItem {"selector":"*://www.jornalvs.com.br/includes/js/paywall.js*","action":"cancel"}
// @webRequestItem {"selector":"https://www.eltiempo.com/js/desktopArticle.js*","action":"cancel"}
// @webRequestItem {"selector":"*://*.haaretz.co.il/*/inter.js","action":"cancel"}
// @webRequestItem {"selector":"*://*.themarker.com/*/inter.js","action":"cancel"}
// @webRequestItem {"selector":"*://*.diarinho.com.br/wp-admin/admin-ajax.php","action":"cancel"}
// @webRequestItem {"selector":"*://diarinho.com.br/wp-admin/admin-ajax.php","action":"cancel"}
// @run-at document-start
// @noframes
// ==/UserScript==
// run_at: document_start
if (/gauchazh\.clicrbs\.com\.br/.test(document.location.host)) {
document.addEventListener('DOMContentLoaded', function() {
function patchJs(jsurl) {
GM_xmlhttpRequest({
method: 'GET',
url: jsurl,
onload: function(response) {
var injectme = response.responseText;
injectme = injectme.replace(/[a-z].showLoginPaywall,/g, 'false,');
injectme = injectme.replace(/[a-z].showPaywall,/g, 'false,');
injectme = injectme.replace(/[a-z].requestCPF\|\|!1,/g, 'false,');
injectme = injectme.replace(
/![a-z].showLoginPaywall&&![a-z].showPaywall\|\|!1/g, 'true');
var script = document.createElement('script');
script.type = 'text/javascript';
var textNode = document.createTextNode(injectme);
script.appendChild(textNode);
document.head.appendChild(script);
}
});
}
var scripts = Array.from(document.getElementsByTagName('script'));
var script = scripts.find((el) => { return el.src.includes('static/main'); });
if (script)
patchJs(script.src);
});
window.onload = function() {
function check(){
if(document.getElementsByClassName('wrapper-paid-content')[0]){
document.getElementsByClassName('wrapper-paid-content')[0].innerHTML = '<p>Por favor aperte Ctrl-F5 para carregar o restante da notícia!</p>';
}
setTimeout(function(){ check(); }, 1000);
}
check();
};
}
else if (/oglobo\.globo\.com/.test(document.location.host)) {
// Insere Tinypass, necessário para a biblioteca piano
GM_xmlhttpRequest({
method: 'GET',
url: 'https://cdn.tinypass.com/api/tinypass.min.js',
anonymous: true,
onload: function(response) {
var script = document.createElement('script');
script.type = 'text/javascript';
var textNode = document.createTextNode(response.responseText);
script.appendChild(textNode);
document.head.appendChild(script);
}
});
document.addEventListener('DOMContentLoaded', function() {
function patchJs(jsurl) {
GM_xmlhttpRequest({
method: 'GET',
url: jsurl,
onload: function(response) {
var injectme = response.responseText;
injectme = injectme.replace('window.hasPaywall||!1;window.dataLayer=window.dataLayer||[]', 'false');
injectme = injectme.replace('window.conteudoExclusivo?!0:!1', 'false');
injectme = injectme.replace('Piano.activePaywall=!0', 'Piano.activePaywall=false');
injectme = injectme.replace('Piano.checkPaywall()', '');
var script = document.createElement('script');
script.type = 'text/javascript';
var textNode = document.createTextNode(injectme);
script.appendChild(textNode);
document.head.appendChild(script);
}
});
}
var scripts = Array.from(document.getElementsByTagName('script'));
var script = scripts.find((el) => { return el.src.includes('js/tiny.js'); });
if (script)
patchJs(script.src);
});
}
else if (/jota\.info/.test(document.location.host)) {
var page_url = window.location.href;
if (page_url.search('paywall') >= 0) { // Só ativa em urls com paywall
var new_page_url = window.location.href.replace('www.jota.info/paywall?redirect_to=//', '');
GM_xmlhttpRequest({
method: 'GET',
url: new_page_url,
headers: {
'User-Agent': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'
},
anonymous: true,
onload: function(response) {
var parser = new DOMParser();
var newDocument = parser.parseFromString(response.responseText,'text/html');
newDocument.getElementsByClassName('jota-paywall')[0].remove(); // Já remove o anúncio do paywall antes de inserir
if (newDocument) {
document.open();
history.pushState({urlPath: new_page_url}, '', new_page_url); // Atualiza a url sem fazer um novo refresh
document.write(newDocument.getElementsByTagName('html')[0].innerHTML);
document.close();
}
}
});
}
}
// run_at: document_idle
document.addEventListener('DOMContentLoaded', function() {
var code = null;
if (/www\.economist\.com/.test(document.location.host))
code = 'document.cookie = "ec_limit=allow";';
else if (/ft\.com/.test(document.location.host)
&& document.querySelector('.barrier')) {
eraseAllCookies();
document.cookie = '';
localStorage.clear();
sessionStorage.clear();
indexedDB.deleteDatabase('next-flags');
indexedDB.deleteDatabase('next:ads');
GM_xmlhttpRequest({
method: 'GET',
url: window.location.href,
headers: {
'Referer': 'https://www.google.com.br/'
},
anonymous: true,
onload: function(response) {
var parser = new DOMParser();
var newDocument = parser.parseFromString(response.responseText,'text/html');
if (newDocument.getElementsByClassName('article__content')[0]) {
document.open();
document.write(newDocument.getElementsByTagName('html')[0].innerHTML);
document.close();
}
}
});
}
else if (/foreignpolicy\.com/.test(document.location.host)) {
code = `
document.getElementById("paywall_bg").remove();
document.body.classList.remove("overlay-no-scroll");
document.body.style.overflow = "visible";
document.documentElement.classList.remove("overlay-no-scroll");
`;
}
else if (/folha\.uol\.com\.br/.test(document.location.host)) {
code = `
omtrClickUOL = function(){};function showText() {
$("#bt-read-more-content").next().show();
$("#bt-read-more-content").next().show().prev().remove();
}
setTimeout(showText, 100);
`;
}
else if (/nexojornal\.com\.br/.test(document.location.host)) {
code = `
style = document.createElement('style');
style.type = 'text/css';
css='#aviso-metered-access {display: none !important}';
style.appendChild(document.createTextNode(css));
document.head.appendChild(style);
paywallContainer = document.getElementsByClassName('new-paywall-container')[0];
paywallContent = paywallContainer.getAttribute('data-paywall-content');
nexoApiURL = paywallContainer.getAttribute('data-paywall-check');
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && (this.status == 200 || this.status == 201 || this.status == 401)) {
access_token = JSON.parse(this.responseText)['access_token'];
paywallContainer.className = 'wf-placeholder';
paywallContainer.setAttribute('data-loadURL', paywallContent.replace('{access_token}', access_token));
paywallContainer.setAttribute('data-skip-profiles', '');
WFLazyLoader.loadFragment()
}
};
xmlhttp.open('GET', nexoApiURL, true);
xmlhttp.send();`;
}
else if (/abril\.com\.br/.test(document.location.host))
code = `
document.queryselectorall('.callpaywall')
.foreach(x => x.remove());
document.queryselectorall('.content-blocked')
.foreach(x => x.classlist.remove('content-blocked'))
`;
else if (/nytimes\.com/.test(document.location.host))
eraseAllCookies();
else if (/wsj\.com/.test(document.location.host)
&& document.querySelector('.wsj-snippet-login')) {
eraseAllCookies();
document.cookie = '';
localStorage.clear();
sessionStorage.clear();
GM_xmlhttpRequest({
method: 'GET',
url: window.location.href,
headers: {
'Referer': 'https://www.facebook.com/'
},
anonymous: true,
onload: function(response) {
var parser = new DOMParser();
var newDocument = parser.parseFromString(response.responseText,'text/html');
if (newDocument.querySelector('article')) {
document.body = newDocument.body;
}
}
});
}
else if (/bloomberg\.com/.test(document.location.host)) {
localStorage.clear();
sessionStorage.clear();
}
else if (/diariodaregiao\.com\.br/.test(document.location.host))
{
document.getElementsByClassName('noticia-texto')[0].style.display = 'block';
document.querySelector('.conteudo > .row').style.display = 'none';
}
else if (/diariopopular\.com\.br/.test(document.location.host)) {
eraseAllCookies();
}
else if (/wired\.com/.test(document.location.host)) {
code = `
window.onload = function() {
style = document.createElement('style');
style.type = 'text/css';
css='.paywall-container-component {display: none !important}';
style.appendChild(document.createTextNode(css));
document.head.appendChild(style);
}
document.cookie = "";
localStorage.clear();
sessionStorage.clear();
`;
eraseAllCookies();
}
else if (/haaretz\.com/.test(document.location.host) ||
(/haaretz\.co\.il/.test(document.location.host))) {
GM_xmlhttpRequest({
method: 'GET',
url: window.location.href,
headers: {
'User-Agent': 'Googlebot/2.1 (+http://www.googlebot.com/bot.html)'
},
anonymous: true,
onload: function(response) {
var parser = new DOMParser();
var newDocument = parser.parseFromString(response.responseText,'text/html');
if (newDocument) {
document.open();
document.write(newDocument.getElementsByTagName('html')[0].innerHTML);
document.close();
}
}
});
}
if (code !== null) {
var script = document.createElement('script');
script.textContent = code;
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
}
});
function eraseAllCookies() {
var cookieList = document.cookie.split (/;\s*/);
for (var J = cookieList.length - 1; J >= 0; --J) {
var cookieName = cookieList[J].replace (/\s*(\w+)=.+$/, '$1');
eraseCookie (cookieName);
}
}
function eraseCookie (cookieName) {
// https://stackoverflow.com/a/28081337/1840019
//--- ONE-TIME INITS:
//--- Set possible domains. Omits some rare edge cases.?.
var domain = document.domain;
var domain2 = document.domain.replace (/^www\./, '');
var domain3 = document.domain.replace (/^(\w+\.)+?(\w+\.\w+)$/, '$2');
//--- Get possible paths for the current page:
var pathNodes = location.pathname.split ('/').map ( function (pathWord) {
return '/' + pathWord;
} );
var cookPaths = [''].concat (pathNodes.map ( function (pathNode) {
if (this.pathStr) {
this.pathStr += pathNode;
}
else {
this.pathStr = '; path=';
return (this.pathStr + pathNode);
}
return (this.pathStr);
} ) );
// eslint-disable-next-line no-func-assign
( eraseCookie = function (cookieName) {
//--- For each path, attempt to delete the cookie.
cookPaths.forEach ( function (pathStr) {
//--- To delete a cookie, set its expiration date to a past value.
var diagStr = cookieName + '=' + pathStr + '; expires=Thu, 01-Jan-1970 00:00:01 GMT;';
document.cookie = diagStr;
document.cookie = cookieName + '=' + pathStr + '; domain=' + domain + '; expires=Thu, 01-Jan-1970 00:00:01 GMT;';
document.cookie = cookieName + '=' + pathStr + '; domain=' + domain2 + '; expires=Thu, 01-Jan-1970 00:00:01 GMT;';
document.cookie = cookieName + '=' + pathStr + '; domain=' + domain3 + '; expires=Thu, 01-Jan-1970 00:00:01 GMT;';
} );
} ) (cookieName);
}