From e271e2a615f305412fea583a9139e2fe8c2b9779 Mon Sep 17 00:00:00 2001 From: magnolia1234 <7676006-magnolia1234@users.noreply.gitlab.com> Date: Sun, 18 Oct 2020 14:49:32 +0200 Subject: [PATCH] Fix-update Australia News Corp (amp) --- README.md | 4 +- background.js | 4 +- changelog.txt | 1 + contentScript.js | 158 +++++++++++++++++++++++++---------------------- 4 files changed, 89 insertions(+), 78 deletions(-) diff --git a/README.md b/README.md index ed68a84..7e4617a 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,10 @@ ### Installation You can install the add-on from Mozilla add-ons (AMO): [Bypass Paywalls Clean](https://addons.mozilla.org/en-US/firefox/addon/bypass-paywalls-clean) Or download and install the latest version from [BitBucket](https://bitbucket.org/magnolia1234/bypass-paywalls-firefox-clean/downloads) -By default BPC has limited permissions, but you can opt-in to enable custom sites (and also clear cookies for non-listed sites). +By default BPC has limited permissions, but you can opt-in to enable custom sites (and also clear cookies/block general paywall-scripts for non-listed sites). Install add-on by downloading xpi-file. On Android this add-on only works with Firefox 68 (Fennec); Firefox 79 (Fenix) only supports 9 add-ons (for now). -So don't update to Firefox 79 or use F-droid's [Fennec-release](https://f-droid.org/en/packages/org.mozilla.fennec_fdroid/) +So don't update to Firefox 79 or use Firefox Nightly (and load BPC from a custom add-on collection). ### List of supported websites diff --git a/background.js b/background.js index cf3595b..61a48dc 100644 --- a/background.js +++ b/background.js @@ -322,6 +322,7 @@ ext_api.storage.sync.get({ for (let domain of au_news_corp_domains) { allow_cookies.push(domain); use_google_bot.push(domain); + blockedRegexes[domain] = /cdn\.ampproject\.org\/v\d\/amp-access-.+\.js/; } } else disabledSites = disabledSites.concat(au_news_corp_domains); @@ -573,9 +574,10 @@ ext_api.webRequest.onBeforeSendHeaders.addListener(function(details) { let inkl_site = (matchUrlDomain('cdn.jsdelivr.net', details.url) && matchUrlDomain('inkl.com', header_referer) && isSiteEnabled({url: header_referer})); let bloomberg_site = (matchUrlDomain('assets.bwbx.io', details.url) && matchUrlDomain('bloomberg.com', header_referer) && isSiteEnabled({url: header_referer})); + let au_nc_amp_site = (matchUrlDomain('cdn.ampproject.org', details.url) && matchUrlDomain(au_news_corp_domains, header_referer) && isSiteEnabled({url: header_referer})); let au_apn_site = (header_referer && (urlHost(header_referer).endsWith('com.au') || urlHost(header_referer).endsWith('net.au')) && details.url.includes('https://media.apnarm.net.au/')); let au_swm_site = (header_referer && urlHost(header_referer).endsWith('com.au') && details.url.includes('https://s.thewest.com.au/')); - if (!isSiteEnabled(details) && !(inkl_site) && !(bloomberg_site) && !(au_apn_site) && !(au_swm_site)) { + if (!isSiteEnabled(details) && !(inkl_site) && !(bloomberg_site) && !(au_nc_amp_site) && !(au_apn_site) && !(au_swm_site)) { return; } diff --git a/changelog.txt b/changelog.txt index 32d3b25..d6aefa7 100644 --- a/changelog.txt +++ b/changelog.txt @@ -5,6 +5,7 @@ Post-release Add NYmag-sites Grub Street, The Cut & Vulture Add Quotidiano.net (Italy) Add The West Australian (+ regional) +Fix-update Australia News Corp (amp) Fix-update Inkl (disable newsletter login) Fix-update Toronto Star (external cookie-script) Update opt-in tab (default settings) diff --git a/contentScript.js b/contentScript.js index 55b6477..566d36e 100644 --- a/contentScript.js +++ b/contentScript.js @@ -65,9 +65,9 @@ else if (domain = matchDomain(["brisbanetimes.com.au", "smh.com.au", "theage.com else if (window.location.hostname.endsWith(".com.au") || window.location.hostname.endsWith(".net.au")) { // Australian Community Media newspapers - let au_sites = ['bendigoadvertiser.com.au', 'bordermail.com.au', 'canberratimes.com.au', 'centralwesterndaily.com.au', 'dailyadvertiser.com.au', 'dailyliberal.com.au', 'examiner.com.au', 'illawarramercury.com.au', 'newcastleherald.com.au', 'northerndailyleader.com.au', 'portnews.com.au', 'standard.net.au', 'theadvocate.com.au', 'thecourier.com.au', 'westernadvocate.com.au']; + let au_cm_sites = ['bendigoadvertiser.com.au', 'bordermail.com.au', 'canberratimes.com.au', 'centralwesterndaily.com.au', 'dailyadvertiser.com.au', 'dailyliberal.com.au', 'examiner.com.au', 'illawarramercury.com.au', 'newcastleherald.com.au', 'northerndailyleader.com.au', 'portnews.com.au', 'standard.net.au', 'theadvocate.com.au', 'thecourier.com.au', 'westernadvocate.com.au']; let au_piano_script = document.querySelector('script[src="https://cdn-au.piano.io/api/tinypass.min.js"]'); - if (matchDomain(au_sites) || au_piano_script) { + if (matchDomain(au_cm_sites) || au_piano_script) { const subscribe_truncate = document.querySelector('.subscribe-truncate'); if (subscribe_truncate) subscribe_truncate.classList.remove('subscribe-truncate'); @@ -76,85 +76,93 @@ else if (window.location.hostname.endsWith(".com.au") || window.location.hostnam subscriber_hider.classList.remove('subscriber-hider'); } } else if (window.location.hostname.endsWith(".com.au")) { - // Australian Seven West Media - let swm_script = document.querySelector('script[src^="https://s.thewest.com.au"]'); - if (matchDomain("thewest.com.au") || swm_script) { - window.setTimeout(function () { - let breach_screen = document.querySelector('div[data-testid*="BreachScreen"]'); - if (breach_screen) { - let scripts = document.querySelectorAll('script'); - let json_script; - for (let script of scripts) { - if (script.innerText.includes('window.PAGE_DATA =')) - json_script = script; - continue; - } - if (json_script) { - let json_text = json_script.innerHTML.split('window.PAGE_DATA =')[1].split('' + par.text + '

'; - } else if (par.kind === 'subhead') { - article = article + '

' + par.text + '

'; - } else if (par.kind === 'pull-quote') { - article = article + '' + (par.attribution ? par.attribution + ': ' : '') + par.text + ''; - } else if (par.kind === 'embed') { - if (par.reference.includes('https://omny.fm/') || par.reference.includes('https://docdro.id/')) { - article = article + ''; + // Australia News Corp + let au_nc_sites = ['adelaidenow.com.au', 'cairnspost.com.au', 'couriermail.com.au', 'dailytelegraph.com.au', 'geelongadvertiser.com.au', 'goldcoastbulletin.com.au', 'heraldsun.com.au', 'ntnews.com.au', 'theaustralian.com.au', 'themercury.com.au', 'townsvillebulletin.com.au', 'weeklytimesnow.com.au']; + if (matchDomain(au_nc_sites) && window.location.hostname.startsWith('amp.')) { + let div_hidden_all = document.querySelectorAll('div[amp-access="access AND subscriber"]'); + for (let div_hidden of div_hidden_all) + div_hidden.removeAttribute('amp-access-hide'); + } else { + // Australian Seven West Media + let swm_script = document.querySelector('script[src^="https://s.thewest.com.au"]'); + if (matchDomain("thewest.com.au") || swm_script) { + window.setTimeout(function () { + let breach_screen = document.querySelector('div[data-testid*="BreachScreen"]'); + if (breach_screen) { + let scripts = document.querySelectorAll('script'); + let json_script; + for (let script of scripts) { + if (script.innerText.includes('window.PAGE_DATA =')) + json_script = script; + continue; + } + if (json_script) { + let json_text = json_script.innerHTML.split('window.PAGE_DATA =')[1].split('' + par.text + '

'; + } else if (par.kind === 'subhead') { + article = article + '

' + par.text + '

'; + } else if (par.kind === 'pull-quote') { + article = article + '' + (par.attribution ? par.attribution + ': ' : '') + par.text + ''; + } else if (par.kind === 'embed') { + if (par.reference.includes('https://omny.fm/') || par.reference.includes('https://docdro.id/')) { + article = article + ''; + } else { + article = article + 'Embed: ' + '' + par.reference + ''; + console.log('embed: ' + par.reference); + } + } else if (par.kind === 'unordered-list') { + if (par.items) { + article = article + ''; + } + } else if (par.kind === 'inline') { + if (par.asset.kind === 'image') { + article = article + '
'; + article = article + '
' + + par.asset.captionText + ' ' + par.asset.copyrightByline + + ((par.asset.copyrightCredit && par.asset.captionText !== par.asset.copyrightByline) ? '/' + par.asset.copyrightCredit : '') + + '
'; + } } else { - article = article + 'Embed: ' + '' + par.reference + ''; - console.log('embed: ' + par.reference); - } - } else if (par.kind === 'unordered-list') { - if (par.items) { - article = article + ''; - } - } else if (par.kind === 'inline') { - if (par.asset.kind === 'image') { - article = article + '
'; - article = article + '
' + - par.asset.captionText + ' ' + par.asset.copyrightByline + - ((par.asset.copyrightCredit && par.asset.captionText !== par.asset.copyrightByline) ? '/' + par.asset.copyrightCredit : '') + - '
'; + article = article + '

' + par.text + '

'; + console.log(par.kind); } + } + let content = document.querySelector('div[class*="StyledArticleContent"]'); + let parser = new DOMParser(); + let par_html = parser.parseFromString('
' + article + '
', 'text/html'); + let par_dom = par_html.querySelector('div'); + if (content) { + content.appendChild(par_dom); } else { - article = article + '

' + par.text + '

'; - console.log(par.kind); + par_dom.setAttribute('style', 'margin: 20px;'); + breach_screen.parentElement.insertBefore(par_dom, breach_screen); } } - let content = document.querySelector('div[class*="StyledArticleContent"]'); - let parser = new DOMParser(); - let par_html = parser.parseFromString('
' + article + '
', 'text/html'); - let par_dom = par_html.querySelector('div'); - if (content) { - content.appendChild(par_dom); - } else { - par_dom.setAttribute('style', 'margin: 20px;'); - breach_screen.parentElement.insertBefore(par_dom, breach_screen); - } + removeDOMElement(breach_screen); } - removeDOMElement(breach_screen); - } - }, 1000); // Delay (in milliseconds) - let header_advert = document.querySelector('.headerAdvertisement'); - if (header_advert) - header_advert.setAttribute('style', 'display: none;'); + }, 1000); // Delay (in milliseconds) + let header_advert = document.querySelector('.headerAdvertisement'); + if (header_advert) + header_advert.setAttribute('style', 'display: none;'); + } } } }