📝 Installed bypass-paywalls
This commit is contained in:
parent
9fa7af7382
commit
f663b6b141
24 changed files with 2551 additions and 0 deletions
569
bypass-paywalls-chrome-master/src/js/background.js
Executable file
569
bypass-paywalls-chrome-master/src/js/background.js
Executable file
|
|
@ -0,0 +1,569 @@
|
|||
'use strict';
|
||||
|
||||
const restrictions = {
|
||||
'adweek.com': /^((?!\.adweek\.com\/(.+\/)?(amp|agencyspy|tvnewser|tvspy)\/).)*$/,
|
||||
'barrons.com': /.+\.barrons\.com\/(amp\/)?article(s)?\/.+/,
|
||||
'economist.com': /.+economist\.com\/.+\/\d{1,4}\/\d{1,2}\/\d{2}\/.+/,
|
||||
'seekingalpha.com': /.+seekingalpha\.com\/article\/.+/,
|
||||
'techinasia.com': /\.techinasia\.com\/.+/,
|
||||
'ft.com': /.+\.ft.com\/content\//
|
||||
};
|
||||
|
||||
// Don't remove cookies before page load
|
||||
const allowCookies = [
|
||||
'ad.nl',
|
||||
'bd.nl',
|
||||
'bndestem.nl',
|
||||
'brisbanetimes.com.au',
|
||||
'canberratimes.com.au',
|
||||
'cen.acs.org',
|
||||
'demorgen.be',
|
||||
'denverpost.com',
|
||||
'destentor.nl',
|
||||
'ed.nl',
|
||||
'examiner.com.au',
|
||||
'gelocal.it',
|
||||
'gelderlander.nl',
|
||||
'grubstreet.com',
|
||||
'harpers.org',
|
||||
'hbr.org',
|
||||
'humo.be',
|
||||
'lesechos.fr',
|
||||
'lrb.co.uk',
|
||||
'medium.com',
|
||||
'mercurynews.com',
|
||||
'newstatesman.com',
|
||||
'nrc.nl',
|
||||
'nymag.com',
|
||||
'ocregister.com',
|
||||
'parool.nl',
|
||||
'pzc.nl',
|
||||
'qz.com',
|
||||
'scientificamerican.com',
|
||||
'seattletimes.com',
|
||||
'seekingalpha.com',
|
||||
'sofrep.com',
|
||||
'spectator.co.uk',
|
||||
'speld.nl',
|
||||
'tubantia.nl',
|
||||
'techinasia.com',
|
||||
'telegraaf.nl',
|
||||
'the-american-interest.com',
|
||||
'theadvocate.com.au',
|
||||
'theage.com.au',
|
||||
'theatlantic.com',
|
||||
'theaustralian.com.au',
|
||||
'thecut.com',
|
||||
'thediplomat.com',
|
||||
'themercury.com.au',
|
||||
'towardsdatascience.com',
|
||||
'trouw.nl',
|
||||
'vn.nl',
|
||||
'volkskrant.nl',
|
||||
'vulture.com',
|
||||
'nzz.ch',
|
||||
'thehindu.com',
|
||||
'financialpost.com',
|
||||
'haaretz.co.il',
|
||||
'haaretz.com',
|
||||
'themarker.com',
|
||||
'sueddeutsche.de',
|
||||
'gelocal.it',
|
||||
'elmundo.es',
|
||||
'time.com',
|
||||
'zeit.de',
|
||||
'expansion.com',
|
||||
'dailytelegraph.com.au',
|
||||
'washingtonpost.com'
|
||||
];
|
||||
|
||||
// Removes cookies after page load
|
||||
const removeCookies = [
|
||||
'ad.nl',
|
||||
'bd.nl',
|
||||
'bloomberg.com',
|
||||
'bloombergquint.com',
|
||||
'bndestem.nl',
|
||||
'brisbanetimes.com.au',
|
||||
'canberratimes.com.au',
|
||||
'cen.acs.org',
|
||||
'demorgen.be',
|
||||
'denverpost.com',
|
||||
'destentor.nl',
|
||||
'ed.nl',
|
||||
'examiner.com.au',
|
||||
'gelderlander.nl',
|
||||
'globes.co.il',
|
||||
'grubstreet.com',
|
||||
'harpers.org',
|
||||
'hbr.org',
|
||||
'humo.be',
|
||||
'lesechos.fr',
|
||||
'mercurynews.com',
|
||||
'newstatesman.com',
|
||||
'nrc.nl',
|
||||
'nymag.com',
|
||||
'ocregister.com',
|
||||
'pzc.nl',
|
||||
'qz.com',
|
||||
'scientificamerican.com',
|
||||
'seattletimes.com',
|
||||
'sofrep.com',
|
||||
'spectator.co.uk',
|
||||
'speld.nl',
|
||||
'telegraaf.nl',
|
||||
'theadvocate.com.au',
|
||||
'theage.com.au',
|
||||
'theatlantic.com',
|
||||
'thecut.com',
|
||||
'thediplomat.com',
|
||||
'towardsdatascience.com',
|
||||
'tubantia.nl',
|
||||
'vn.nl',
|
||||
'vulture.com',
|
||||
'wsj.com',
|
||||
'medium.com',
|
||||
'washingtonpost.com',
|
||||
'japantimes.co.jp'
|
||||
];
|
||||
|
||||
// Contains remove cookie sites above plus any custom sites
|
||||
let _removeCookies = removeCookies;
|
||||
|
||||
// select specific cookie(s) to hold from removeCookies domains
|
||||
const removeCookiesSelectHold = {
|
||||
'qz.com': ['gdpr'],
|
||||
'wsj.com': ['wsjregion'],
|
||||
'seattletimes.com': ['st_newsletter_splash_seen']
|
||||
};
|
||||
|
||||
// select only specific cookie(s) to drop from removeCookies domains
|
||||
const removeCookiesSelectDrop = {
|
||||
'ad.nl': ['temptationTrackingId'],
|
||||
'ambito.com': ['TDNotesRead'],
|
||||
'bd.nl': ['temptationTrackingId'],
|
||||
'bndestem.nl': ['temptationTrackingId'],
|
||||
'demorgen.be': ['TID_ID'],
|
||||
'destentor.nl': ['temptationTrackingId'],
|
||||
'ed.nl': ['temptationTrackingId'],
|
||||
'fd.nl': ['socialread'],
|
||||
'gelderlander.nl': ['temptationTrackingId'],
|
||||
'humo.be': ['TID_ID'],
|
||||
'nrc.nl': ['counter'],
|
||||
'pzc.nl': ['temptationTrackingId'],
|
||||
'tubantia.nl': ['temptationTrackingId'],
|
||||
'speld.nl': ['speld-paywall']
|
||||
};
|
||||
|
||||
// Override User-Agent with Googlebot
|
||||
const useGoogleBotSites = [
|
||||
'adelaidenow.com.au',
|
||||
'barrons.com',
|
||||
'couriermail.com.au',
|
||||
'fd.nl',
|
||||
'genomeweb.com',
|
||||
'heraldsun.com.au',
|
||||
'lavoixdunord.fr',
|
||||
'ntnews.com.au',
|
||||
'quora.com',
|
||||
'seekingalpha.com',
|
||||
'telegraph.co.uk',
|
||||
'theaustralian.com.au',
|
||||
'themercury.com.au',
|
||||
'thenational.scot',
|
||||
'wsj.com',
|
||||
'kansascity.com',
|
||||
'republic.ru',
|
||||
'nzz.ch',
|
||||
'df.cl',
|
||||
'ft.com',
|
||||
'wired.com',
|
||||
'zeit.de'
|
||||
];
|
||||
|
||||
// Override User-Agent with Bingbot
|
||||
const useBingBot = [
|
||||
'haaretz.co.il',
|
||||
'haaretz.com',
|
||||
'themarker.com'
|
||||
];
|
||||
|
||||
// Contains google bot sites above plus any custom sites
|
||||
let _useGoogleBotSites = useGoogleBotSites;
|
||||
|
||||
function setDefaultOptions () {
|
||||
extensionApi.storage.sync.set({
|
||||
sites: defaultSites
|
||||
}, function () {
|
||||
extensionApi.runtime.openOptionsPage();
|
||||
});
|
||||
}
|
||||
|
||||
// Block external scripts
|
||||
const blockedRegexes = {
|
||||
'adweek.com': /.+\.lightboxcdn\.com\/.+/,
|
||||
'afr.com': /afr\.com\/assets\/vendorsReactRedux_client.+\.js/,
|
||||
'businessinsider.com': /(.+\.tinypass\.com\/.+|cdn\.onesignal\.com\/sdks\/.+\.js)/,
|
||||
'chicagotribune.com': /.+:\/\/.+\.tribdss\.com\//,
|
||||
'economist.com': /(.+\.tinypass\.com\/.+|economist\.com\/engassets\/_next\/static\/chunks\/framework.+\.js)/,
|
||||
'editorialedomani.it': /(js\.pelcro\.com\/.+|editorialedomani.it\/pelcro\.js)/,
|
||||
'foreignpolicy.com': /(cdn\.cxense\.com\/|\.tinypass\.com\/)/,
|
||||
'fortune.com': /.+\.tinypass\.com\/.+/,
|
||||
'haaretz.co.il': /haaretz\.co\.il\/htz\/js\/inter\.js/,
|
||||
'haaretz.com': /haaretz\.com\/hdc\/web\/js\/minified\/header-scripts-int.js.+/,
|
||||
'inquirer.com': /.+\.tinypass\.com\/.+/,
|
||||
'lastampa.it': /.+\.repstatic\.it\/minify\/sites\/lastampa\/.+\/config\.cache\.php\?name=social_js/,
|
||||
'lrb.co.uk': /.+\.tinypass\.com\/.+/,
|
||||
'medscape.com': /.+\.medscapestatic\.com\/.*medscape-library\.js/,
|
||||
'interest.co.nz': /(.+\.presspatron\.com.+|.+interest\.co\.nz.+pp-ablock-banner\.js)/,
|
||||
'repubblica.it': /scripts\.repubblica\.it\/pw\/pw\.js.+/,
|
||||
'spectator.co.uk': /.+\.tinypass\.com\/.+/,
|
||||
'spectator.com.au': /.+\.tinypass\.com\/.+/,
|
||||
'telegraph.co.uk': /.+telegraph\.co\.uk.+martech.+/,
|
||||
'thecourier.com.au': /.+cdn-au\.piano\.io\/api\/tinypass.+\.js/,
|
||||
'thenation.com': /thenation\.com\/.+\/paywall-script\.php/,
|
||||
'thenational.scot': /(.+\.tinypass\.com\/.+|.+thenational\.scot.+omniture\.js|.+thenational\.scot.+responsive-sync.+)/,
|
||||
'thewrap.com': /thewrap\.com\/.+\/wallkit\.js/,
|
||||
'wsj.com': /cdn\.ampproject\.org\/v\d\/amp-access-.+\.js/,
|
||||
'historyextra.com': /.+\.evolok\.net\/.+\/authorize\/.+/,
|
||||
'barrons.com': /cdn\.ampproject\.org\/v\d\/amp-access-.+\.js/,
|
||||
'irishtimes.com': /cdn\.ampproject\.org\/v\d\/amp-access-.+\.js/,
|
||||
'elmercurio.com': /(merreader\.emol\.cl\/assets\/js\/merPramV2.js|staticmer\.emol\.cl\/js\/inversiones\/PramModal.+\.js)/,
|
||||
'sloanreview.mit.edu': /(.+\.tinypass\.com\/.+|.+\.netdna-ssl\.com\/wp-content\/themes\/smr\/assets\/js\/libs\/welcome-ad\.js)/,
|
||||
'latercera.com': /.+\.cxense\.com\/+/,
|
||||
'lesechos.fr': /.+\.tinypass\.com\/.+/,
|
||||
'thehindu.com': /ajax\.cloudflare\.com\/cdn-cgi\/scripts\/.+\/cloudflare-static\/rocket-loader\.min\.js/,
|
||||
'technologyreview.com': /.+\.blueconic\.net\/.+/,
|
||||
'spectator.us': /(cdn\.cxense\.com\/.+|\.tinypass\.com\/.+)/,
|
||||
'gelocal.it': /(\.repstatic\.it\/minify\/sites\/gelocal\/.+\/config\.cache(_\d)?\.php|cdn\.ampproject\.org\/v\d\/amp-(access|ad)-.+\.js)/,
|
||||
'elmundo.es': /cdn\.ampproject\.org\/v\d\/amp-(access|ad|consent)-.+\.js/,
|
||||
'time.com': /\/time\.com\/dist\/meter-wall-client-js\..+\.js/,
|
||||
'thestar.com': /\.com\/api\/overlaydata/,
|
||||
'elpais.com': /(\.epimg\.net\/js\/.+\/(noticia|user)\.min\.js|\/elpais\.com\/arc\/subs\/p\.min\.js|cdn\.ampproject\.org\/v\d\/amp-(access|(sticky-)?ad|consent)-.+\.js)/,
|
||||
'expansion.com': /cdn\.ampproject\.org\/v\d\/amp-(access|ad|consent)-.+\.js/,
|
||||
'chicagobusiness.com': /(\.tinypass\.com\/|\.chicagobusiness\.com\/.+\/js\/js_.+\.js)/,
|
||||
'dailytelegraph.com.au': /cdn\.ampproject\.org\/v\d\/amp-(access|ad|consent)-.+\.js/,
|
||||
'theglobeandmail.com': /(\.theglobeandmail\.com\/pf\/dist\/engine\/react\.js|smartwall\.theglobeandmail\.com\/)/,
|
||||
'nytimes.com': /(meter-svc\.nytimes\.com\/meter\.js|mwcm\.nyt\.com\/.+\.js|cooking\.nytimes\.com\/api\/.+\/access)/,
|
||||
'latimes.com': /(metering\.platform\.latimes\.com\/|cdn\.ampproject\.org\/v\d\/amp-(access|subscriptions)-.+\.js)/,
|
||||
'theathletic.com': /cdn\.ampproject\.org\/v\d\/amp-(access|subscriptions)-.+\.js/,
|
||||
'japantimes.co.jp': /cdn\.cxense\.com\//,
|
||||
'scmp.com': /(\.tinypass\.com\/|cdn\.ampproject\.org\/v\d\/amp-access-.+\.js)/,
|
||||
'ilmessaggero.it': /(utils\.cedsdigital\.it\/js\/PaywallMeter\.js)/,
|
||||
'washingtonpost.com': /\.washingtonpost\.com\/tetro\/metering\/evaluate/
|
||||
};
|
||||
|
||||
const userAgentDesktop = 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)';
|
||||
const userAgentMobile = 'Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible ; Googlebot/2.1 ; +http://www.google.com/bot.html)';
|
||||
const userAgentDesktopBingBot = 'Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)';
|
||||
const userAgentMobileBingBot = 'Chrome/80.0.3987.92 Mobile Safari/537.36 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)';
|
||||
|
||||
let enabledSites = [];
|
||||
|
||||
// Get the enabled sites
|
||||
extensionApi.storage.sync.get({
|
||||
sites: {},
|
||||
customSites: []
|
||||
}, function (items) {
|
||||
enabledSites = Object.values(items.sites).concat(items.customSites);
|
||||
|
||||
// Use googlebot UA for custom sites
|
||||
_useGoogleBotSites = useGoogleBotSites.concat(items.customSites);
|
||||
|
||||
// Remove cookies for custom sites
|
||||
_removeCookies = removeCookies.concat(items.customSites);
|
||||
|
||||
if (extensionApi === chrome) {
|
||||
initGA();
|
||||
}
|
||||
});
|
||||
|
||||
// Listen for changes to options
|
||||
extensionApi.storage.onChanged.addListener(function (changes, namespace) {
|
||||
if (changes.sites && changes.sites.newValue) {
|
||||
const sites = changes.sites.newValue;
|
||||
enabledSites = Object.values(sites);
|
||||
}
|
||||
});
|
||||
|
||||
// Set and show default options on install
|
||||
extensionApi.runtime.onInstalled.addListener(function (details) {
|
||||
if (details.reason === 'install') {
|
||||
setDefaultOptions();
|
||||
} else if (details.reason === 'update') {
|
||||
// User updated extension
|
||||
}
|
||||
});
|
||||
|
||||
extensionApi.tabs.onUpdated.addListener(function (tabId, info, tab) {
|
||||
updateBadge(tab);
|
||||
});
|
||||
extensionApi.tabs.onActivated.addListener(function (activeInfo) {
|
||||
extensionApi.tabs.get(activeInfo.tabId, updateBadge);
|
||||
});
|
||||
|
||||
function updateBadge (activeTab) {
|
||||
if (extensionApi.runtime.lastError || !activeTab) { return; }
|
||||
const badgeText = getBadgeText(activeTab.url);
|
||||
extensionApi.browserAction.setBadgeBackgroundColor({ color: 'blue' });
|
||||
extensionApi.browserAction.setBadgeText({ text: badgeText });
|
||||
}
|
||||
|
||||
function getBadgeText (currentUrl) {
|
||||
return currentUrl && isSiteEnabled({ url: currentUrl }) ? 'ON' : '';
|
||||
}
|
||||
|
||||
// AMP redirect for dailytelegraph.com.au
|
||||
extensionApi.webRequest.onBeforeRequest.addListener(function (details) {
|
||||
if (!isSiteEnabled(details)) {
|
||||
return;
|
||||
}
|
||||
const updatedUrl = decodeURIComponent(details.url.split('&dest=')[1].split('&')[0]).replace('www.', 'amp.');
|
||||
return { redirectUrl: updatedUrl };
|
||||
},
|
||||
{ urls: ['*://www.dailytelegraph.com.au/subscribe/*'], types: ['main_frame'] },
|
||||
['blocking']
|
||||
);
|
||||
|
||||
// Disable javascript for these sites
|
||||
extensionApi.webRequest.onBeforeRequest.addListener(function (details) {
|
||||
const headerReferer = details.originUrl ? details.originUrl : details.initiator;
|
||||
if (!isSiteEnabled(details) && (!enabledSites.includes('generalpaywallbypass') || matchUrlDomain('japantimes.co.jp', headerReferer))) {
|
||||
return;
|
||||
}
|
||||
return { cancel: true };
|
||||
},
|
||||
{
|
||||
urls: [
|
||||
'*://*.newstatesman.com/*',
|
||||
'*://*.outbrain.com/*',
|
||||
'*://*.piano.io/*',
|
||||
'*://*.poool.fr/*',
|
||||
'*://*.qiota.com/*',
|
||||
'*://*.tinypass.com/*'
|
||||
],
|
||||
types: ['script']
|
||||
},
|
||||
['blocking']
|
||||
);
|
||||
|
||||
const extraInfoSpec = ['blocking', 'requestHeaders'];
|
||||
if (Object.prototype.hasOwnProperty.call(extensionApi.webRequest.OnBeforeSendHeadersOptions, 'EXTRA_HEADERS')) {
|
||||
extraInfoSpec.push('extraHeaders');
|
||||
}
|
||||
|
||||
extensionApi.webRequest.onBeforeSendHeaders.addListener(function (details) {
|
||||
let requestHeaders = details.requestHeaders;
|
||||
|
||||
let headerReferer = '';
|
||||
for (const n in requestHeaders) {
|
||||
if (requestHeaders[n].name.toLowerCase() === 'referer') {
|
||||
headerReferer = requestHeaders[n].value;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// check for blocked regular expression: domain enabled, match regex, block on an internal or external regex
|
||||
const blockedDomains = Object.keys(blockedRegexes);
|
||||
const domain = matchUrlDomain(blockedDomains, headerReferer);
|
||||
if (domain && details.url.match(blockedRegexes[domain]) && isSiteEnabled({ url: headerReferer })) {
|
||||
return { cancel: true };
|
||||
}
|
||||
|
||||
if (!isSiteEnabled(details) && !matchUrlDomain('cdn.ampproject.org', details.url)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const tabId = details.tabId;
|
||||
let useUserAgentMobile = false;
|
||||
let setReferer = false;
|
||||
|
||||
// if referer exists, set it to google
|
||||
requestHeaders = requestHeaders.map(function (requestHeader) {
|
||||
if (requestHeader.name === 'Referer') {
|
||||
if (details.url.includes('cooking.nytimes.com/api/v1/users/bootstrap')) {
|
||||
// this fixes images not being loaded on cooking.nytimes.com main page
|
||||
// referrer has to be *nytimes.com otherwise returns 403
|
||||
requestHeader.value = 'https://cooking.nytimes.com';
|
||||
} else if (matchUrlDomain('fd.nl', details.url)) {
|
||||
requestHeader.value = 'https://www.facebook.com/';
|
||||
} else if (matchUrlDomain('medium.com', details.url)) {
|
||||
requestHeader.value = 'https://t.co/x?amp=1';
|
||||
} else {
|
||||
requestHeader.value = 'https://www.google.com/';
|
||||
}
|
||||
setReferer = true;
|
||||
}
|
||||
if (requestHeader.name === 'User-Agent') {
|
||||
useUserAgentMobile = requestHeader.value.toLowerCase().includes('mobile');
|
||||
}
|
||||
|
||||
return requestHeader;
|
||||
});
|
||||
|
||||
// otherwise add it
|
||||
if (!setReferer) {
|
||||
if (matchUrlDomain('fd.nl', details.url)) {
|
||||
requestHeaders.push({
|
||||
name: 'Referer',
|
||||
value: 'https://www.facebook.com/'
|
||||
});
|
||||
} else if (matchUrlDomain('medium.com', details.url)) {
|
||||
requestHeaders.push({
|
||||
name: 'Referer',
|
||||
value: 'https://t.co/x?amp=1'
|
||||
});
|
||||
} else {
|
||||
requestHeaders.push({
|
||||
name: 'Referer',
|
||||
value: 'https://www.google.com/'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// override User-Agent to use Googlebot
|
||||
const useGoogleBot = _useGoogleBotSites.some(function (item) {
|
||||
return typeof item === 'string' && matchUrlDomain(item, details.url);
|
||||
});
|
||||
|
||||
if (useGoogleBot) {
|
||||
requestHeaders.push({
|
||||
name: 'User-Agent',
|
||||
value: useUserAgentMobile ? userAgentMobile : userAgentDesktop
|
||||
});
|
||||
requestHeaders.push({
|
||||
name: 'X-Forwarded-For',
|
||||
value: '66.249.66.1'
|
||||
});
|
||||
}
|
||||
|
||||
// override User-Agent to use Bingbot
|
||||
if (matchUrlDomain(useBingBot, details.url)) {
|
||||
requestHeaders.push({
|
||||
name: 'User-Agent',
|
||||
value: useUserAgentMobile ? userAgentMobileBingBot : userAgentDesktopBingBot
|
||||
});
|
||||
}
|
||||
|
||||
// remove cookies before page load
|
||||
const enabledCookies = allowCookies.some(function (site) {
|
||||
return matchUrlDomain(site, details.url);
|
||||
});
|
||||
if (!enabledCookies) {
|
||||
requestHeaders = requestHeaders.map(function (requestHeader) {
|
||||
if (requestHeader.name === 'Cookie') {
|
||||
requestHeader.value = '';
|
||||
}
|
||||
return requestHeader;
|
||||
});
|
||||
}
|
||||
|
||||
if (tabId !== -1) {
|
||||
extensionApi.tabs.get(tabId, function (currentTab) {
|
||||
// Validate url of current tab to avoid injecting script to unrelated sites
|
||||
if (currentTab && currentTab.url && isSiteEnabled(currentTab)) {
|
||||
// run contentScript inside tab
|
||||
extensionApi.tabs.executeScript(tabId, {
|
||||
file: 'src/js/contentScript.js',
|
||||
runAt: 'document_start'
|
||||
}, function (res) {
|
||||
if (extensionApi.runtime.lastError || res[0]) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return { requestHeaders: requestHeaders };
|
||||
}, {
|
||||
urls: ['<all_urls>']
|
||||
}, extraInfoSpec);
|
||||
|
||||
// remove cookies after page load
|
||||
extensionApi.webRequest.onCompleted.addListener(function (details) {
|
||||
let domainToRemove;
|
||||
for (const domain of _removeCookies) {
|
||||
if (enabledSites.includes(domain) && matchUrlDomain(domain, details.url)) {
|
||||
domainToRemove = domain;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (domainToRemove) {
|
||||
extensionApi.cookies.getAll({ domain: domainToRemove }, function (cookies) {
|
||||
for (const ck of cookies) {
|
||||
const cookie = {
|
||||
url: (ck.secure ? 'https://' : 'http://') + ck.domain + ck.path,
|
||||
name: ck.name,
|
||||
storeId: ck.storeId
|
||||
};
|
||||
// .firstPartyDomain = undefined on Chrome (doesn't support it)
|
||||
if (ck.firstPartyDomain !== undefined) {
|
||||
cookie.firstPartyDomain = ck.firstPartyDomain;
|
||||
}
|
||||
const cookieDomain = ck.domain;
|
||||
const rcDomain = cookieDomain.replace(/^(\.?www\.|\.)/, '');
|
||||
// hold specific cookie(s) from removeCookies domains
|
||||
if ((rcDomain in removeCookiesSelectHold) && removeCookiesSelectHold[rcDomain].includes(ck.name)) {
|
||||
continue; // don't remove specific cookie
|
||||
}
|
||||
// drop only specific cookie(s) from removeCookies domains
|
||||
if ((rcDomain in removeCookiesSelectDrop) && !(removeCookiesSelectDrop[rcDomain].includes(ck.name))) {
|
||||
continue; // only remove specific cookie
|
||||
}
|
||||
extensionApi.cookies.remove(cookie);
|
||||
}
|
||||
});
|
||||
}
|
||||
}, {
|
||||
urls: ['<all_urls>']
|
||||
});
|
||||
|
||||
// Google Analytics to anonymously track DAU (Chrome only)
|
||||
function initGA () {
|
||||
(function (i, s, o, g, r, a, m) {
|
||||
i.GoogleAnalyticsObject = r;
|
||||
i[r] = i[r] || function () {
|
||||
(i[r].q = i[r].q || []).push(arguments);
|
||||
}, i[r].l = 1 * new Date();
|
||||
a = s.createElement(o), m = s.getElementsByTagName(o)[0];
|
||||
a.async = 1;
|
||||
a.src = g;
|
||||
m.parentNode.insertBefore(a, m);
|
||||
})(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga');
|
||||
ga('create', 'UA-69824169-2', 'auto');
|
||||
ga('set', 'checkProtocolTask', null);
|
||||
ga('set', 'anonymizeIp', true);
|
||||
ga('send', 'pageview');
|
||||
}
|
||||
|
||||
function isSiteEnabled (details) {
|
||||
const enabledSite = matchUrlDomain(enabledSites, details.url);
|
||||
if (enabledSite in restrictions) {
|
||||
return restrictions[enabledSite].test(details.url);
|
||||
}
|
||||
return !!enabledSite;
|
||||
}
|
||||
|
||||
function matchUrlDomain (domains, url) {
|
||||
return matchDomain(domains, urlHost(url));
|
||||
}
|
||||
|
||||
function matchDomain (domains, hostname) {
|
||||
let matchedDomain = false;
|
||||
if (!hostname) { hostname = window.location.hostname; }
|
||||
if (typeof domains === 'string') { domains = [domains]; }
|
||||
domains.some(domain => (hostname === domain || hostname.endsWith('.' + domain)) && (matchedDomain = domain));
|
||||
return matchedDomain;
|
||||
}
|
||||
|
||||
function urlHost (url) {
|
||||
if (url && url.startsWith('http')) {
|
||||
try {
|
||||
return new URL(url).hostname;
|
||||
} catch (e) {
|
||||
console.log(`url not valid: ${url} error: ${e}`);
|
||||
}
|
||||
}
|
||||
return url;
|
||||
}
|
||||
8
bypass-paywalls-chrome-master/src/js/common.js
Normal file
8
bypass-paywalls-chrome-master/src/js/common.js
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
const extensionApi =
|
||||
(typeof browser === 'object' &&
|
||||
typeof browser.runtime === 'object' &&
|
||||
typeof browser.runtime.getManifest === 'function') ? browser
|
||||
: (typeof chrome === 'object' &&
|
||||
typeof chrome.runtime === 'object' &&
|
||||
typeof chrome.runtime.getManifest === 'function') ? chrome
|
||||
: console.log('Cannot find extensionApi under namespace "browser" or "chrome"');
|
||||
786
bypass-paywalls-chrome-master/src/js/contentScript.js
Executable file
786
bypass-paywalls-chrome-master/src/js/contentScript.js
Executable file
|
|
@ -0,0 +1,786 @@
|
|||
if (!matchDomain(['seekingalpha.com', 'sfchronicle.com', 'cen.acs.org', 'elmundo.es', 'scmp.com'])) {
|
||||
window.localStorage.clear();
|
||||
}
|
||||
|
||||
if (matchDomain('elmercurio.com')) {
|
||||
if (window.location.href.toLowerCase().includes('/inversiones/')) {
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const paywall = document.querySelector('#modal_limit_articulos');
|
||||
const body = document.querySelector('body');
|
||||
removeDOMElement(paywall);
|
||||
if (body.hasAttribute('class')) { body.removeAttribute('class'); }
|
||||
});
|
||||
}
|
||||
} else if (matchDomain('estadao.com.br')) {
|
||||
setTimeout(function () {
|
||||
const paywall = document.querySelector('#paywall-wrapper-iframe-estadao');
|
||||
const body = document.querySelector('html');
|
||||
|
||||
removeDOMElement(paywall);
|
||||
body.removeAttribute('style');
|
||||
}, 300); // Delay (in milliseconds)
|
||||
} else if (matchDomain('rep.repubblica.it')) {
|
||||
window.setTimeout(function () {
|
||||
if (window.location.href.includes('/pwa/')) {
|
||||
window.location.href = window.location.href.replace('/pwa/', '/ws/detail/');
|
||||
}
|
||||
}, 500);
|
||||
if (window.location.href.includes('/ws/detail/')) {
|
||||
const paywall = document.querySelector('.paywall');
|
||||
if (paywall) {
|
||||
ampUnhideSubscriptionsSection();
|
||||
}
|
||||
}
|
||||
} else if (matchDomain('americanbanker.com')) {
|
||||
const inlineGate = document.querySelector('.inline-gate');
|
||||
if (inlineGate) {
|
||||
inlineGate.classList.remove('inline-gate');
|
||||
const inlineGated = document.querySelectorAll('.inline-gated');
|
||||
for (const elem of inlineGated) { elem.classList.remove('inline-gated'); }
|
||||
}
|
||||
} else if (matchDomain('telegraaf.nl')) {
|
||||
if (window.location.href.startsWith('https://www.telegraaf.nl/error?ref=/')) {
|
||||
window.location.href = window.location.href.split('&')[0].replace('error?ref=/', '');
|
||||
}
|
||||
const articleWrapper = document.querySelector('.ArticlePageWrapper__uid');
|
||||
const spotXBanner = document.querySelector('.ArticleBodyBlocks__inlineArticleSpotXBanner');
|
||||
const paywall = document.querySelector('.PopupBackdrop__block');
|
||||
removeDOMElement(spotXBanner, paywall);
|
||||
const premium = document.querySelector('.PremiumLabelWithLine__body');
|
||||
const articleId = articleWrapper ? articleWrapper.innerText : '123';
|
||||
const articleBodyDone = document.querySelector('#articleBody' + articleId);
|
||||
if (premium && !articleBodyDone) {
|
||||
const articleBodyOld = document.querySelector('[id^=articleBody]');
|
||||
removeDOMElement(articleBodyOld);
|
||||
const json = document.querySelector('script[type="application/ld+json"][data-react-helmet="true"]');
|
||||
if (json) {
|
||||
const jsonText = JSON.parse(json.text).articleBody;
|
||||
const articleBody = document.querySelector('section.TextArticlePage__bodyText');
|
||||
if (articleBody) {
|
||||
const divMain = document.createElement('div');
|
||||
divMain.setAttribute('id', 'articleBody' + articleId);
|
||||
const divElem = document.createElement('div');
|
||||
divElem.setAttribute('data-element', 'articleBodyBlocks');
|
||||
const textArray = jsonText.split('\n\n');
|
||||
textArray.forEach(pText => {
|
||||
const pDiv = document.createElement('p');
|
||||
pDiv.setAttribute('class', 'ArticleBodyBlocks__paragraph ArticleBodyBlocks__paragraph--nieuws');
|
||||
pDiv.innerText = pText;
|
||||
divElem.appendChild(pDiv);
|
||||
});
|
||||
divMain.appendChild(divElem);
|
||||
articleBody.appendChild(divMain);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (matchDomain(['ad.nl', 'ed.nl', 'bndestem.nl', 'bd.nl', 'tubantia.nl', 'destentor.nl', 'pzc.nl', 'gelderlander.nl'])) {
|
||||
const paywall = document.querySelector('.article__component.article__component--paywall-module-notification');
|
||||
removeDOMElement(paywall);
|
||||
} else if (matchDomain('washingtonpost.com')) {
|
||||
const leaderboard = document.querySelector('#leaderboard-wrapper');
|
||||
const adverts = document.querySelectorAll('div[data-qa="article-body-ad"]');
|
||||
const softwall = document.querySelector('[id^="softwall"]');
|
||||
removeDOMElement(leaderboard, softwall, ...adverts);
|
||||
if (window.location.href.includes('/gdpr-consent/')) {
|
||||
const freeButton = document.querySelector('.gdpr-consent-container .continue-btn.button.free');
|
||||
if (freeButton) { freeButton.click(); }
|
||||
window.setTimeout(function () {
|
||||
const gdprcheckbox = document.querySelector('.gdpr-consent-container .consent-page:not(.hide) #agree');
|
||||
if (gdprcheckbox) {
|
||||
gdprcheckbox.checked = true;
|
||||
gdprcheckbox.dispatchEvent(new Event('change'));
|
||||
document.querySelector('.gdpr-consent-container .consent-page:not(.hide) .continue-btn.button.accept-consent').click();
|
||||
}
|
||||
}, 300); // Delay (in milliseconds)
|
||||
} else {
|
||||
const url = window.location.href;
|
||||
function main (element) {
|
||||
removeDOMElement(element);
|
||||
window.location.href = url.split('?')[0] + '?outputType=amp';
|
||||
}
|
||||
if (!url.includes('outputType=amp')) {
|
||||
waitDOMElement('div[id^="paywall-"]', 'DIV', main, false);
|
||||
} else {
|
||||
const subscriptionsSections = document.querySelectorAll('[subscriptions-section="content"]');
|
||||
for (const subscriptionsSection of subscriptionsSections) { subscriptionsSection.removeAttribute('subscriptions-section'); }
|
||||
}
|
||||
}
|
||||
} else if (matchDomain('wsj.com') && !matchDomain('cn.wsj.com')) {
|
||||
if (window.location.href.includes('/articles/')) {
|
||||
const closeButton = document.querySelector('div.close-btn[role="button"]');
|
||||
if (closeButton) { closeButton.click(); }
|
||||
}
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const url = window.location.href;
|
||||
const snippet = document.querySelector('.snippet-promotion');
|
||||
const wsjPro = document.querySelector('meta[name="page.site"][content="wsjpro"]');
|
||||
if (snippet || wsjPro) {
|
||||
if (!window.location.hash) {
|
||||
if (url.includes('?')) {
|
||||
window.location.href = url.replace('?', '#refreshed?');
|
||||
} else { window.location.href = url + '#refreshed'; }
|
||||
} else { window.location.href = window.location.href.replace('wsj.com', 'wsj.com/amp').replace('#refreshed', ''); }
|
||||
}
|
||||
});
|
||||
} else if (matchDomain('sloanreview.mit.edu')) {
|
||||
const readMore = document.querySelector('.btn-read-more');
|
||||
if (readMore) {
|
||||
readMore.click();
|
||||
}
|
||||
} else if (matchDomain('mexiconewsdaily.com')) {
|
||||
window.setTimeout(function () {
|
||||
const popup = document.querySelector('div.pigeon-widget-prompt');
|
||||
const cproOverlay = document.querySelector('.cpro-overlay');
|
||||
removeDOMElement(popup, cproOverlay);
|
||||
}, 500); // Delay (in milliseconds)
|
||||
} else if (matchDomain('the-american-interest.com')) {
|
||||
const counter = document.getElementById('article-counter');
|
||||
removeDOMElement(counter);
|
||||
} else if (matchDomain('nzherald.co.nz')) {
|
||||
const articleContent = document.querySelector('.article__content');
|
||||
if (articleContent) {
|
||||
const articleOffer = document.querySelector('.article-offer');
|
||||
if (articleOffer) {
|
||||
const cssSelector = articleContent.querySelectorAll('p')[5].getAttribute('class');
|
||||
const hiddenNotPars = articleContent.querySelectorAll('.' + cssSelector + ':not(p)');
|
||||
for (const hiddenNotPar of hiddenNotPars) {
|
||||
hiddenNotPar.classList.remove(cssSelector);
|
||||
hiddenNotPar.removeAttribute('style');
|
||||
}
|
||||
const hiddenPars = articleContent.querySelectorAll('p.' + cssSelector);
|
||||
const parser = new DOMParser();
|
||||
for (const hiddenPar of hiddenPars) {
|
||||
const parHtml = parser.parseFromString('<div style="margin: 10px 0px; font-size: 17px">' + hiddenPar.innerHTML + '</div>', 'text/html');
|
||||
const parDom = parHtml.querySelector('div');
|
||||
articleContent.insertBefore(parDom, hiddenPar);
|
||||
}
|
||||
const firstSpan = document.querySelector('p > span');
|
||||
if (firstSpan) { firstSpan.removeAttribute('class'); }
|
||||
removeDOMElement(articleOffer);
|
||||
}
|
||||
}
|
||||
const premiumToaster = document.querySelector('#premium-toaster');
|
||||
removeDOMElement(premiumToaster);
|
||||
} else if (matchDomain('interest.co.nz')) {
|
||||
const wrapper = document.getElementById('pp-ablock-banner-wrapper');
|
||||
const overlay = document.querySelector('.black-overlay');
|
||||
removeDOMElement(overlay, wrapper);
|
||||
} else if (matchDomain('stuff.co.nz')) {
|
||||
const overlay = document.querySelector('.x0');
|
||||
removeDOMElement(overlay);
|
||||
} else if (matchDomain('thenational.scot')) {
|
||||
const overlay = document.querySelector('.template-container');
|
||||
removeDOMElement(overlay);
|
||||
} else if (matchDomain('thestar.com')) {
|
||||
setTimeout(function () {
|
||||
const paywall = document.querySelector('.basic-paywall-new');
|
||||
removeDOMElement(paywall);
|
||||
const tbc = document.querySelectorAll('.text-block-container');
|
||||
for (const el of tbc) {
|
||||
el.removeAttribute('style');
|
||||
}
|
||||
}, 1000); // Delay (in milliseconds)
|
||||
} else if (matchDomain('afr.com')) {
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const hiddenImage = document.querySelectorAll('img');
|
||||
for (const image of hiddenImage) {
|
||||
const src = image.src;
|
||||
if ('src: ' + src.indexOf('.gif') !== -1) {
|
||||
const dataSrc = image.getAttribute('data-src');
|
||||
if (dataSrc) {
|
||||
image.setAttribute('src', dataSrc);
|
||||
}
|
||||
}
|
||||
}
|
||||
const plista = document.querySelector('div[data-plista-placement="underArticle_Group"]');
|
||||
removeDOMElement(plista);
|
||||
});
|
||||
} else if (matchDomain(['parool.nl', 'trouw.nl', 'volkskrant.nl', 'demorgen.be', 'humo.be'])) {
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const topBanner = document.querySelector('div[data-temptation-position="PAGE_TOP"]');
|
||||
const paywall = document.querySelector('div[data-temptation-position="ARTICLE_BOTTOM"]');
|
||||
const hiddenSection = document.querySelector('div[data-temptation-position="ARTICLE_INLINE"]');
|
||||
const overlay = document.querySelector('div[data-temptation-position="PAGE_BOTTOM"]');
|
||||
removeDOMElement(topBanner, paywall, hiddenSection, overlay);
|
||||
});
|
||||
} else if (matchDomain('firstthings.com')) {
|
||||
const paywall = document.getElementsByClassName('paywall')[0];
|
||||
removeDOMElement(paywall);
|
||||
} else if (matchDomain('bloomberg.com')) {
|
||||
blockElement('#graphics-paywall-overlay', true);
|
||||
} else if (matchDomain('bloombergquint.com')) {
|
||||
const articlesLeftModal = document.getElementsByClassName('paywall-meter-module__story-paywall-container__1UgCE')[0];
|
||||
const paywall = document.getElementById('paywallDmp');
|
||||
removeDOMElement(articlesLeftModal, paywall);
|
||||
} else if (matchDomain('medium.com') || document.querySelector('script[src^="https://cdn-client.medium.com/"]')) {
|
||||
const paywall = document.querySelector('div#paywall-background-color');
|
||||
removeDOMElement(paywall);
|
||||
if (paywall) {
|
||||
extensionApi.runtime.sendMessage({ request: 'refreshCurrentTab' });
|
||||
}
|
||||
window.setTimeout(function () {
|
||||
const meter = document.querySelector('[id*="highlight-meter-"]');
|
||||
if (meter) {
|
||||
meter.hidden = true;
|
||||
}
|
||||
}, 500); // Delay (in milliseconds)
|
||||
} else if (matchDomain('theglobeandmail.com')) {
|
||||
const articleBodySubscribed = document.querySelector('.c-article-body--subscribed');
|
||||
if (articleBodySubscribed) {
|
||||
articleBodySubscribed.removeAttribute('class');
|
||||
}
|
||||
} else if (matchDomain(['examiner.com.au', 'thecourier.com.au', 'theadvocate.com.au'])) {
|
||||
const subscribeTruncate = document.querySelector('.subscribe-truncate');
|
||||
if (subscribeTruncate) { subscribeTruncate.classList.remove('subscribe-truncate'); }
|
||||
const subscriberHider = document.querySelectorAll('.subscriber-hider');
|
||||
for (const el of subscriberHider) {
|
||||
el.classList.remove('subscriber-hider');
|
||||
}
|
||||
} else if (matchDomain('canberratimes.com.au')) {
|
||||
const paywall = document.querySelector('.subscribe-article.news-article-body.article__body');
|
||||
paywall.classList.remove('subscribe-article');
|
||||
const subscribe = document.getElementsByClassName('subscriber-container')[0];
|
||||
removeDOMElement(subscribe);
|
||||
const content = document.getElementsByClassName('subscriber-hider');
|
||||
for (const el of content) {
|
||||
el.classList.remove('subscriber-hider');
|
||||
}
|
||||
} else if (matchDomain('ledevoir.com')) {
|
||||
const counter = document.querySelector('.full.hidden-print.popup-msg');
|
||||
removeDOMElement(counter);
|
||||
} else if (matchDomain('ft.com')) {
|
||||
const cookieBanner = document.querySelector('.o-banner__outer');
|
||||
const ribbon = document.querySelector('.js-article-ribbon');
|
||||
const ads = document.querySelector('.o-ads');
|
||||
removeDOMElement(cookieBanner, ads, ribbon);
|
||||
} else if (matchDomain('thehindu.com')) {
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const counter = document.querySelector('#test');
|
||||
const coBanner = document.querySelector('.co-banner');
|
||||
const support = document.querySelector('div.support-jlm');
|
||||
removeDOMElement(counter, coBanner, support);
|
||||
});
|
||||
} else if (matchDomain('nytimes.com')) {
|
||||
const banners = document.querySelectorAll('div[data-testid="inline-message"], div[id^="ad-"], div.expanded-dock');
|
||||
removeDOMElement(...banners);
|
||||
} else if (matchDomain('technologyreview.com')) {
|
||||
window.setTimeout(function () {
|
||||
const bodyObscured = document.querySelector('body[class*="body__obscureContent"]');
|
||||
if (bodyObscured) { removeClassesByPrefix(bodyObscured, 'body__obscureContent'); }
|
||||
const overlay = document.querySelector('div[class*="overlayFooter__wrapper"]');
|
||||
if (overlay) { overlay.setAttribute('style', 'display:none'); }
|
||||
const contentBodyHidden = document.querySelector('div[class*="contentBody__contentHidden"]');
|
||||
if (contentBodyHidden) { removeClassesByPrefix(contentBodyHidden, 'contentBody__contentHidden'); }
|
||||
const contentBodyOverlay = document.querySelector('div[class*="contentBody__overlay"]');
|
||||
if (contentBodyOverlay) { contentBodyOverlay.removeAttribute('class'); }
|
||||
}, 500);
|
||||
} else if (matchDomain('leparisien.fr')) {
|
||||
window.removeEventListener('scroll', this.scrollListener);
|
||||
const paywall = document.querySelector('.relative.piano-paywall.below_nav.sticky');
|
||||
removeDOMElement(paywall);
|
||||
setTimeout(function () {
|
||||
const content = document.getElementsByClassName('content');
|
||||
for (const el of content) {
|
||||
el.removeAttribute('style');
|
||||
}
|
||||
}, 300); // Delay (in milliseconds)
|
||||
} else if (matchDomain('caixinglobal.com')) {
|
||||
const payTips = document.querySelectorAll('.cons-pay-tip');
|
||||
for (const payTip of payTips) {
|
||||
payTip.removeAttribute('style');
|
||||
}
|
||||
const appContent = document.getElementById('appContent');
|
||||
if (appContent) {
|
||||
const pHidden = document.querySelectorAll('p:not([style="display:block;"]');
|
||||
for (const el of pHidden) {
|
||||
el.setAttribute('style', 'display:block;');
|
||||
}
|
||||
}
|
||||
} else if (matchDomain('bizjournals.com')) {
|
||||
const sheetOverlay = document.querySelector('.sheet-overlay');
|
||||
const chunkPaywall = document.querySelector('.chunk--paywall');
|
||||
removeDOMElement(sheetOverlay, chunkPaywall);
|
||||
const overlaid = document.querySelectorAll('.is-overlaid');
|
||||
for (const el of overlaid) {
|
||||
el.classList.remove('is-overlaid');
|
||||
}
|
||||
const bodyHidden = document.querySelector('.js-pre-chunks__story-body');
|
||||
bodyHidden.removeAttribute('style');
|
||||
} else if (matchDomain('the-tls.co.uk')) {
|
||||
const paywall = document.querySelector('.tls-subscriptions-banner__closed-skin');
|
||||
removeDOMElement(paywall);
|
||||
} else if (matchDomain('cen.acs.org')) {
|
||||
const paywall = document.querySelector('.meteredBar');
|
||||
removeDOMElement(paywall);
|
||||
} else if (matchDomain('elperiodico.com')) {
|
||||
setTimeout(function () {
|
||||
const unavailableArea = document.querySelector('.closed');
|
||||
const infoBox = document.querySelector('.ep-masPeriodico-info');
|
||||
if (unavailableArea) {
|
||||
unavailableArea.classList.remove('closed');
|
||||
}
|
||||
if (infoBox) {
|
||||
infoBox.parentNode.removeChild(infoBox);
|
||||
}
|
||||
}, 1000);
|
||||
} else if (matchDomain('techinasia.com')) {
|
||||
const paywall = document.querySelector('.paywall-content');
|
||||
if (paywall) {
|
||||
paywall.classList.remove('paywall-content');
|
||||
}
|
||||
const splashSubscribe = document.querySelector('.splash-subscribe');
|
||||
const paywallHard = document.querySelector('.paywall-hard');
|
||||
removeDOMElement(splashSubscribe, paywallHard);
|
||||
} else if (matchDomain('thewrap.com')) {
|
||||
const embed = document.querySelector('.embed');
|
||||
if (embed) {
|
||||
// Display feature video
|
||||
const container = document.querySelector('.featured-image-container');
|
||||
removeDOMElement(container);
|
||||
embed.classList.remove('d-none');
|
||||
}
|
||||
} else if (matchDomain('hbr.org')) {
|
||||
const banner = document.querySelector('.persistent-banner');
|
||||
removeDOMElement(banner);
|
||||
} else if (matchDomain('spectator.co.uk')) {
|
||||
const banner = document.querySelector('#subscribe-ribbon');
|
||||
removeDOMElement(banner);
|
||||
} else if (matchDomain('barrons.com')) {
|
||||
const url = window.location.href;
|
||||
if (!url.includes('barrons.com/amp/')) {
|
||||
const bodyContinuous = document.querySelector('body.is-continuous');
|
||||
const snippet = document.querySelector('meta[content="snippet"]');
|
||||
if (bodyContinuous && snippet) {
|
||||
removeDOMElement(snippet);
|
||||
window.location.href = url.replace('barrons.com', 'barrons.com/amp');
|
||||
}
|
||||
const signinLinks = document.querySelectorAll('a.primary-button--link[href*="target="]');
|
||||
for (const signinLink of signinLinks) {
|
||||
signinLink.href = decodeURIComponent(signinLink.href.split('target=')[1]).split('?')[0];
|
||||
signinLink.text = 'Click';
|
||||
}
|
||||
const barronsAds = document.querySelectorAll('.barrons-body-ad-placement');
|
||||
removeDOMElement(...barronsAds);
|
||||
} else {
|
||||
const preview = document.querySelector('section[subscriptions-section="content-not-granted"]');
|
||||
removeDOMElement(preview);
|
||||
const subscrSection = document.querySelector('section[subscriptions-section="content"]');
|
||||
if (subscrSection) {
|
||||
subscrSection.removeAttribute('subscriptions-section');
|
||||
}
|
||||
}
|
||||
removeDOMElement(document.querySelector('.login-section-container'));
|
||||
} else if (matchDomain('nzz.ch')) {
|
||||
const paywall = document.querySelector('.dynamic-regwall');
|
||||
removeDOMElement(paywall);
|
||||
} else if (matchDomain('irishtimes.com')) {
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const stubArticleMsg = document.querySelector('div.stub-article-msg');
|
||||
const url = window.location.href;
|
||||
if (url.includes('mode=sample') || stubArticleMsg) { window.location.href = new URL(url).pathname + '?mode=amp'; }
|
||||
});
|
||||
} else if (matchDomain('thesaturdaypaper.com.au')) {
|
||||
const paywall = document.querySelector('div.paywall-hard-always-show');
|
||||
removeDOMElement(paywall);
|
||||
} else if (matchDomain('lesechos.fr') && window.location.href.match(/-\d{6,}/)) {
|
||||
window.setTimeout(function () {
|
||||
const aboBanner = document.querySelector('[class^="pgxf3b"]');
|
||||
const adBlocks = document.querySelectorAll('[class*="jzxvkd"');
|
||||
for (const adBlock of adBlocks) { adBlock.setAttribute('style', 'display:none'); }
|
||||
if (aboBanner) {
|
||||
removeDOMElement(aboBanner);
|
||||
const url = window.location.href;
|
||||
const html = document.documentElement.outerHTML;
|
||||
let state;
|
||||
const split1 = html.split('window.__PRELOADED_STATE__=')[1];
|
||||
const split2 = split1.split('</script>')[0].trim();
|
||||
if (split2.includes('; window.__DATA__=')) { state = split2.split('; window.__DATA__=')[0].trim(); } else { state = split2.substr(0, split2.length - 1); }
|
||||
try {
|
||||
const data = JSON.parse(state);
|
||||
const article = data.article.data.stripes[0].mainContent[0].data.description;
|
||||
const urlLoaded = data.article.data.path;
|
||||
if (!url.includes(urlLoaded)) { window.location.reload(true); }
|
||||
const paywallNode = document.querySelector('.post-paywall');
|
||||
if (paywallNode) {
|
||||
const contentNode = document.createElement('div');
|
||||
const parser = new DOMParser();
|
||||
const articleHtml = parser.parseFromString('<div>' + article + '</div>', 'text/html');
|
||||
const articlePar = articleHtml.querySelector('div');
|
||||
if (articlePar) {
|
||||
contentNode.appendChild(articlePar);
|
||||
contentNode.className = paywallNode.className;
|
||||
paywallNode.parentNode.insertBefore(contentNode, paywallNode);
|
||||
removeDOMElement(paywallNode);
|
||||
const paywallLastChildNode = document.querySelector('.post-paywall > :last-child');
|
||||
if (paywallLastChildNode) {
|
||||
paywallLastChildNode.setAttribute('style', 'height: auto !important; overflow: hidden !important; max-height: none !important;');
|
||||
}
|
||||
}
|
||||
}
|
||||
const styleElem = document.head.appendChild(document.createElement('style'));
|
||||
styleElem.innerHTML = '.post-paywall::after {height: auto !important;}';
|
||||
} catch (err) {
|
||||
window.location.reload(true);
|
||||
}
|
||||
}
|
||||
}, 500); // Delay (in milliseconds)
|
||||
} else if (matchDomain('startribune.com')) {
|
||||
// remove active class from all elements
|
||||
document.querySelectorAll('div.ReactModalPortal').forEach(function (el) {
|
||||
removeDOMElement(el);
|
||||
});
|
||||
// Enable Scroll. Reveal Hiddlen Paragraph
|
||||
document.getElementsByTagName('body')[0].removeAttribute('class');
|
||||
} else if (matchDomain('seattletimes.com')) {
|
||||
window.setTimeout(function () {
|
||||
// remove modal class from all elements
|
||||
document.querySelectorAll('div.modal').forEach(function (el) {
|
||||
removeDOMElement(el);
|
||||
});
|
||||
// Remove Blurred Style from all matching Divs
|
||||
document.getElementById('container').removeAttribute('style');
|
||||
document.querySelectorAll('div[style~="filter"]').forEach(function (el) {
|
||||
el.removeAttribute('style');
|
||||
});
|
||||
document
|
||||
.querySelectorAll('div[class~="NewsletterSignupSplash"]')
|
||||
.forEach(function (el) {
|
||||
el.removeAttribute('class');
|
||||
});
|
||||
}, 1000); // Delay (in milliseconds)
|
||||
} else if (matchDomain('theatlantic.com')) {
|
||||
// Remove all nudge elements
|
||||
document.querySelectorAll('div[class*="c-nudge"]').forEach(function (el) {
|
||||
removeDOMElement(el);
|
||||
});
|
||||
// Remove all FancyBox ads
|
||||
document.querySelectorAll('div[class*="fancybox"]').forEach(function (el) {
|
||||
removeDOMElement(el);
|
||||
});
|
||||
} else if (matchDomain('theathletic.com')) {
|
||||
if (!window.location.search.match(/(\?|&)amp/)) {
|
||||
const paywall = document.querySelector('div#slideup-paywall');
|
||||
if (paywall) {
|
||||
const overlays = document.querySelectorAll('div[id*="overlay"], div:empty:not([data-rjs])');
|
||||
removeDOMElement(paywall, ...overlays);
|
||||
const body = document.querySelector('body');
|
||||
if (body) {
|
||||
body.style.overflow = 'visible';
|
||||
body.style.position = 'relative';
|
||||
}
|
||||
} else {
|
||||
const headlinePaywall = document.querySelectorAll('a.headline-paywall');
|
||||
const amphtml = document.querySelector('link[rel="amphtml"]');
|
||||
if (headlinePaywall.length && amphtml) {
|
||||
removeDOMElement(...headlinePaywall);
|
||||
window.setTimeout(function () {
|
||||
window.location.href = amphtml.href;
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ampUnhideSubscriptionsSection();
|
||||
}
|
||||
const apron = document.querySelector('div#free-apron-cta, div.slideup-free-apron-container');
|
||||
removeDOMElement(apron);
|
||||
} else if (matchDomain('newyorker.com')) {
|
||||
blockElement('.paywall-bar', true);
|
||||
blockElement('.paywall-modal');
|
||||
} else if (matchDomain('vanityfair.com')) {
|
||||
const paywall = document.querySelector('.paywall-bar');
|
||||
removeDOMElement(paywall);
|
||||
} else if (matchDomain(['postimees.ee', 'elu24.ee'])) {
|
||||
setTimeout(function () {
|
||||
// Remove 'adblocker-detected' footer notification
|
||||
const adblockNotif = document.querySelector('.ad-block-notification-overlay');
|
||||
removeDOMElement(adblockNotif);
|
||||
document.body.removeAttribute('style');
|
||||
}, 800); // Delay (in milliseconds)
|
||||
} else if (matchDomain('theolivepress.es')) {
|
||||
const modalBackdrop = document.querySelector('.modal-backdrop');
|
||||
const paywall = document.querySelector('.ev-open-modal-paywall-REQUIRE_LOGIN_WITH_ENTITLEMENT');
|
||||
removeDOMElement(modalBackdrop, paywall);
|
||||
|
||||
for (const clazz of ['ev-modals', 'modal-open']) {
|
||||
document.body.classList.remove(clazz);
|
||||
}
|
||||
} else if (matchDomain('themarker.com')) {
|
||||
setTimeout(function () {
|
||||
const paywall = document.querySelector('[data-test="bottomStrip"]');
|
||||
const notifications = document.querySelector('#pwSubscribePopup');
|
||||
const banner = document.querySelector('#themarker\\.com\\.billboard\\.desktop');
|
||||
const newsBanner = document.querySelector('#themarker\\.com\\.news\\.banner');
|
||||
const midBanner = document.querySelector('#themarker\\.com.headline\\.banner\\.desktop');
|
||||
const financeBanner = document.querySelector('#themarker\\.com\\.finance\\.banner');
|
||||
const topStrip = document.querySelector('[data-test="topStrip"]');
|
||||
const otherBanners = Array.from(document.querySelectorAll('[data-audtarget]'));
|
||||
removeDOMElement(paywall, notifications, banner, topStrip, midBanner, newsBanner, financeBanner, ...otherBanners);
|
||||
}, 500);
|
||||
} else if (matchDomain('haaretz.co.il')) {
|
||||
setTimeout(function () {
|
||||
const notifications = document.querySelector('#pwSubscribePopup');
|
||||
const paywall = document.querySelector('[data-test="bottomStrip"]');
|
||||
const banner = document.querySelector('#haaretz\\.co\\.il\\.billboard\\.desktop');
|
||||
const editorsBanner = document.querySelector('#haaretz\\.co\\.il\\.editors\\.banner');
|
||||
const headlinesBanner = document.querySelector('#haaretz\\.co\\.il\\.headline\\.box\\.desktop');
|
||||
const topStrip = document.querySelector('[data-test="topStrip"]');
|
||||
const otherBanners = Array.from(document.querySelectorAll('[data-audtarget]'));
|
||||
removeDOMElement(paywall, notifications, banner, editorsBanner, topStrip, headlinesBanner, ...otherBanners);
|
||||
}, 500);
|
||||
} else if (matchDomain('sueddeutsche.de')) {
|
||||
const url = window.location.href;
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const offerPage = document.querySelector('div.offer-page');
|
||||
if (url.startsWith('https://www.sueddeutsche.de') && (url.includes('reduced=true') || offerPage)) { window.location.href = url.split('?')[0].replace('www.', 'amphtml.'); } else if (url.startsWith('https://sz-magazin.sueddeutsche.de')) {
|
||||
if (url.includes('reduced=true') || offerPage) { window.location.href = new URL(url).pathname + '!amp'; }
|
||||
}
|
||||
});
|
||||
window.setTimeout(function () {
|
||||
if (url.includes('!amp')) {
|
||||
const paragraphReduced = document.querySelector('.paragraph--reduced');
|
||||
if (paragraphReduced) { paragraphReduced.classList.remove('paragraph--reduced'); }
|
||||
const paragraphHidden = document.querySelectorAll('.paragraph--hidden');
|
||||
for (const parHidden of paragraphHidden) { parHidden.classList.remove('paragraph--hidden'); }
|
||||
const paragraphDynamic = document.querySelector('.paragraph--dynamic');
|
||||
if (paragraphDynamic) { paragraphDynamic.classList.remove('paragraph--dynamic'); }
|
||||
const ampOfferpage = document.querySelector('.amp-offerpage');
|
||||
removeDOMElement(ampOfferpage);
|
||||
}
|
||||
}, 500); // Delay (in milliseconds)
|
||||
} else if (matchDomain('adweek.com')) {
|
||||
const bodySingle = document.querySelector('body.single');
|
||||
const ampHtml = document.querySelector('link[rel="amphtml"]');
|
||||
if (bodySingle && ampHtml) {
|
||||
bodySingle.classList.remove('single');
|
||||
window.location.href = ampHtml.href;
|
||||
}
|
||||
} else if (matchDomain('gelocal.it')) {
|
||||
if (!window.location.href.includes('/amp/')) {
|
||||
const paywallAdagio = document.querySelector('.paywall-adagio');
|
||||
removeDOMElement(paywallAdagio);
|
||||
} else {
|
||||
const paywall = document.querySelector('div[amp-access="showContent"]');
|
||||
if (paywall) { paywall.removeAttribute('amp-access-hide'); }
|
||||
const ampAds = document.querySelectorAll('amp-ad');
|
||||
removeDOMElement(...ampAds);
|
||||
}
|
||||
} else if (matchDomain('elmundo.es')) {
|
||||
const premium = document.querySelector('.ue-c-article__premium');
|
||||
const url = window.location.href;
|
||||
if (!url.includes('/amp.' + 'elmundo.es' + '/')) {
|
||||
if (premium) {
|
||||
removeDOMElement(premium);
|
||||
window.location.href = window.location.href.replace('/www.', '/amp.');
|
||||
}
|
||||
} else {
|
||||
const paywall = document.querySelector('div[amp-access="authorized!=true"]');
|
||||
if (paywall) {
|
||||
removeDOMElement(paywall);
|
||||
const divHidden = document.querySelector('div[amp-access="authorized=true"]');
|
||||
if (divHidden) {
|
||||
divHidden.removeAttribute('amp-access-hide');
|
||||
}
|
||||
}
|
||||
const advertising = document.querySelectorAll('.advertising, amp-embed');
|
||||
removeDOMElement(...advertising);
|
||||
}
|
||||
} else if (matchDomain('speld.nl')) {
|
||||
const paywallPopup = document.querySelector('.c-paywall-notice');
|
||||
removeDOMElement(paywallPopup);
|
||||
} else if (matchDomain('lastampa.it')) {
|
||||
const url = window.location.href;
|
||||
if (!url.includes('/amp/')) {
|
||||
const premium = document.querySelector('.paywall-adagio');
|
||||
removeDOMElement(premium);
|
||||
window.setTimeout(function () {
|
||||
if (premium) {
|
||||
window.location.href = url.split('?')[0] + '/amp/';
|
||||
}
|
||||
const articleBody = document.querySelector('div#article-body[style]');
|
||||
if (articleBody) {
|
||||
articleBody.removeAttribute('style');
|
||||
}
|
||||
}, 500);
|
||||
} else {
|
||||
const paywall = document.querySelector('div[id^="paywall-banner"]');
|
||||
removeDOMElement(paywall);
|
||||
const subscriptionSection = document.querySelector('[subscriptions-section="content"]');
|
||||
if (subscriptionSection) {
|
||||
subscriptionSection.removeAttribute('subscriptions-section');
|
||||
const preview = document.querySelector('div[subscriptions-section="content-not-granted"]');
|
||||
removeDOMElement(preview);
|
||||
}
|
||||
const ampAds = document.querySelectorAll('amp-ad, amp-embed');
|
||||
removeDOMElement(...ampAds);
|
||||
}
|
||||
} else if (matchDomain('time.com')) {
|
||||
const body = document.querySelector('body');
|
||||
if (body) {
|
||||
body.setAttribute('style', 'position:relative !important;');
|
||||
}
|
||||
} else if (matchDomain('expansion.com')) {
|
||||
const premium = document.querySelector('.ue-c-article__premium');
|
||||
const url = window.location.href;
|
||||
if (!url.includes('/amp.' + 'expansion.com' + '/')) {
|
||||
if (premium) {
|
||||
removeDOMElement(premium);
|
||||
window.location.href = window.location.href.replace('/www.', '/amp.');
|
||||
}
|
||||
} else {
|
||||
const paywall = document.querySelector('div[amp-access="authorized!=true"]');
|
||||
if (paywall) {
|
||||
removeDOMElement(paywall);
|
||||
const divHidden = document.querySelector('div[amp-access="authorized=true"]');
|
||||
if (divHidden) {
|
||||
divHidden.removeAttribute('amp-access-hide');
|
||||
}
|
||||
}
|
||||
const advertising = document.querySelectorAll('.advertising, amp-embed');
|
||||
removeDOMElement(...advertising);
|
||||
}
|
||||
} else if (matchDomain('chicagobusiness.com')) {
|
||||
const body = document.querySelector('body[class]');
|
||||
if (body) {
|
||||
body.removeAttribute('class');
|
||||
}
|
||||
} else if (matchDomain('latimes.com')) {
|
||||
const paywall = document.querySelector('metering-modal');
|
||||
const incognitoWall = document.querySelector('metering-toppanel');
|
||||
if (paywall) {
|
||||
removeDOMElement(paywall);
|
||||
} else if (incognitoWall) {
|
||||
removeDOMElement(incognitoWall);
|
||||
}
|
||||
if (paywall || incognitoWall) {
|
||||
document.body.removeAttribute('style');
|
||||
}
|
||||
} else if (matchDomain('foreignpolicy.com')) {
|
||||
const contentUngated = document.querySelector('div.content-ungated');
|
||||
removeDOMElement(contentUngated);
|
||||
const contentGated = document.querySelector('div.content-gated');
|
||||
if (contentGated) {
|
||||
contentGated.classList.remove('content-gated');
|
||||
}
|
||||
} else if (matchDomain('bostonglobe.com')) {
|
||||
// Remove the portion covering the paywall
|
||||
const paywall = document.querySelector('div.meter-paywall');
|
||||
if (paywall) {
|
||||
removeDOMElement(paywall);
|
||||
}
|
||||
// Re-enable scrolling
|
||||
const body = document.querySelector('body');
|
||||
if (body) {
|
||||
document.body.removeAttribute('style');
|
||||
}
|
||||
// Click the button to reveal the rest of the article
|
||||
const buttonDiv = document.querySelector('[id="continue_button"]');
|
||||
if (buttonDiv) {
|
||||
const button = buttonDiv.querySelector('button');
|
||||
if (button) {
|
||||
button.click();
|
||||
}
|
||||
}
|
||||
} else if (matchDomain('nationalgeographic.com')) {
|
||||
// prevent modal from showing up, then remove scroll-locking, and article blur
|
||||
new window.MutationObserver(function (mutations) {
|
||||
for (const mutation of mutations) {
|
||||
for (const node of mutation.addedNodes) {
|
||||
if (node instanceof window.HTMLElement) {
|
||||
if (node.matches('#fittPortal_0')) {
|
||||
removeDOMElement(node);
|
||||
const body = document.body;
|
||||
body.removeAttribute('class');
|
||||
body.removeAttribute('style');
|
||||
body.removeAttribute('overflow');
|
||||
const blur = document.querySelector('#natgeo-template1-frame-1-module-1 > div > div > section > article > section > div.Article__Content__Overlay--gated');
|
||||
if (blur) removeDOMElement(blur);
|
||||
|
||||
this.disconnect(); // Stop watching for element being added after one removal
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}).observe(document, { subtree: true, childList: true });
|
||||
} else if (matchDomain('hbrchina.org')) {
|
||||
const hiddenDiv = document.querySelector('div#the_content');
|
||||
if (hiddenDiv) {
|
||||
hiddenDiv.removeAttribute('style');
|
||||
}
|
||||
} else if (matchDomain('scmp.com')) {
|
||||
if (window.location.href.includes('/amp.')) {
|
||||
const divHidden = document.querySelectorAll('div.article-body[amp-access][amp-access-hide]');
|
||||
for (const elem of divHidden) {
|
||||
elem.removeAttribute('amp-access-hide');
|
||||
}
|
||||
const defaultMeters = document.querySelectorAll('div.default-meter, div#archive-article-meter');
|
||||
const ads = document.querySelectorAll('amp-ad, div.ad-banner, div.advert-fly-carpet-container, div.inline-advert');
|
||||
removeDOMElement(...defaultMeters, ...ads);
|
||||
}
|
||||
}
|
||||
|
||||
function matchDomain (domains) {
|
||||
const hostname = window.location.hostname;
|
||||
if (typeof domains === 'string') { domains = [domains]; }
|
||||
return domains.some(domain => hostname === domain || hostname.endsWith('.' + domain));
|
||||
}
|
||||
|
||||
function waitDOMElement (selector, tagName = '', callback, multiple = false) {
|
||||
new window.MutationObserver(function (mutations) {
|
||||
for (const mutation of mutations) {
|
||||
for (const node of mutation.addedNodes) {
|
||||
if (!tagName || (node.tagName === tagName)) {
|
||||
if (node.matches(selector)) {
|
||||
callback(node);
|
||||
if (!multiple) { this.disconnect(); }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}).observe(document, {
|
||||
subtree: true,
|
||||
childList: true
|
||||
});
|
||||
}
|
||||
|
||||
function removeDOMElement (...elements) {
|
||||
for (const element of elements) {
|
||||
if (element) { element.remove(); }
|
||||
}
|
||||
}
|
||||
|
||||
function removeClassesByPrefix (el, prefix) {
|
||||
for (const clazz of el.classList) {
|
||||
if (clazz.startsWith(prefix)) {
|
||||
el.classList.remove(clazz);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Prevent element from being added the first time to the DOM
|
||||
function blockElement (selector, blockAlways = false) {
|
||||
new window.MutationObserver(function (mutations) {
|
||||
for (const mutation of mutations) {
|
||||
for (const node of mutation.addedNodes) {
|
||||
if (node instanceof window.HTMLElement) {
|
||||
if (node.matches(selector)) {
|
||||
removeDOMElement(node);
|
||||
if (!blockAlways) {
|
||||
this.disconnect(); // Stop watching for element being added after one removal
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}).observe(document, { subtree: true, childList: true });
|
||||
}
|
||||
|
||||
function ampUnhideSubscriptionsSection (ampAdsSel = 'amp-ad, .ad') {
|
||||
const preview = document.querySelector('[subscriptions-section="content-not-granted"]');
|
||||
removeDOMElement(preview);
|
||||
const subscriptionsSection = document.querySelectorAll('[subscriptions-section="content"]');
|
||||
for (const elem of subscriptionsSection) {
|
||||
elem.removeAttribute('subscriptions-section');
|
||||
}
|
||||
const ampAds = document.querySelectorAll(ampAdsSel);
|
||||
removeDOMElement(...ampAds);
|
||||
}
|
||||
122
bypass-paywalls-chrome-master/src/js/options.js
Normal file
122
bypass-paywalls-chrome-master/src/js/options.js
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
// Shortcut for document.querySelector()
|
||||
function $(sel, el = document) {
|
||||
return el.querySelector(sel);
|
||||
}
|
||||
|
||||
// Shortcut for document.querySelectorAll()
|
||||
function $$(sel, el = document) {
|
||||
return Array.from(el.querySelectorAll(sel));
|
||||
}
|
||||
|
||||
// Select UI pane
|
||||
function selectPane(e) {
|
||||
const panes = $$('.pane');
|
||||
for (const tab of $$('#tabs button')) {
|
||||
tab.classList.toggle('active', tab == e.target);
|
||||
}
|
||||
|
||||
for (const pane of panes) {
|
||||
pane.classList.toggle('active', pane.id == e.target.dataset.pane);
|
||||
}
|
||||
}
|
||||
|
||||
// Saves options to extensionApi.storage
|
||||
function saveOptions () {
|
||||
|
||||
const sites = $$('#bypass_sites input').reduce(function (memo, inputEl) {
|
||||
if (inputEl.checked) {
|
||||
memo[inputEl.dataset.key] = inputEl.dataset.value;
|
||||
}
|
||||
return memo;
|
||||
}, {});
|
||||
|
||||
const customSites = $('#custom_sites').value
|
||||
.split('\n')
|
||||
.map(s => s.trim())
|
||||
.filter(s => s);
|
||||
|
||||
extensionApi.storage.sync.set({
|
||||
sites: sites,
|
||||
customSites: customSites
|
||||
}, function () {
|
||||
// Update status to let user know options were saved.
|
||||
const status = $('#status');
|
||||
status.textContent = 'Options saved';
|
||||
setTimeout(function () {
|
||||
status.textContent = '';
|
||||
|
||||
// Reload runtime so background script picks up changes
|
||||
chrome.runtime.reload();
|
||||
|
||||
window.close();
|
||||
}, 800);
|
||||
});
|
||||
}
|
||||
|
||||
// Restores checkbox input states using the preferences
|
||||
// stored in extensionApi.storage.
|
||||
function renderOptions () {
|
||||
extensionApi.storage.sync.get({
|
||||
sites: {},
|
||||
customSites: [],
|
||||
}, function (items) {
|
||||
// Render supported sites
|
||||
const sites = items.sites;
|
||||
for (const key in defaultSites) {
|
||||
if (!Object.prototype.hasOwnProperty.call(defaultSites, key)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const value = defaultSites[key];
|
||||
const labelEl = document.createElement('label');
|
||||
const inputEl = document.createElement('input');
|
||||
inputEl.type = 'checkbox';
|
||||
inputEl.dataset.key = key;
|
||||
inputEl.dataset.value = value;
|
||||
inputEl.checked = (key in sites) || (key.replace(/\s\(.*\)/, '') in sites);
|
||||
|
||||
labelEl.appendChild(inputEl);
|
||||
labelEl.appendChild(document.createTextNode(key));
|
||||
$('#bypass_sites').appendChild(labelEl);
|
||||
}
|
||||
|
||||
// Render custom sites
|
||||
const customSites = items.customSites;
|
||||
$('#custom_sites').value = customSites.join('\n');
|
||||
|
||||
// Set select all/none checkbox state. Note: "indeterminate" checkboxes
|
||||
// require `chrome_style: false` be set in manifest.json. See
|
||||
// https://bugs.chromium.org/p/chromium/issues/detail?id=1097489
|
||||
const nItems = $$('input[data-key]').length;
|
||||
const nChecked = $$('input[data-key]').filter(el => el.checked).length;
|
||||
$('#select-all input').checked = nChecked / nItems > 0.5;
|
||||
$('#select-all input').indeterminate = nChecked && nChecked != nItems;
|
||||
});
|
||||
}
|
||||
|
||||
// Select/deselect all supported sites
|
||||
function selectAll () {
|
||||
for (const el of $$('input[data-key]')) {
|
||||
el.checked = this.checked;
|
||||
};
|
||||
}
|
||||
|
||||
// Initialize UI
|
||||
function init() {
|
||||
renderOptions();
|
||||
|
||||
$('#save').addEventListener('click', saveOptions);
|
||||
$('#select-all input').addEventListener('click', selectAll);
|
||||
|
||||
for (const el of $$('#tabs button')) {
|
||||
el.addEventListener('click', selectPane);
|
||||
}
|
||||
|
||||
selectPane({target: $('#tabs button:first-child')});
|
||||
|
||||
if (extensionApi === chrome) {
|
||||
document.body.classList.add('customSitesEnabled');
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', init);
|
||||
179
bypass-paywalls-chrome-master/src/js/sites.js
Executable file
179
bypass-paywalls-chrome-master/src/js/sites.js
Executable file
|
|
@ -0,0 +1,179 @@
|
|||
// Cookies from this list are blocked by default
|
||||
const defaultSites = {
|
||||
'Adweek': 'adweek.com',
|
||||
'Algemeen Dagblad': 'ad.nl',
|
||||
'\u00C1mbito': 'ambito.com',
|
||||
'American Banker': 'americanbanker.com',
|
||||
'Baltimore Sun': 'baltimoresun.com',
|
||||
'Barron\'s': 'barrons.com',
|
||||
'Bloomberg': 'bloomberg.com',
|
||||
'Bloomberg Quint (free articles only)': 'bloombergquint.com',
|
||||
'BN De Stem': 'bndestem.nl',
|
||||
'Boston Globe': 'bostonglobe.com',
|
||||
'Brabants Dagblad': 'bd.nl',
|
||||
'Brisbane Times': 'brisbanetimes.com.au',
|
||||
'Business Insider': 'businessinsider.com',
|
||||
'Caixin': 'caixinglobal.com',
|
||||
'Central Western Daily': 'centralwesterndaily.com.au',
|
||||
'Chemical & Engineering News': 'cen.acs.org',
|
||||
'Chicago Tribune': 'chicagotribune.com',
|
||||
'Corriere Della Sera': 'corriere.it',
|
||||
'Crain\'s Chicago Business': 'chicagobusiness.com',
|
||||
'Daily Press': 'dailypress.com',
|
||||
'De Gelderlander': 'gelderlander.nl',
|
||||
'De Groene Amsterdammer': 'groene.nl',
|
||||
'DeMorgen': 'demorgen.be',
|
||||
'Denver Post': 'denverpost.com',
|
||||
'De Speld': 'speld.nl',
|
||||
'De Stentor': 'destentor.nl',
|
||||
'De Tijd': 'tijd.be',
|
||||
'de Volkskrant': 'volkskrant.nl',
|
||||
'Diario Financiero': 'df.cl',
|
||||
'Domani': 'editorialedomani.it',
|
||||
'Dynamed Plus': 'dynamed.com',
|
||||
'Eindhovens Dagblad': 'ed.nl',
|
||||
'El Mercurio': 'elmercurio.com',
|
||||
'El Mundo': 'elmundo.es',
|
||||
'El Pais': 'elpais.com',
|
||||
'El Periodico': 'elperiodico.com',
|
||||
'Elu24': 'elu24.ee',
|
||||
'Encyclopedia Britannica': 'britannica.com',
|
||||
'Estadão': 'estadao.com.br',
|
||||
'Examiner': 'examiner.com.au',
|
||||
'Expansión': 'expansion.com',
|
||||
'Financial News': 'fnlondon.com',
|
||||
'Financial Post':'financialpost.com',
|
||||
'Financial Times': 'ft.com',
|
||||
'First Things': 'firstthings.com',
|
||||
'Foreign Policy': 'foreignpolicy.com',
|
||||
'Fortune': 'fortune.com',
|
||||
'Genomeweb': 'genomeweb.com',
|
||||
'Glassdoor': 'glassdoor.com',
|
||||
'Globes': 'globes.co.il',
|
||||
'Grubstreet' : 'grubstreet.com',
|
||||
'Haaretz English': 'haaretz.com',
|
||||
'Haaretz': 'haaretz.co.il',
|
||||
'Harper\'s Magazine': 'harpers.org',
|
||||
'Hartford Courant': 'courant.com',
|
||||
'Harvard Business Review': 'hbr.org',
|
||||
'Harvard Business Review China': 'hbrchina.org',
|
||||
'Herald Sun': 'heraldsun.com.au',
|
||||
'Het Financieele Dagblad': 'fd.nl',
|
||||
'History Extra': 'historyextra.com',
|
||||
'Humo': 'humo.be',
|
||||
'Il Manifesto': 'ilmanifesto.it',
|
||||
'Il Messaggero': 'ilmessaggero.it',
|
||||
'Inc.com': 'inc.com',
|
||||
'Interest NZ': 'interest.co.nz',
|
||||
'Investors Chronicle': 'investorschronicle.co.uk',
|
||||
'La Nacion': 'lanacion.com.ar',
|
||||
'La Repubblica': 'repubblica.it',
|
||||
'La Stampa': 'lastampa.it',
|
||||
'La Tercera': 'latercera.com',
|
||||
'La Voix du Nord': 'lavoixdunord.fr',
|
||||
'L\'Echo': 'lecho.be',
|
||||
'Le Devoir': 'ledevoir.com',
|
||||
'Le Parisien': 'leparisien.fr',
|
||||
'Les Echos': 'lesechos.fr',
|
||||
'Loeb Classical Library': 'loebclassics.com',
|
||||
'London Review of Books': 'lrb.co.uk',
|
||||
'Los Angeles Business Journal': 'labusinessjournal.com',
|
||||
'Los Angeles Times': 'latimes.com',
|
||||
'Medium': 'medium.com',
|
||||
'Medscape': 'medscape.com',
|
||||
'Mexico News Daily': 'mexiconewsdaily.com',
|
||||
'MIT Sloan Management Review': 'sloanreview.mit.edu',
|
||||
'MIT Technology Review': 'technologyreview.com',
|
||||
'Mountain View Voice': 'mv-voice.com',
|
||||
'National Geographic': 'nationalgeographic.com',
|
||||
'National Post': 'nationalpost.com',
|
||||
'Neue Zürcher Zeitung': 'nzz.ch',
|
||||
'New Statesman': 'newstatesman.com',
|
||||
'New York Daily News': 'nydailynews.com',
|
||||
'New York Magazine': 'nymag.com',
|
||||
'New Zealand Herald': 'nzherald.co.nz',
|
||||
'NRC': 'nrc.nl',
|
||||
'NT News': 'ntnews.com.au',
|
||||
'Orange County Register': 'ocregister.com',
|
||||
'Orlando Sentinel': 'orlandosentinel.com',
|
||||
'Palo Alto Online': 'paloaltoonline.com',
|
||||
'Parool': 'parool.nl',
|
||||
'Postimees': 'postimees.ee',
|
||||
'PZC': 'pzc.nl',
|
||||
'Quartz (free articles only)': 'qz.com',
|
||||
'Quora': 'quora.com',
|
||||
'Quotidiani Gelocal': 'gelocal.it',
|
||||
'Republic.ru': 'republic.ru',
|
||||
'Reuters': 'reuters.com',
|
||||
'San Diego Union Tribune': 'sandiegouniontribune.com',
|
||||
'San Francisco Chronicle': 'sfchronicle.com',
|
||||
'Scientific American': 'scientificamerican.com',
|
||||
'Seeking Alpha': 'seekingalpha.com',
|
||||
'Slate': 'slate.com',
|
||||
'SOFREP': 'sofrep.com',
|
||||
'Star Tribune': 'startribune.com',
|
||||
'Statista': 'statista.com',
|
||||
'Stuff': 'stuff.co.nz',
|
||||
"Süddeutsche Zeitung": "sueddeutsche.de",
|
||||
"South China Morning Post": "scmp.com",
|
||||
'SunSentinel': 'sun-sentinel.com',
|
||||
'Tech in Asia': 'techinasia.com',
|
||||
'Telegraaf': 'telegraaf.nl',
|
||||
'Time': 'time.com',
|
||||
'The Advertiser': 'adelaidenow.com.au',
|
||||
'The Advocate': 'theadvocate.com.au',
|
||||
'The Age': 'theage.com.au',
|
||||
'The American Interest': 'the-american-interest.com',
|
||||
'The Athletic': 'theathletic.com',
|
||||
'The Athletic (UK)': 'theathletic.co.uk',
|
||||
'The Atlantic': 'theatlantic.com',
|
||||
'The Australian Financial Review': 'afr.com',
|
||||
'The Australian': 'theaustralian.com.au',
|
||||
'The Business Journals': 'bizjournals.com',
|
||||
'The Canberra Times': 'canberratimes.com.au',
|
||||
'The Courier': 'thecourier.com.au',
|
||||
'The Courier Mail': 'couriermail.com.au',
|
||||
'The Cut': 'thecut.com',
|
||||
'The Daily Telegraph': 'dailytelegraph.com.au',
|
||||
'The Diplomat': 'thediplomat.com',
|
||||
'The Economist': 'economist.com',
|
||||
'The Globe and Mail': 'theglobeandmail.com',
|
||||
'The Herald': 'theherald.com.au',
|
||||
'The Hindu': 'thehindu.com',
|
||||
'The Irish Times (free articles only)': 'irishtimes.com',
|
||||
'The Japan Times': 'japantimes.co.jp',
|
||||
'The Kansas City Star': 'kansascity.com',
|
||||
'TheMarker': 'themarker.com',
|
||||
'The Mercury News': 'mercurynews.com',
|
||||
'The Mercury Tasmania': 'themercury.com.au',
|
||||
'The Morning Call': 'mcall.com',
|
||||
'The Nation': 'thenation.com',
|
||||
'The National': 'thenational.scot',
|
||||
'The News-Gazette': 'news-gazette.com',
|
||||
'The New Yorker': 'newyorker.com',
|
||||
'The New York Times': 'nytimes.com',
|
||||
'The Olive Press': 'theolivepress.es',
|
||||
'The Philadelphia Inquirer': 'inquirer.com',
|
||||
'The Saturday Paper': 'thesaturdaypaper.com.au',
|
||||
'The Seattle Times': 'seattletimes.com',
|
||||
'The Spectator Australia': 'spectator.com.au',
|
||||
'The Spectator (U.K.)': 'spectator.co.uk',
|
||||
'The Spectator (U.S.)': 'spectator.us',
|
||||
'The Sydney Morning Herald': 'smh.com.au',
|
||||
'The Telegraph': 'telegraph.co.uk',
|
||||
'The Toronto Star': 'thestar.com',
|
||||
'The Wall Street Journal': 'wsj.com',
|
||||
'The Washington Post': 'washingtonpost.com',
|
||||
'The Wrap': 'thewrap.com',
|
||||
'Times Literary Supplement': 'the-tls.co.uk',
|
||||
'Towards Data Science': 'towardsdatascience.com',
|
||||
'Trouw': 'trouw.nl',
|
||||
'Tubantia': 'tubantia.nl',
|
||||
'Vanity Fair': 'vanityfair.com',
|
||||
'Vrij Nederland': 'vn.nl',
|
||||
'Vulture': 'vulture.com',
|
||||
'Winston-Salem Journal': 'journalnow.com',
|
||||
'Wired': 'wired.com',
|
||||
'Zeit Online': 'zeit.de',
|
||||
'*General Paywall Bypass*': 'generalpaywallbypass'
|
||||
};
|
||||
3
bypass-paywalls-chrome-master/src/js/version.js
Normal file
3
bypass-paywalls-chrome-master/src/js/version.js
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
const manifestData = extensionApi.runtime.getManifest();
|
||||
const versionString = 'v' + manifestData.version;
|
||||
document.getElementById('version').innerText = versionString;
|
||||
Loading…
Add table
Add a link
Reference in a new issue