adblocker-filter branch up / code up

This commit is contained in:
Amit Nandi 2025-04-04 23:30:50 +05:30
parent 5eafb87d56
commit 046f44e370
12 changed files with 13291 additions and 149 deletions

37
LICENSE
View file

@ -1,24 +1,21 @@
This is free and unencumbered software released into the public domain.
MIT License
Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.
Copyright (c) 2020, magnolia1234
In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
For more information, please refer to <https://unlicense.org>
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -1,15 +1,53 @@
# Bypass Paywalls Clean - BPC
# Bypass Paywalls Clean filters
Extension allows you to read articles from (supported) sites that implement a paywall.
Adblocker list which allows you to read articles from (supported) sites that implement a paywall (for a lot of sites you also need to install an userscript).\
For some sites it will log you out (or block you to log in); caused by removing cookies or blocking general paywall-scripts.
You can also add a domain as custom site and try to bypass the paywall.
Weekly updates are released for fixes and new sites.
Disclaimer: the list doesn't support as many sites as the extension/add-on does though (and even less on iOS).\
On iOS you can also use [Shortcuts](https://apps.apple.com/us/app/shortcuts/id915249334) app with [Unpaywall](https://www.icloud.com/shortcuts/71648f5ad34f4d8f972718e5f3621ffe) shortcut for some unsupported sites.
Installation instructions (From respective branches) :
### Installation
- [Chrome](https://forge.bitmutex.com/bitmutex/bpc/src/branch/chrome)
- [Firefox](https://forge.bitmutex.com/bitmutex/bpc/src/branch/firefox)
- [Allowlisting Guide](https://forge.bitmutex.com/bitmutex/bpc/src/branch/chrome/allowlist)
#### adblocker filters
Use a browser which supports extensions/add-ons and install an adblocker (like uBlock Origin or AdGuard).\
Now add custom (content)filter (copy link):
[Bypass Paywalls Clean filters](https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=bpc-paywall-filter.txt)\
Or subscribe:
[subscribe on filterlists.com](https://filterlists.com/lists/bypass-paywalls-clean-filter) -
[subscribe for AdGuard](https://subscribe.adblockplus.org/?location=https%3A%2F%2Fgitflic.ru%2Fproject%2Fmagnolia1234%2Fbypass-paywalls-clean-filters%2Fblob%2Fraw%3Ffile%3Dbpc-paywall-filter.txt&title=Bypass%20Paywalls%20Clean%20filters)
For Prebuilt .CRX (Chrome) and .XPI(FIrefox) Extension Files, Visit the [Releases](https://forge.bitmutex.com/bitmutex/bpc/releases) Section
Brave browser has only incorporated the filterlist (many sites also need userscript): enable it in [settings](brave://adblock)\
On Android you can use [Via Browser](https://play.google.com/store/apps/details?id=mark.via.gp) which supports custom filterlists & userscripts.
You can also install an app like AdGuard* (on Android & iOS/macOS) or [AdLock](https://apps.apple.com/us/app/adlock-ads-blocker-privacy/id1506604517) (on iOS).\
This way you can use it with Chrome/Firefox (on Android) or Safari (on iOS/macOS).
\* [AdGuard Content Blocker](https://play.google.com/store/apps/details?id=com.adguard.android.contentblocker) (on Android) only works with Yandex Browser or Samsung Internet Browser when you add the filter (url) to user rules (manual update of filter required).\
Or use [AdGuard app](https://adguard.com/adguard-android/overview.html) (from their site) which works for all apps (and automatically updates filter).
An external app may work less effective (timing/refresh issues).\
On iOS there may be no support for scriptlets (for removing cookies, attributes and/or classes), but works with for example AdGuard Premium (paid feature).
#### userscripts
Some fixes also require an app to run an additional userscript to work.\
For example amp-redirect (also disable amp-to-html extension for these sites), unhide text/images and more.
Example apps or extensions/add-ons you can use:
* Android: [AdGuard app](https://adguard.com/adguard-android/overview.html) (load as extension)
* iOS: [Hyperweb](https://apps.apple.com/us/app/hyperweb/id1581824571) or [Userscripts](https://apps.apple.com/us/app/userscripts/id1463298887)
* macOS: [AdGuard app](https://adguard.com/en/adguard-mac/overview.html)
* Windows/ChromeOS: Tampermonkey [Chrome extension](https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo) or [Firefox add-on](https://addons.mozilla.org/firefox/addon/tampermonkey)
Userscripts for different languages:
[English (& other)](https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.en.user.js) -
[Dutch](https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.nl.user.js) -
[Finnish/Swedish/Danish](https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.fi.se.user.js) -
[French](https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.fr.user.js) -
[German](https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.de.user.js) -
[Italian](https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.it.user.js) -
[Polish](https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.pl.user.js) -
[Spanish/Portugese](https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.es.pt.user.js)

768
bpc-paywall-filter.txt Normal file
View file

@ -0,0 +1,768 @@
! Title: Bypass Paywalls Clean filter
! Expires: 1 day (update frequency)
! Description: Filters for news sites (supports less sites than the extension/add-on)
! Homepage: https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters
! License: MIT; https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=LICENSE
! Last modified:
! Version: 4.0.8.3
! General
||amplitude.com^$xmlhttprequest,third-party
||axate.io$script,third-party
||loader-cdn.azureedge.net^$third-party
||blueconic.net^$third-party
/[a-z]{1}\d{2,3}\.\w+\.(co(m|\.uk)|net|org)\/script\.js/$script,~third-party
||cxense.com^$script,third-party,domain=~journaldemontreal.com|~journaldequebec.com|~wsj.com
||cxense.com^$script,domain=bizjournals.com,important
||ensighten.com/*/Bootstrap.js$script,third-party
||evolok.net^$third-party
||fewcents.co/*/paywall*.js$script,third-party
||hadrianpaywall.com^$third-party
.de/sub/js/pc-offer-west.js$script,~third-party
||js.matheranalytics.com^$script,third-party
||newsmemory.com?meter$third-party
||olytics.omeda.com^$third-party
||onecount.net^$third-party
||js.pelcro.com^$script,third-party
/xbuilder/experience/execute$xmlhttprequest,~third-party
||piano.io/xbuilder/experience/execute$xmlhttprequest,third-party
@@||piano.io^$domain=hbr.org|japantimes.co.jp
@@||cdn.tinypass.com/api/tinypass.min.js$script,domain=ajc.com
||api.pico.tools/client/query/*$xmlhttprequest,~third-party
||api.pico.tools/popup/null/*$xmlhttprequest,~third-party
gadget.pico.tools##+js(json-prune, locked)
||poool.fr^$third-party
||qiota.com^$xmlhttprequest,third-party
||sophi.io^$third-party
||steadyhq.com^$script,third-party
||wallkit.net/js/$script,third-party
||zephr.com/zephr-browser/$script,third-party
/arc/subs/p.min.js$script,~third-party,domain=~latercera.com|~nzherald.co.nz
/c/assets/pigeon.js$script,~third-party
/evolok/*ev-em.min.js$script,domain=~vikatan.com
/evolok/*ev-widgets.min.js$script
/paywall/evercookie_get.js$script,~third-party
/shared-content/art/tncms/api/access.*.js$script,~third-party
/wp-content/plugins/leaky-paywall/js/leaky-paywall-cookie.js$script,~third-party
/wp-content/*/plugins/rcp-view-limit/$script,~third-party
/zephr/feature$xmlhttprequest
||abril.com.br/*/abril-paywall/$script,~third-party
adweek.com##+js(cookie-remover, blaize_session)
alternatives-economiques.fr###temp-paywall
alternatives-economiques.fr##+js(ra, style, div[data-ae-poool], stay)
ambito.com##+js(cookie-remover, TDNotesRead)
||americanaffairsjournal.org/wp-content/mu-plugins/app/src/paywall/paywall.js$script,~third-party
apollo-magazine.com##+js(cookie-remover, blaize_session)
apollo-magazine.com,spectator.co.uk###subscribe-ribbon,div.ad-slot
artforum.com##+js(cookie-remover, /^/)
||artnet.com/paywall-ajax.php$xmlhttprequest,~third-party
artnet.com##div.article-body:style(display:block !important;)
artnet.com##div[id^="issuem-leaky-paywall-"]
asia.nikkei.com##div.tp-modal,div.tp-backdrop
asia.nikkei.com##+js(rc, tp-modal-open, body.tp-modal-open, stay)
magazine.atavist.com##+js(set-local-storage-item, /^/, $remove$)
||tonos.gjirafa.tech/init/access$xmlhttprequest,domain=atlantico.fr
||automobilwoche.de/sites/camw/files/js/js_-YBiL*.js$script,~third-party
axios.com##div[data-cy="pro-paywall"],div[class^="Modal_paywall"],div[class^="Modal_cta"]
axios.com##+js(ra, style, html[style], stay)
berlingske.dk##div#paywall
bhaskar.com##div.paywallBlockedContent~div:remove()
bhaskar.com##article div:empty
bhaskar.com##+js(ra, class, div.paywallBlockedContent, stay)
bizjournals.com##+js(ra, style, html, stay)
bizjournals.com##+js(rc, is-overlaid, html.is-overlaid, stay)
bizjournals.com##+js(rc, is-overlaid, body.is-overlaid, stay)
bizjournals.com##+js(ra, inert, div#__nuxt[inert])
bizjournals.com##div[id^="headlessui-dialog-"],div.sheet-overlay
! bloomberg.com: disable Dark Reader extension
||cm.bloomberg.com^$xmlhttprequest,~third-party
||assets.bwbx.io/s3/javelin/public/javelin/js/foundation/transporter/foundation_transporter-*.js$script,domain=bloomberg.com
bloomberg.com##+js(ra, data-paywall-overlay-status, body[data-paywall-overlay-status], stay)
bloomberg.com##div[id^="fortress-"]
bloomberg.com##+js(set-local-storage-item, history, $remove$)
||bloombergadria.com/*/news/$inline-script
bloombergadria.com##+js(ra, style, article[style])
||meter.bostonglobe.com/js/meter.js$script,~third-party
/\.businessinsider\.com\/chunks\/scripts\/\d.+\.js/$script,domain=businessinsider.com,~third-party
businessinsider.jp##+js(ra, hidden, div.piano-paywall-container[hidden])
||businesspost.ie/api/tinypass.min.js$script,~third-party
||cambiocolombia.com/_next/static/chunks/1036.*.js$script,~third-party
cartacapital.com.br##+js(rc, contentSoft, div.contentSoft)
cartacapital.com.br##div[class^="s-freemium"],div.maggazine-add
cen.acs.org##+js(cookie-remover, cenLoginP)
cen.acs.org##.meteredBar
challenges.fr##div.amorce.manual
challenges.fr##+js(ra, class|hidden, .user-paying-content)
charliehebdo.fr##+js(ra, style, div.ch-paywalled-content)
charliehebdo.fr##div#poool-widget
||cdn.piano.io/api/tinypass.min.js$script,domain=clicrbs.com.br
||clicrbs.com.br/paywall-api/count/$xmlhttprequest,~third-party
cnbc.com##div.ArticleGate-proGate
cnbc.com##+js(ra, class|hidden, span[hidden])
cnn.com##div[data-component-id="subwall"]
cnn.com##+js(ra, style, html[style], stay)
cnn.com##+js(ra, style, body[style], stay)
cnn.com##+js(set-local-storage-item, /reg_?wall/i, $remove$)
columbian.com##+js(cookie-remover, blaize_session)
chronicle.com,philanthropy.com##div[data-content-summary]
chronicle.com,philanthropy.com##+js(ra, hidden|ppajfrg86rdhoubtirllb2bf1xsaknzus, div[class~="contentBody" i][hidden], stay)
! cicero.de: url+?amp
cicero.de##+js(rc, teasered-content, .teasered-content)
cicero.de##.teasered-content-fader
citywire.com##+js(rc, article-locked, .article-locked)
citywire.com##+js(rc, m-article--locked, .m-article--locked)
citywire.com##+js(rc, m-media-container--locked, .m-media-container--locked)
citywire.com##+js(rc, m-article__body--locked, .m-article__body--locked)
citywire.com##registration-widget,div.alert--locked
||zonda.clarin.com^$script,domain=clarin.com|lavoz.com.ar|ole.com.ar
||codesports.com.au/*/news-story/$inline-script
||commentary.org/*/js/dg-locker-public.js$script,~third-party
||connaissancedesarts.com/wp-content/*/vendor/iptools-jquery-inview.min.js$script,~third-party
||paywall.correiodopovo.com.br$script,~third-party
||corriereobjects.it/*/js/_paywall.sjs$script,domain=corriere.it
||cronista.com/files/cachefiles/987*.js$script,~third-party
csmonitor.com##+js(set-local-storage-item, /^/, $remove$)
csmonitor.com##.paywall
cyclingnews.com##+js(rc, paywall-locker, div.paywall-locker)
dagsavisen.no##+js(set, window.Fusion.globalContent.content_restrictions.content_code, 0)
dailywire.com###post-body-text > div > div:style(height: auto !important;)
||denik.cz/*.html$inline-script
discovermagazine.com##body:style(overflow: auto !important;)
discovermagazine.com##div.fIkXwQ,div[style*="fadeIn"],div[role="button"][aria-label="Dismiss Dialog"]
||dn.se/check-paywall-v2.js,~third-party
||dnevnik.bg/api/auth*/callback/credentials$xmlhttprequest,~third-party
||dwell.com/article/*?rel=plus$inline-script
eastwest.eu##+js(ra, style, .paywall)
eastwest.eu##+js(rc, paywall, .paywall)
eastwest.eu###testo_articolo > p, #testo_articolo > h3
eastwest.eu##.offerta_abbonamenti
||economist.com/latest/wall-ui.js$script,~third-party
||editorialedomani.it/pelcro.js$script,~third-party
elespanol.com##+js(rc, content-not-granted-paywall, div.content-not-granted-paywall)
elespanol.com##div.full-suscriptor-container
elconfidencial.com##+js(rc, newsType__content--closed, div.newsType__content--closed)
||elobservador.com.uy/shares$xmlhttprequest,~third-party
||elpais.com.uy/user/authStatus$script,~third-party
||verne.elpais.com/*.html$inline-script
elpais.com##div#ctn_freemium_article:remove()
elpais.com##div#ctn_premium_article:remove()
eltiempo.com##+js(rc, modulos, div.modulos)
||eltribuno.com/scripts/Bellhop/dist/bellhop.min.js$script,~third-party
em.com.br##+js(rc, compress-text, .div.compress-text)
enotes.com##section#enotes-paywall
enotes.com##+js(ra, class, div.u-paywall)
||estadao.com.br/paywall/$script,~third-party
||estadao.com.br/access.js$script,~third-party
etc.se##+js(rc, teaser-section, section.teaser-section)
etc.se##+js(rc, hidden, section.prose-feature .hidden)
etc.se##article section.font-sans
euobserver.com##+js(rc, show, div.membership-upsell.show)
exame.com##+js(set-local-storage-item, pywllcount, $remove$)
fieldandstream.com##div[class^="mailmunch-"]
fieldandstream.com##+js(ra, class, html[class])
||financialexpress.com/*/min/premiumStoryContent.js$script,~third-party
financialexpress.com##+js(rc, paywall, .paywall)
financialexpress.com##div.pcl-wrap
||folha.uol.com.br/paywall/js/$script,~third-party
||paywall.folha.uol.com.br^$script,xmlhttprequest,~third-party
forbes.com##+js(ra, class, html[class], stay)
forbes.com##+js(ra, class, body[class], stay)
forbes.com.au##+js(cookie-remover, blaize_session)
||foreignaffairs.com/modules/custom/fa_paywall_js/js/paywall.js$script,~third-party
||foreignaffairs.com/sites/default/files/assets/css/css_*.css*delta=0$stylesheet,~third-party
foreignaffairs.com##.article-dropcap:style(height: auto !important;)
foreignaffairs.com##.paywall,.loading-indicator,.messages--container--bottom
foreignpolicy.com##body:not(.is-fp-insider) div.content-ungated
foreignpolicy.com##+js(rc, content-gated, body:not(.is-fp-insider) div.content-gated.content-gated--main-article)
fortune.com##+js(ra, class, div.paywallActive)
foxnews.com##+js(ra, class, div[class*="gated-overlay"])
foxnews.com##div.article-gating-wrapper
||ftm.eu/js/routing$script,~third-party
||ftm.nl/js/routing$script,~third-party
ftm.eu,ftm.nl##+js(rc, foldable, div.foldable)
ftm.eu,ftm.nl##div.banner-pp
groene.nl##+js(cookie-remover, rlist)
harpers.org##+js(cookie-remover, hr_session)
||harpers.org/wp-content/themes/timber/static/js/modal*.js
||cdn.tinypass.com/api/tinypass.min.js$script,domain=hbr.org
||hilltimes.com/*/js/loadingoverlay/loadingoverlay.min.js$script,~third-party
hindustantimes.com##.freemium-card,.closeStory
hindustantimes.com##+js(rc, freemiumText, .freemiumText)
hindustantimes.com##+js(rc, open-popup, body.open-popup)
ilsole24ore.com##+js(ra, style, body[style], stay)
ilsole24ore.com##div.s24_adb
||inc42.com/wp-admin/admin-ajax.php|$xmlhttprequest,~third-party
indianexpress.com##+js(ra, style, div.ev-meter-content[style])
indianexpress.com##+js(ra, class, p.first_intro_para)
indianexpress.com##ev-engagement
||liveapp.inews.co.uk/*/content.html$inline-script
inkl.com##+js(ra, class, div.paywall)
inkl.com##div.gradient-container
interestingengineering.com##+js(rc, blurFilter, div.blurFilter, stay)
interestingengineering.com##div.paywall-main-wrapper:remove()
||irishexaminer.com/pu_examiner/scripts/engage/$script,~third-party
japantimes.co.jp##+js(cookie-remover, xbc)
journaldemontreal.com,journaldequebec.com##+js(rc, composer-content, div.article-main-txt.composer-content)
journaldunet.com##div.reg_wall
journaldunet.com##+js(ra, style, div.entry_reg_wall[style])
||jpost.com/js/js_article.min.js$script,~third-party
||internazionale.it/templates_js_ajax.inc.php$xmlhttprequest,~third-party
krautreporter.de##.js-article-paywall,.js-paywall-divider,#steady-checkout
krautreporter.de##+js(rc, blurred, .blurred)
krautreporter.de##+js(rc, json-ld-paywall-marker, .json-ld-paywall-marker, stay)
ksta.de,rundschau-online.de##+js(cookie-remover, anon_cookie)
ksta.de,rundschau-online.de##+js(ra, style, div[data-article-content], stay)
ksta.de,rundschau-online.de##div.dm-paywall-wrapper,div.dm-slot,div.dm-zephr-banner
||cdn.tinypass.com/api/tinypass.min.js$script,domain=kurier.at
kurier.at##+js(ra, class|style, div.paywall)
kurier.at##div#cfs-paywall-container
||glanacion.com/*/metering/*.js$script,domain=lanacion.com.ar
lanacion.com.ar##+js(cookie-remover, /^metering_arc/)
lanacion.com.ar##+js(set-local-storage-item, /^/, $remove$)
latercera.com##div.pw-frontier:remove()
||latimes.com/meteringjs/$script,~third-party
||ev.lavanguardia.com$xmlhttprequest,~third-party
lavanguardia.com,mundodeportivo.com##span.content-ad,span.hidden-ad,span.ad-unit,div.ad-div
ledevoir.com##+js(cookie-remover, pw6)
legrandcontinent.eu##+js(rc, paywall|pw|softwall, body)
lejdd.fr,parismatch.com,public.fr###poool-container,#poool-widget-content,#poool-widget,.forbidden
lejdd.fr,parismatch.com,public.fr##+js(ra, data-poool-mode, .cnt[data-poool-mode="hide"])
||livemint.com/lm-img/subscription/$script,~third-party
livemint.com##+js(rc, paywall, div.paywall)
labusinessjournal.com##+js(cookie-remover, /^/)
labusinessjournal.com###css-only-modals
||lavoz.com.ar/sites/*/paywall/*/pw.js$script,third-party
letelegramme.fr##+js(rc, tlg-paywalled, div.tlg-paywalled)
loebclassics.com##+js(cookie-remover, /^/)
||cdn.loeildelaphotographie.com/wp-content/*/hague-child/js/script-$script,~third-party
loeildelaphotographie.com##+js(ra, class, .paywall)
loeildelaphotographie.com##.premium-pic-box,.membership-promo-container,.login_form_litle
loeildelaphotographie.com##+js(ra, style, img[style*="blur"])
||lrb.co.uk$inline-script
marketwatch.com##+js(cookie-remover, cX_P)
||medscapestatic.com/*/medscape-library.js$script,domain=medscape.com
||wbmdstatic.com/*/chunk-vendors.*.js$script,domain=medscape.com
medscape.com##.AdUnit,div[id^="ads-"]
mexiconewsdaily.com##+js(rc, tdb-block-inner, body.single div.td-post-content > div.tdb-block-inner)
||motorsportmagazine.com/wp-admin/admin-ajax.php$xmlhttprequest,~third-party
||ev.mundodeportivo.com$xmlhttprequest,~third-party
mv-voice.com##+js(cookie-remover, /^/)
||cdn.registerdisney.go.com$script,domain=nationalgeographic.com
nautil.us##+js(cookie-remover, /^(arc|sfa)$/)
||loader.newsday.com$script,~third-party
newsday.com##+js(ra, class, html[class])
newrepublic.com##div.article-scheduled-modal
||blink.net/*/blink-sdk.js$script,domain=newrepublic.com|thebaffler.com
||townnews.com/*/tncms/*/scripts/engage.min.js$script,third-party,domain=nola.com|shreveportbossieradvocate.com|theadvocate.com
nrc.nl##+js(cookie-remover, counter)
||nrc.nl/paywall-api/api/zephr$xmlhttprequest,~third-party
nrc.nl##div[id$="modal__overlay"],div.header__subscribe-bar,div.banner
||nsctotal.com.br/wp-content/themes/nsctotal/js/paywall.js$script,~third-party
||nybooks.com/wp-admin/admin-ajax.php$xmlhttprequest,~third-party
nybooks.com##+js(rc, paywall-article, .paywall-article)
nybooks.com##div.toast-cta
||nysun.com/zephr/$xmlhttprequest,~third-party
||meter-svc.nytimes.com/meter.js$xmlhttprequest,~third-party
||nytimes.com/svc/onsite-messaging/query$xmlhttprequest,~third-party
||mwcm.nyt.com/$script,domain=nytimes.com
nytimes.com##div[data-testid="inline-message"],div[id^="ad-"],div#dock-container,div.pz-ad-box
||cooking.nytimes.com/api/*/access$xmlhttprequest,~third-party
||nzherald.co.nz/sales/public/v*/entitlements$xmlhttprequest,~third-party
nzherald.co.nz##+js(set, window.Fusion.globalContent.isPremium, false)
nzz.ch,themarket.ch##+js(rc, nzzinteraction, .nzzinteraction)
/\/observador\.pt\/(\d{4}|especiais|opiniao)\//$inline-script,domain=observador.pt
paloaltoonline.com##+js(cookie-remover, /^/)
||pastemagazine.com/wp-content/cache/autoptimize/js/autoptimize_*.js$script,~third-party
pb.pl##+js(ra, class, section.o-article-content)
pb.pl##div.o-piano-template-loader-box
pourleco.com##+js(ra, style, div[class*="article-"][style])
pourleco.com##div[data-pleco-poool^="paywall"],div[data-pleco-transition="fade"]
philosophynow.org##+js(cookie-remover, /^/)
profil.at##+js(ra, class|style, div.paywall)
profil.at##div#cfs-paywall-container,div.consentOverlay
||kinja-static.com/assets/*/regwalled-content.*.js$script,domain=qz.com
||reviewjournal.com/wp-content/plugins/*/loader_prod.min.js$script,~third-party
||revistaoeste.com/wp-content/*/js/app.*.js$script,~third-party
||revistaoeste.com/revista/$inline-script
revistaoeste.com##+js(ra, class, div.loading_content)
revistaoeste.com##+js(rc, expandable, div.expandable)
revistaoeste.com##svg.spinner-eclipse
/\.rugbypass\.com\/plus\/\w/$inline-script,domain=rugbypass.com
rugbypass.com##.plus-article-offer
rugbypass.com##+js(rc, premium-fold-bottom, .premium-fold-bottom)
rugbypass.com##+js(rc, fade, .fade)
scholastic.com##+js(ra, class, body.modal-open, stay)
scholastic.com##div.paywallModalElement,div.modal-backdrop
schwaebische.de##+js(ra, style, body[style], stay)
science.org##div.alert-read-limit
science.org##+js(rc, alert-read-limit__overlay, body.alert-read-limit__overlay, stay)
sciencenews.org##+js(cookie-remover, blaize_session)
sciencesetavenir.fr##div.amorce.manual
sciencesetavenir.fr##+js(ra, class|hidden, .user-paying-content)
||scientificamerican.com/api/tinypass.min.js$script,~third-party
scientificamerican.com##+js(cookie-remover, article_meter)
scotsman.com##+js(ra, class, div.premium)
||seattletimes.com/wp-content/*/st-advertising-bundle.js$script,~third-party
||seattletimes.com/wp-content/*/st-user-messaging-main-bundle.js$script,~third-party
sfstandard.com##+js(cookie-remover, zephr-session)
sfstandard.com##div.sticky
slideshare.net##+js(rc, limit-overlay, .limit-overlay)
slideshare.net##+js(set-local-storage-item, /^/, $remove$)
sofrep.com##+js(cookie-remover, sofrep_news_ids)
sofrep.com##+js(ra, class, div.paywall)
sofrep.com##+js(rc, fader, div.fader)
sofrep.com##div.non-paywall,div#paywall_wrap
spektrum.de##+js(rc, pw-premium, article.pw-premium)
spglobal.com##+js(cookie-remover, count)
standardmedia.co.ke##+js(ra, id, div#js-enabled)
standardmedia.co.ke##div#js-disabled
staradvertiser.com##div.fade
staradvertiser.com##+js(ra, style, div#hsa-paywall-content[style])
staradvertiser.com##+js(rc, overflow-hidden, body.overflow-hidden)
startribune.com##div.modal-backdrop
startribune.com##body[class]:style(overflow: auto !important; position: static !important;)
study.com##+js(ra, class, div.faded-content)
study.com##+js(ra, class, div.hidden[ng-non-bindable])
study.com##div.article-cutoff-div
||suomensotilas.fi/wp-content/plugins/epflpw/js/pw.js$script,~third-party
suomensotilas.fi##+js(rc, epfl-pw-obscured, div.epfl-pw-obscured)
||telegraph.co.uk/martech/js/$script,~third-party
tes.com##+js(cookie-remover, /tg_paywall/)
tes.com##+js(ra, class, div.tg-paywall-body-overlay)
tes.com##div.js-paywall-info,div.tg-paywall-message
||texasmonthly.com/script.js$script,~third-party
texasmonthly.com##div.promo-in-body
the-scientist.com##+js(rc, paywall, div.paywall)
the-scientist.com##div.gated-fader,div#Modal
||theartnewspaper.com/_next/static/chunks/pages/access-allowed-*.js$script,~third-party
||theatlantic.com/zephr/decision-engine$xmlhttprequest,~third-party
theatlantic.com##aside#paywall,div[class^="LostInventoryMessage_"]
||cloudfunctions.net/gated-countView$xmlhttprequest,domain=thediplomat.com
thediplomat.com##+js(rc, h-96, article>section.h-96)
thediplomat.com##aside.bg-gradient-to-b
theglobeandmail.com##+js(set, window.Fusion.globalContent._id, 0)
thehindu.com,thehindubusinessline.com##+js(set, window.Adblock, false)
thehindu.com,thehindubusinessline.com##+js(set, window.isNonSubcribed, false)
theimpression.com##+js(rc, blureffect, div.blureffect)
theimpression.com##div#modalpostsubscribe
||theintercept.com$inline-script
thelampmagazine.com##+js(ra, class, div.paywall-gradient)
thelampmagazine.com##section.p-8
||thenewatlantis.com/*/thenewatlantis/js/gate.js$script,~third-party
||thenewatlantis.com/*/thenewatlantis/js/donate.js$script,~third-party
theneweuropean.co.uk##div[data-show-fade-on-noaccess],div[data-show-subs-blocked]
theneweuropean.co.uk##+js(ra, data-show-has-access, div[data-show-has-access])
thepointmag.com##+js(cookie-remover, monthly_history)
thepointmag.com##div.overlay,div#tpopup-
thequint.com##div.zsqcu
thequint.com##+js(ra, class|style, div#story-body-wrapper, stay)
||thesaturdaypaper.com.au/sites/all/modules/custom/node_meter/pw.js$~third-party
/\.thesaturdaypaper\.com\.au\/.+\/(\w+-){3,}/$inline-script,domain=thesaturdaypaper.com.au
thesaturdaypaper.com.au##div.paywall-hard-always-show
||thespectator.com/wp-content/themes/spectator/js/tinypass.js$script,~third-party
thespectator.com##+js(rc, ev-meter-content-class, div.ev-meter-content-class)
thetimes.com##html:style(overflow: auto !important;)
thetimes.com##body:style(overflow: auto !important;)
theweek.com##+js(rc, paywall-locker, div.paywall-locker)
theweek.com##div.kiosq-main-layer
thewrap.com##+js(cookie-remover, blaize_session)
timeshighereducation.com##+js(rc, paywall-fade, div.paywall-fade)
timeshighereducation.com##div.paywall-active
tt.com##+js(rc, exclusive-elem, .exclusive-elem)
tt.com##div.adblock-warning
unherd.com##+js(ra, id, div#premiumcontent)
unherd.com##div#premiumpreview
||news.google.com/swg/_/api/v1/publication/$xmlhttprequest,domain=vice.com
/\.vn\.at\/.+\/\d{4}\//$inline-script,domain=vn.at
||washingtonpost.com/subscribe/static/tetro-client/fusion/tetro.min.js$script,~third-party
||account.winnipegfreepress.com/api/v*/auth/identify$xmlhttprequest,~third-party
winnipegfreepress.com##.billboard-ad-space,.ad,.article-ad,.fixed-sky
! Advance Local
al.com,cleveland.com,lehighvalleylive.com,masslive.com,mlive.com,nj.com,oregonlive.com,pennlive.com,silive.com,syracuse.com##+js(set, window.adiData.entryTags, 0)
! Australian Community Media
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,standard.net.au,theadvocate.com.au,thecourier.com.au,westernadvocate.com.au##+js(rc, subscribe-truncate, .subscribe-truncate)
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,standard.net.au,theadvocate.com.au,thecourier.com.au,westernadvocate.com.au##+js(rc, subscriber-hider, .subscriber-hider)
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,standard.net.au,theadvocate.com.au,thecourier.com.au,westernadvocate.com.au##+js(rc, hidden, div.flex-col div.hidden, stay)
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,standard.net.au,theadvocate.com.au,thecourier.com.au,westernadvocate.com.au##+js(ra, style, html[style], stay)
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,standard.net.au,theadvocate.com.au,thecourier.com.au,westernadvocate.com.au##+js(ra, style, body[style], stay)
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,standard.net.au,theadvocate.com.au,thecourier.com.au,westernadvocate.com.au##+js(ra, class, div[class^="gradient-mask-"], stay)
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,standard.net.au,theadvocate.com.au,thecourier.com.au,westernadvocate.com.au##div.blocker,.story-generic__iframe,div.transition-all,div[id^="headlessui-dialog"]
! Arizent
accountingtoday.com,americanbanker.com,benefitnews.com,bondbuyer.com,dig-in.com,financial-planning.com,nationalmortgagenews.com##+js(set, window.contentGating.ungate, true)
! Condé Nast
/journey/compiler/build-*.js$script,~third-party,domain=architecturaldigest.com|bonappetit.com|cntraveler.com|epicurious.com|gq.com|newyorker.com|vanityfair.com|vogue.co.uk|vogue.com|voguebusiness.com|wired.com
voguebusiness.com##+js(cookie-remover, userId)
! Ajc.com & Cox First Media
ajc.com##+js(ra, class, div.story-paygate_placeholder, stay)
ajc.com##div.video-blocker
ajc.com##+js(set, window.Fusion.globalContent._id, 0)
ajc.com##+js(set, window.Fusion.globalContent.content_restrictions.content_code, 0)
||wgchrrammzv.com/prod/ajc/loader.min.js$script,domain=dayton.com|daytondailynews.com|journal-news.com|springfieldnewssun.com
! Crain Communications
.com/profiles/*/crain_pelcro_user.js$script,~third-party,domain=360dx.com|adage.com|chicagobusiness.com|crainscleveland.com|crainsdetroit.com|crainsgrandrapids.com|crainsnewyork.com|genomeweb.com|modernhealthcare.com|plasticsnews.com|precisionmedicineonline.com|sustainableplastics.com|tirebusiness.com|utech-polyurethane.com
.com/*/js_$script,~third-party,domain=pionline.com|rubbernews.com
pionline.com,rubbernews.com##+js(ra, class, body[class], stay)
european-rubber-journal.com##+js(rc, truncated, div.truncated)
european-rubber-journal.com##div.article-overlay,div.gradient
modernhealthcare.com##+js(rc, sponsored-article, div.sponsored-article)
! GEDI.it sites
||huffingtonpost.it/*/news/$inline-script
||lastampa.it/*/news/$inline-script
huffingtonpost.it,lastampa.it##+js(cookie-remover, blaize_session)
huffingtonpost.it,lastampa.it##aside#widgetDP,div[id^="adv"]
||scripts.repubblica.it/pw/pw.js$script,domain=italian.tech|moda.it
italian.tech,moda.it##div#ph-paywall:remove()
italian.tech,moda.it##+js(ra, style, div#article-body, stay)
! Groupe La Dépêche
centrepresseaveyron.fr,journaldemillau.fr,ladepeche.fr,lindependant.fr,midilibre.fr,nrpyrenees.fr,petitbleu.fr,rugbyrama.fr##+js(ra, style|data-state, div.p402_premium)
centrepresseaveyron.fr,journaldemillau.fr,ladepeche.fr,lindependant.fr,midilibre.fr,nrpyrenees.fr,petitbleu.fr,rugbyrama.fr##div.paywall
! Groupe SudOuest.fr
sudouest.fr,charentelibre.fr,larepubliquedespyrenees.fr##div.article-premium-footer,div.footer-premium,div.article-body-wrapper.visible-not-premium,div.pub,div.ph-easy-subscription
sudouest.fr,charentelibre.fr,larepubliquedespyrenees.fr##+js(rc, visible-premium, div.visible-premium)
! Groupe Nice-Matin
||nicematin.com/build/js/viewpay.*.js$script,domain=monacomatin.mc|nicematin.com|varmatin.com
! Grupo El Comercio
||diariocorreo.pe/pf/dist/engine/react.js$script,~third-party
||elcomercio.pe/pf/dist/engine/react.js$script,~third-party
||gestion.pe/pf/dist/engine/react.js$script,~third-party
diariocorreo.pe,elcomercio.pe,gestion.pe##+js(ra, class|style, .paywall)
diariocorreo.pe,elcomercio.pe,gestion.pe##+js(rc, story-contents--fade, p.story-contents--fade)
diariocorreo.pe,elcomercio.pe,gestion.pe##div[class^="content_gpt"]
! Grupo El Mercurio
||elmercurio.com/assets/js/merPramV2.js$script,~third-party
||elmercurio.com/assets/js/vendor/modal.js$script,~third-party
||emol.cl/assets/js/merPramV2.js$script,domain=elmercurio.com
||emol.cl/assets/js/vendor/modal.js$script,domain=elmercurio.com
elmercurio.com##+js(rc, lessreadmore, article.lessreadmore, stay)
elmercurio.com##div[id*="bt_readmore_"]
||australvaldivia.cl/impresa/*/assets/vendor.js$script,~third-party
||mercuriovalpo.cl/impresa/*/assets/vendor.js$script,~third-party
||pasedigital.cl/API/User/Status$script,domain=australvaldivia.cl|mercuriovalpo.cl
! Grupo Prensa Ibérica
diaridegirona.cat,diariocordoba.com,diariodeibiza.es,diariodemallorca.es,elcorreogallego.es,elcorreoweb.es,eldia.es,elperiodico.com,elperiodicodearagon.com,elperiodicoextremadura.com,elperiodicomediterraneo.com,epe.es,farodevigo.es,informacion.es,laopinioncoruna.es,laopiniondemalaga.es,laopiniondemurcia.es,laopiniondezamora.es,laprovincia.es,levante-emv.com,lne.es,mallorcazeitung.es,regio7.cat,superdeporte.es##+js(ra, class, div.ft-helper-closenews, stay)
! Gruppo SAE
gazzettadimodena.it,gazzettadireggio.it,iltirreno.it,lanuovaferrara.it,lanuovasardegna.it##+js(cookie-remover, /__mtr$/)
gazzettadimodena.it,gazzettadireggio.it,iltirreno.it,lanuovaferrara.it,lanuovasardegna.it##div.MuiSnackbar-root
! Hearst Communications (magazines)
.com/_assets/jam/$script,~third-party,domain=bicycling.com|cosmopolitan.com|countryliving.com|delish.com|elle.com|elledecor.com|esquire.com|goodhousekeeping.com|harpersbazaar.com|housebeautiful.com|menshealth.com|oprahdaily.com|popularmechanics.com|prevention.com|roadandtrack.com|runnersworld.com|townandcountrymag.com|womenshealthmag.com
! Il Messaggero (+ regional)
||cedscdn.it/*/PaywallMeter.js$script,domain=corriereadriatico.it|ilgazzettino.it|ilmattino.it|ilmessaggero.it|quotidianodipuglia.it
||cedsdigital.it/*/PaywallMeter.js$script,domain=corriereadriatico.it|ilgazzettino.it|ilmattino.it|ilmessaggero.it|quotidianodipuglia.it
corriereadriatico.it,ilgazzettino.it,ilmattino.it,ilmessaggero.it,quotidianodipuglia.it##+js(ra, subscriptions-section, [subscriptions-section="content"])
corriereadriatico.it,ilgazzettino.it,ilmattino.it,ilmessaggero.it,quotidianodipuglia.it##[subscriptions-section="content-not-granted"]
! Industry Dive
||*dive.com/static/js/dist/contentGate.bundle.js$script,~third-party
.com/static/js/dist/contentGate.bundle.js$script,~third-party,domain=cfo.com|pharmavoice.com|proformative.com|socialmediatoday.com
! Landwirtschaftsverlag
profi.de,topagrar.com,wochenblatt.com##+js(ra, class|style, div.paywall-full-content[style])
profi.de,wochenblatt.com##div.m-paywall__textFadeOut,div[id^="paymentprocess-"]
||topagrar.com/*/news/$inline-script
topagrar.com##div.paywall-package
! Madsack sites
cz.de,dewezet.de,dieharke.de,dnn.de,gnz.de,goettinger-tageblatt.de,haz.de,kn-online.de,landeszeitung.de,ln-online.de,lvz.de,maz-online.de,ndz.de,neuepresse.de,op-marburg.de,ostsee-zeitung.de,paz-online.de,remszeitung.de,rga.de,rnd.de,saechsische.de,siegener-zeitung.de,szlz.de,sn-online.de,solinger-tageblatt.de,tah.de,torgauerzeitung.de,waz-online.de##+js(set, window.Fusion.globalContent.isPaid, false)
! Maine Trust for Local News
||bc.*.com/script.js$script,~third-party,domain=centralmaine.com|pressherald.com|sunjournal.com
! McClatchy Group
||mcclatchy.com/mcc-paywall.js$script,third-party
! Mediahuis Belgie
/extra/assets/resources/js/zephrIntegration.js$script,~third-party,domain=gva.be|hbvl.be|nieuwsblad.be|standaard.be
! Mediahuis Noord
||ndcmediagroep.nl/js/evolok/$script,third-party
.nl/_/zh/worker$xmlhttprequest,~third-party
! MediaNews Group
.com/wp-content/plugins/loader-wp/static/loader.min.js$script,~third-party,domain=bostonherald.com|denverpost.com|eastbaytimes.com|mercurynews.com|ocregister.com|pressenterprise.com|sandiegouniontribune.com|twincities.com
bostonherald.com,denverpost.com,eastbaytimes.com,mercurynews.com,ocregister.com,pressenterprise.com,sandiegouniontribune.com,twincities.com##+js(ra, subscriptions-section, [subscriptions-section="content"])
bostonherald.com,denverpost.com,eastbaytimes.com,mercurynews.com,ocregister.com,pressenterprise.com,sandiegouniontribune.com,twincities.com##[subscriptions-section="content-not-granted"]
! Motor Presse Stuttgart
.de/thenewsbar/config/$xmlhttprequest,~third-party,domain=aerokurier.de|auto-motor-und-sport.de|flugrevue.de|motorradonline.de|womenshealth.de
! New York Magazine sites
||zeddit.com/*/SiteScript.js$script,third-party,domain=curbed.com|grubstreet.com|nymag.com|thecut.com|vulture.com
! NHST Media Group
||subscription-static-global.nhst.tech$script,domain=tradewindsnews.com
! Persgroep
/temptation/resolve$xmlhttprequest,~third-party,domain=demorgen.be|flair.nl|humo.be|libelle.nl|margriet.nl|parool.nl|trouw.nl|volkskrant.nl
||temptation.*/temptation.js$script,~third-party,domain=demorgen.be|flair.nl|humo.be|libelle.nl|margriet.nl|parool.nl|trouw.nl|volkskrant.nl
@@||myprivacy-static.dpgmedia.net/consent.js$script,third-party
@@/wrapperMessagingWithoutDetection.js$script,~third-party,domain=demorgen.be|flair.nl|humo.be|libelle.nl|margriet.nl|parool.nl|trouw.nl|volkskrant.nl
! DPG ADR (no scroll)
||temptation.*/temptation.js$script,~third-party,domain=ad.nl|bd.nl|bndestem.nl|destentor.nl|ed.nl|gelderlander.nl|pzc.nl|tubantia.nl|hln.be
! Private Media Australia
crikey.com.au,smartcompany.com.au,themandarin.com.au##+js(cookie-remover, blaize_session)
! Ringier Axel Springer Polska
auto-swiat.pl,businessinsider.com.pl,forbes.pl,komputerswiat.pl,newsweek.pl,onet.pl##+js(ra, class|style, div.contentPremium[style])
businessinsider.com.pl##div#content-premium-offer
! Roularta Media Groep
||artsenkrant.com/js/responsive/rmgModal.js$script,~third-party
||artsenkrant.com/js/responsive/rmgPaywall.js$script,~third-party
artsenkrant.com##div.article-body > p
artsenkrant.com##+js(ra, class, div.article-body > div)
artsenkrant.com##+js(rc, locked, body.locked)
artsenkrant.com,femmesdaujourdhui.be,flair.be,knack.be,kw.be,levif.be,libelle.be##div[id*="wall-modal"]
artsenkrant.com,femmesdaujourdhui.be,flair.be,knack.be,kw.be,levif.be,libelle.be##+js(ra, class|style, html, stay)
beleggersbelangen.nl##+js(rc, no-account, div.no-account)
beleggersbelangen.nl##+js(ra, style, div.content-inner[style])
beleggersbelangen.nl##div.unlimited-access
!#if (env_firefox)
/\.(femmesdaujourdhui|flair|knack|levif|libelle)\.be\/.+\/(\w+-){2,}/$inline-script
!#endif
! Tamedia.ch Group
24heures.ch,bazonline.ch,derbund.ch,tagesanzeiger.ch,tdg.ch##+js(cookie-remover, xbc)
! TechTarget sites
computerweekly.com,lemagit.fr,techtarget.com##+js(rc, paywall, div.paywall, stay)
computerweekly.com,lemagit.fr,techtarget.com##p#firstP,div#inlineRegistrationWrapper
! The Epoch Times sites (main + cz|de|fr|il|jp|ro)
||theepochtimes.com/rules/get$xmlhttprequest,~third-party
||epochbase.com/libs/paywall*.js$script,third-party
||epochbase.com/rules/get$xmlhttprequest,third-party
||epochbase.eu/rules/get$xmlhttprequest,third-party
/\/epoch\.org\.il\/.+\/\d{5,}\//$inline-script,domain=epoch.org.il
! Tribune Publishing Company
.com/wp-content/plugins/loader-wp/static/loader.min.js$script,~third-party,domain=baltimoresun.com|capitalgazette.com|chicagotribune.com|courant.com|dailypress.com|mcall.com|nydailynews.com|orlandosentinel.com|pilotonline.com|sun-sentinel.com
! additional adblocker-fix
||flowerstreatment.com^$third-party
||guidecent.com^$script,third-party
||memberstack.com/scripts/v*/memberstack.js$script,third-party
||assets.guim.co.uk/assets/SignInGate*.js$script,domain=theguardian.com
theguardian.com##[name="SlotBodyEnd"],div[data-cy="contributions-liveblog-epic"]
@@||consentmanager.net$script,third-party
#@#.cmpwrapper
@@||sdk.privacy-center.org^$script,third-party
@@/wrapperMessagingWithoutDetection.js$script,~third-party,domain=handelsblatt.com
!##div#didomi-host
##+js(rc, didomi-popup-open, body.didomi-popup-open)
! flip-pay
||flip-pay.com/*/flip-pay.js$script,third-party,domain=clareecho.ie|thedailymash.co.uk
clareecho.ie##+js(rc, td-post-content, div.td-post-content)
! custom sites
.com/webfiles/*/js/metering.js$script,third-party,domain=hbook.com|libraryjournal.com|slj.com
20minutes.fr##+js(rc, qiota_reserve, div.qiota_reserve)
||20minutes.fr/v-ajax/subscribe-modal$xmlhttprequest,~third-party
aaii.com##+js(rc, fadeout, .fadeout)
aaii.com##.greybox-signup
aftenposten.no##div.hyperion-css-1cc2qe9,div[class^="advertory-"],button[aria-controls="summary-details"]
aftenposten.no##body:style(overflow: auto !important)
aftenposten.no##+js(ra, class, div#summary-details)
amboss.com##+js(cookie-remover, ssobma)
amboss.com##div#optly-remaining-articles-banner,div[class^="InfoBanner_InfoBanner"]
||arktimes.com/wp-content/plugins/newspack-plugin/dist/memberships-gate-metering.js$script,~third-party
||artsprofessional.co.uk/*/js/content_paywall.js$script,~third-party
||atribuna.com.br/assets/js-v*/story.js$script,~third-party
babi.sh##+js(ra, style, div[style*="filter:blur"], stay)
babi.sh##+js(ra, style, div[style*="; overflow: hidden"][style*="; height:"], stay)
babi.sh##div[style="width: 100%; opacity: 1; transform: none;"]
bisnow.com##+js(ra, style, div.story-container > p[style], stay)
bisnow.com##div.storyLogin
bizwest.com##div.fp-paywall
bizwest.com##+js(ra, class, div.fp-content)
boredpanda.com##+js(rc, open-list-items, div.open-list-items)
boredpanda.com##div#show-all-images-block-premium
brainly.com,brainly.com.br##+js(set-local-storage-item, /^/, $remove$)
||account.brandonsun.com/api/v*/auth/identify$xmlhttprequest,~third-party
brusselstimes.com##+js(ra, style, div[style*="height: 0;"], stay)
businessden.com,richmondbizsense.com##+js(ra, class, div.cp-paywall-user)
businessden.com,richmondbizsense.com##div#copperpress-paywall
cmcmarkets.com##+js(rc, activePaywall, .activePaywall)
||cnv-medien.de$inline-script
connexionfrance.com##+js(cookie-remover, /^/)
connexionfrance.com##div#subscribe-banner
||dailymail.co.uk/static/mol-adverts/$script
divisare.com##div.blocker
divisare.com##+js(ra, style, body[style], stay)
dominionpost.com##+js(rc, entry-content, article > div.entry-content)
elfinancierocr.com##+js(ra, style, div.article-body-wrapper__styled[style])
elfinancierocr.com##div.post
energy-storage.news,pv-tech.org##+js(ra, class, div.wkwp-paywall)
energy-storage.news,pv-tech.org##div.wkwp-paywall-block
epaper.indiatimes.com##div.epaperBlockerWrap
||eviemagazine.com/api/trpc/post.paywall$xmlhttprequest,~third-party
expressandstar.com,shropshirestar.com##+js(set, window.Fusion.globalContent.paywallStatus, false)
||fokus.se/app/plugins/sesamy-fpg/assets/js/sesamy-fpg.js$script,~third-party
||golf.com/wp-content/themes/golf/compiled/js/wsumApp.js$script,~third-party
gothamist.com##+js(rc, leadin, div.leadin, stay)
gothamist.com##div.wall-wrapper
hcn.org##+js(ra, content, meta[name="UID"])
heatmap.news##+js(ra, style, div.body-description, stay)
heatmap.news##div.regwall-container
inman.com##+js(rc, paywalled-block, .paywalled-block)
inman.com##+js(ra, class, div.entry-content-inner)
inman.com##div.content-wrap > div:not([class]):style(margin: 5% !important)
inman.com##.ism-article-block
||cloudfront.net/imonkey-blog-*.min.js$script,domain=insidermonkey.com
ipsoa.it##+js(ra, style, div.paywall)
||jewishinsider.com/wp-content/themes/jewish-insider/js/owl.carousel.min.js$script,~third-party
||jornaldocomercio.com/*/json/paywall.json$xmlhttprequest,~third-party
jornaljoca.com.br##+js(acis, $, paywall)
kunststoffe.de,qz-online.de##+js(ra, style, div[style^="filter: blur"], stay)
kunststoffe.de,qz-online.de##dialog#paywall-dialog
||lapost.com$inline-script
lapost.com##+js(ra, style, div.article-content, stay)
||lasvegasadvisor.com/opt/*.js$script,~third-party
||lasvegasadvisor.com/js/access.min.js$script,~third-party
lavialibera.it##+js(ra, class, div.text-preview)
lavialibera.it##div.save_modal
legalbites.in##+js(ra, class, div.hide.paywall-content)
legalbites.in##div#subscription_paid_message,div.restricted_message > div.story
lepetitjournal.net##.message-restricted-woocommerce
lepetitjournal.net##+js(rc, excerpt, div.excerpt)
lydogbillede.dk,lydogbilde.no##+js(rc, thecontent, div.thecontent)
lydogbillede.dk,lydogbilde.no##+js(ra, style, div#MoreLink_content-container[style])
lydogbillede.dk,lydogbilde.no##div.paywallbox,div#MoreLink_fade-out-div
marketnews.com##+js(ra, class, div.body-description)
||cloudfront.net/js/prometeo-media/$script,domain=menorca.info|ultimahora.es
meritnation.com##.view-full-answer
meritnation.com##+js(rc, maxHeight75px, div.exp_content.maxHeight75px)
||moscout.com$inline-script
museumsassociation.org##+js(rc, paywall, body.paywall)
museumsassociation.org##+js(ra, style, body[style], stay)
museumsassociation.org##div#paywall-wrapper,div.advertising
nacion.com##+js(ra, style, div.article-body-wrapper__styled[style], stay)
nacion.com##div.post
narcity.com##+js(ra, style, div.body-description[style], stay)
narcity.com##div#login-wall,div#overlay,div.brid-container,div.brandsnippet-article,div[class$='ad-wrapper']
||newbostonpost.com/*/paywall/js/main.js$script,~third-party
newoxfordreview.org##+js(rc, not-viewable, div.not-viewable)
nu.nl##+js(rc, authorized-content, div.authorized-content, stay)
nu.nl##+js(rc, semi-authorized-content, div.semi-authorized-content, stay)
nu.nl##article#LOGIN
||odt.co.nz/bwtw/scripts/tw.js$script,~third-party
odt.co.nz##+js(ra, property, div[property="content:encoded"])
||opovo.com.br/*/js/auth/auth_new_menu.min.js$script,~third-party
||pebmed.com.br/wp-content/*/paywall/dist/js/app.js$script,~third-party
||perspectivemedia.com/wp-admin/admin-ajax.php$xmlhttprequest,~third-party
perspectivemedia.com##div.hustle-ui
popbitch.com##+js(ra, class, div[class*="-premium"])
psypost.org##+js(cookie-remover, issuem_lp)
publishersweekly.com##+js(ra,class|style,div#contentdiv.loggedInOnly,stay)
publishersweekly.com##div#contentdiv.loggedOutOnly
||rdhmag.com$inline-script
rockdelux.com##+js(ra, class|style, body, stay)
rockdelux.com##+js(ra, style, div#body, stay)
rockdelux.com##div.bg-paywall
rotowire.com##+js(ra, class, div.pw-content)
rotowire.com##div.paywall-full,div.article-preview-fader
||theschooloflife.com/app/plugins/*/woocommerce.min.js$script,~third-party
||shrm.org/*/js/paywall*.js$script,~third-party
skepticalinquirer.org##+js(rc, google-bot, div.google-bot, stay)
/\.solicitorsjournal\.com\/_next\/static\/chunks\/\d.+\.js/$script,domain=solicitorsjournal.com,~third-party
||spectrejournal.com/wp-content/plugins/elementor/*/dialog.min.js$script,~third-party
splainer.in##+js(rc, hide-section, .hide-section)
splainer.in##.subscription-prompt
||splinter.com/wp-content/themes/pastemagazine/js/pm_custom.js$script,~third-party
standcolumbia.org##+js(ra, class, div.stu-lock-content, stay)
standcolumbia.org##div.stu-blur-overlay
stateaffairs.com##div.c-memberships-message
stateaffairs.com##+js(rc, access-restricted, body.access-restricted)
strangematters.coop##+js(cookie-remover, pmpro_lpv_count)
subscriptioninsider.com##+js(rc, dialog-prevent-scroll, body.dialog-prevent-scroll, stay)
subscriptioninsider.com##div.dialog-widget
!#if (adguard_app_ios)
/\.subscriptioninsider\.com\/.+\/(\w+-){3,}/$inline-script,domain=subscriptioninsider.com
!#endif
thecore.in##+js(ra, class, div.paywall-content)
thecore.in##div.story,div#subscription_paid_message,div#footer_login_wall
thecountersignal.com##+js(ra, class, body.single div.elementor-widget-container)
||thedriftmag.com/wp-content/plugins/drift-paywall-plugin/$script,~third-party
thegardenisland.com##+js(ra, style, #single-paywall)
thegardenisland.com###single-login-box,#single-excerpt
aap.thestreet.com##+js(rc, is-paywalled, body.is-paywalled)
realmoney.thestreet.com##+js(cookie-remover, /^PWT/)
solarserver.de##+js(ra, style, div.paywall)
solarserver.de##+js(ra, class, div.paywall-blurred)
solarserver.de##div.paywall-box
stockunlock.com##div[class*="-root"][class*="css-"]:style(filter: none !important; pointer-events: auto !important)
stockunlock.com##div.css-coxdc8
||thenationalpulse.com/wp-content/*/assets/js/national-pulse.js$script,~third-party
||thetablet.org$inline-script
thetablet.org##+js(rc, gated-content, body.gated-content)
tidningenridsport.se##+js(ra, class|style, div.mctos)
tidningenridsport.se##+js(rc, cli-barmodal-open, body.cli-barmodal-open)
tidningenridsport.se##div.locked
trailsoffroad.com##.paywall
vl.no##+js(set, window.Fusion.globalContent.content_restrictions.content_code, 0)
||zeitzeichen.net/sites/default/files/js/js_*.js$script,~third-party
! General (amp)
||ampproject.org/*/amp-access-$script,domain=~cambridge.org|~cmjornal.pt
||ampproject.org/*/amp-subscriptions-$script
@@||ampproject.org/v0/amp-consent-$script
artnet.com,bostonglobe.com,dallasnews.com,fortune.com,latimes.com,sandiegouniontribune.com,staradvertiser.com,theathletic.com##+js(ra, subscriptions-section, [subscriptions-section="content"])
artnet.com,bostonglobe.com,dallasnews.com,fortune.com,latimes.com,sandiegouniontribune.com,staradvertiser.com,theathletic.com##[subscriptions-section="content-not-granted"]
amp.usatoday.com,digiday.com,inc42.com,indianexpress.com,indiatoday.in,mid-day.com,telegraph.co.uk##+js(ra, amp-access-hide, [amp-access][amp-access-hide])
theathletic.com##div[amp-access*="NOT granted"]
! French/Belgian sites
amp.elle.fr,challenges.fr,sciencesetavenir.fr##+js(ra, amp-access-hide, [amp-access][amp-access-hide])
! Groupe IPM
dhnet.be,lalibre.be,lavenir.net##+js(rc, is-preview, div.preview)
dhnet.be,lalibre.be,lavenir.net##+js(rc, is-hidden, div.is-hidden)
dhnet.be,lalibre.be,lavenir.net##div.ap-AdContainer,div.ap-Outbrain
! Australia News Corp
adelaidenow.com.au,cairnspost.com.au,codesports.com.au,couriermail.com.au,dailytelegraph.com.au,geelongadvertiser.com.au,goldcoastbulletin.com.au,heraldsun.com.au,ntnews.com.au,theaustralian.com.au,thechronicle.com.au,themercury.com.au,townsvillebulletin.com.au,weeklytimesnow.com.au##+js(ra, subscriptions-section, [subscriptions-section="content"])
adelaidenow.com.au,cairnspost.com.au,codesports.com.au,couriermail.com.au,dailytelegraph.com.au,geelongadvertiser.com.au,goldcoastbulletin.com.au,heraldsun.com.au,ntnews.com.au,theaustralian.com.au,thechronicle.com.au,themercury.com.au,townsvillebulletin.com.au,weeklytimesnow.com.au##[subscriptions-section="content-not-granted"]
! Italian sites
corriere.it,ilfattoquotidiano.it,ilfoglio.it##+js(ra, subscriptions-section, [subscriptions-section="content"])
corriere.it,ilfattoquotidiano.it,ilfoglio.it##[subscriptions-section="content-not-granted"]
! Quotidiano.net (+ regional)
ilgiorno.it,ilrestodelcarlino.it,iltelegrafolivorno.it,lanazione.it,quotidiano.net##+js(ra, amp-access-hide, [amp-access][amp-access-hide])
! McClatchy Group
amp.bnd.com,amp.charlotteobserver.com,amp.elnuevoherald.com,amp.fresnobee.com,amp.kansas.com,amp.kansascity.com,amp.kentucky.com,amp.mcclatchydc.com,amp.miamiherald.com,amp.newsobserver.com,amp.sacbee.com,amp.star-telegram.com,amp.thestate.com,amp.tri-cityherald.com##+js(ra, subscriptions-section, [subscriptions-section="content"])
amp.bnd.com,amp.charlotteobserver.com,amp.elnuevoherald.com,amp.fresnobee.com,amp.kansas.com,amp.kansascity.com,amp.kentucky.com,amp.mcclatchydc.com,amp.miamiherald.com,amp.newsobserver.com,amp.sacbee.com,amp.star-telegram.com,amp.thestate.com,amp.tri-cityherald.com##[subscriptions-section="content-not-granted"]
amp.sacbee.com##+js(ra, subscriptions-action, div[subscriptions-action][subscriptions-display="NOT data.hasError"])
! Nine Entertainment (Australia)
amp.brisbanetimes.com.au,amp.smh.com.au,amp.theage.com.au,amp.watoday.com.au##+js(ra, subscriptions-section, [subscriptions-section="content"])
amp.brisbanetimes.com.au,amp.smh.com.au,amp.theage.com.au,amp.watoday.com.au##[subscriptions-section="content-not-granted"]
! Spanish/Portugese/Brazilian/Colombian sites
amp.elmundo.es,amp.expansion.com,amp.marca.com,elespanol.com,elespectador.com,em.com.br,folha.uol.com.br,gazetadopovo.com.br##+js(ra, subscriptions-section, [subscriptions-section="content"])
amp.elmundo.es,amp.expansion.com,amp.marca.com,elespanol.com,elespectador.com,em.com.br,folha.uol.com.br,gazetadopovo.com.br##[subscriptions-section="content-not-granted"]
eldiario.es,elpais.com,estadao.com.br,record.pt,sabado.pt##+js(ra, amp-access-hide, [amp-access][amp-access-hide])
! Grupo Vocento
abc.es,canarias7.es,diariosur.es,diariovasco.com,elcomercio.es,elcorreo.com,eldiariomontanes.es,elnortedecastilla.es,hoy.es,ideal.es,larioja.com,lasprovincias.es,laverdad.es,lavozdigital.es##+js(ra, amp-access-hide, [amp-access][amp-access-hide])
abc.es##+js(ra, id, body#top)

View file

@ -1,120 +0,0 @@
==================================================
Filename : bypass-paywalls-chrome-clean-4.0.0.0-kiwi-custom.crx
SHA-256 : 15ce0b3d360f2605a23eac7a43607e8d38c266becdf5b09163b6da5f2d45b530
Modified Time : 12-1-2025 21:35:39
File Size : 216.843
Extension : crx
==================================================
==================================================
Filename : bypass-paywalls-chrome-clean-4.0.7.0.crx
SHA-256 : 6097e49af1c936f10d59808ade4e2f62b26d0a28e728e0a642cc460cdc5a6b34
Modified Time : 9-3-2025 19:21:14
File Size : 233.745
Extension : crx
==================================================
==================================================
Filename : bypass-paywalls-chrome-clean-4.0.8.0.crx
SHA-256 : 816ac9687d39e974d5a3805984e3769a553a670a9ba36cdbf02bb7c025880bf5
Modified Time : 23-3-2025 20:35:37
File Size : 234.511
Extension : crx
==================================================
==================================================
Filename : bypass-paywalls-chrome-clean-4.0.8.2.crx
SHA-256 : 78f6d4f45096b31e63416acbee2e8a03bf7b3aed6e35ae7bde9299300302ba58
Modified Time : 28-3-2025 13:55:03
File Size : 234.949
Extension : crx
==================================================
==================================================
Filename : bypass-paywalls-chrome-clean-master.zip
SHA-256 : f0e7489bc588ef6b5b369cdf513bfc8ea8af4d65b2c46b739d17061b66a8f02d
Modified Time : 3-4-2025 18:52:30
File Size : 246.052
Extension : zip
==================================================
==================================================
Filename : bypass-paywalls-firefox-clean-master.zip
SHA-256 : f228280218cf3fdda1b06e854c6644b93b8985c35adf0047f8b96d77d8222e67
Modified Time : 3-4-2025 18:52:38
File Size : 242.794
Extension : zip
==================================================
==================================================
Filename : bypass_paywalls_clean-4.0.7.0-custom.xpi
SHA-256 : 133ae8b9911594bc83d822c509b5c6839742c916628ce3a2a4809944aed5555d
Modified Time : 9-3-2025 19:31:39
File Size : 239.626
Extension : xpi
==================================================
==================================================
Filename : bypass_paywalls_clean-4.0.7.0.xpi
SHA-256 : 7de4ed110771380dac22eecf07806c9638f0a3237cc8867da57ad0fc07a9c8c3
Modified Time : 18-3-2025 11:23:32
File Size : 245.272
Extension : xpi
==================================================
==================================================
Filename : bypass_paywalls_clean-4.0.8.0-custom.xpi
SHA-256 : 738dc49aa2172b19a35cb4386ab66b13a30ccb5c019226321854d2ebff3d7e72
Modified Time : 23-3-2025 20:44:11
File Size : 240.305
Extension : xpi
==================================================
==================================================
Filename : bypass_paywalls_clean-4.0.8.0.xpi
SHA-256 : 943ea53a5cc7298e33339f5defb47734a53ed090a122fb4418e53f2b4ef8faca
Modified Time : 28-3-2025 13:53:03
File Size : 245.981
Extension : xpi
==================================================
==================================================
Filename : bypass_paywalls_clean-4.0.8.2-custom.xpi
SHA-256 : 8a15dbb7c782abc6403eef8e51d542040ddecfc2f7fe37ec0db9b57cdffc1f4c
Modified Time : 28-3-2025 13:56:01
File Size : 240.334
Extension : xpi
==================================================
==================================================
Filename : bypass_paywalls_clean-4.0.8.2.xpi
SHA-256 : 32ad6a224a95726610e053336d49f5639674b9e011a5256ba7b4e0127561f9c1
Modified Time : 28-3-2025 13:53:17
File Size : 246.012
Extension : xpi
==================================================
==================================================
Filename : bypass_paywalls_clean-4.0.8.3-custom.xpi
SHA-256 : 8d142c3f3d6893d4c65a5a3613732b38428772d0ac75b52cd2e573f47865cb88
Modified Time : 3-4-2025 19:01:09
File Size : 241.824
Extension : xpi
==================================================
==================================================
Filename : bypass_paywalls_clean-4.0.8.3.xpi
SHA-256 : 00a32a64964010d7239b2abebe49851b90e125c574b8c5fc8407c06c9c7a1ef5
Modified Time : 3-4-2025 19:00:05
File Size : 247.481
Extension : xpi
==================================================
==================================================
Filename : bypass_paywalls_clean-latest.xpi
SHA-256 : 00a32a64964010d7239b2abebe49851b90e125c574b8c5fc8407c06c9c7a1ef5
Modified Time : 3-4-2025 19:00:05
File Size : 247.481
Extension : xpi
==================================================

1621
userscript/bpc.de.user.js Normal file

File diff suppressed because it is too large Load diff

5274
userscript/bpc.en.user.js Normal file

File diff suppressed because it is too large Load diff

1140
userscript/bpc.es.pt.user.js Normal file

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,350 @@
// ==UserScript==
// @name Bypass Paywalls Clean - fi/se
// @version 4.0.8.1
// @description Bypass Paywalls of news sites
// @author magnolia1234
// @downloadURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.fi.se.user.js
// @updateURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.fi.se.user.js
// @homepageURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters
// @supportURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters
// @license MIT; https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=LICENSE
// @match *://*.berlingske.dk/*
// @match *://*.dn.se/*
// @match *://*.etc.se/*
// @match *://*.suomensotilas.fi/*
// @connect archive.fo
// @connect archive.is
// @connect archive.li
// @connect archive.md
// @connect archive.ph
// @connect archive.vn
// @grant GM.xmlHttpRequest
// ==/UserScript==
(function() {
//'use strict';
var func_post;
var fetch_headers = {};
window.setTimeout(function () {
var domain;
var mobile = window.navigator.userAgent.toLowerCase().includes('mobile');
var csDoneOnce;
var cs_param = {};
var overlay = document.querySelector('body.didomi-popup-open');
if (overlay)
overlay.classList.remove('didomi-popup-open');
var ads = 'div.OUTBRAIN, div[id^="taboola-"], div.ad-container, div[class*="-ad-container"], div[class*="_ad-container"], div.arc_ad, div[id^="poool-"], amp-ad, amp-embed[type="mgid"], amp-embed[type="outbrain"], amp-embed[type="taboola"]';
hideDOMStyle(ads, 10);
if (matchDomain('berlingske.dk')) {
let paywall = document.querySelector('div#paywall');
removeDOMElement(paywall);
let ads = 'div.advert-unit';
hideDOMStyle(ads);
}
else if (matchDomain('dn.se')) {
let url = window.location.href;
getArchive(url, 'div.paywall-wrapper', '', 'article');
let ads = 'div.bad';
hideDOMStyle(ads);
}
else if (matchDomain('etc.se')) {
let paywall = document.querySelector('section.prose-feature > section.teaser-section');
if (paywall) {
paywall.classList.remove('teaser-section');
paywall.parentNode.querySelectorAll('.hidden').forEach(e => e.classList.remove('hidden'));
}
let ads = 'div[class$="-ad"], article section.font-sans';
hideDOMStyle(ads);
let video_iframes = document.querySelectorAll('div.embed-block > iframe[width][height]');
for (let elem of video_iframes) {
if (elem.width > 1000) {
let ratio = elem.width / (mobile ? 320 : 640);
elem.width = elem.width / ratio;
elem.height = elem.height / ratio;
}
}
}
else if (matchDomain('suomensotilas.fi')) {
let obscured = document.querySelector('div.epfl-pw-obscured');
if (obscured)
obscured.classList.remove('epfl-pw-obscured');
}
}, 1000);
// General Functions
function matchDomain(domains, hostname) {
var matched_domain = false;
if (!hostname)
hostname = window.location.hostname;
if (typeof domains === 'string')
domains = [domains];
domains.some(domain => (hostname === domain || hostname.endsWith('.' + domain)) && (matched_domain = domain));
return matched_domain;
}
function removeDOMElement(...elements) {
for (let element of elements) {
if (element)
element.remove();
}
}
function hideDOMElement(...elements) {
for (let element of elements) {
if (element)
element.style = 'display:none !important;';
}
}
function hideDOMStyle(selector, id = 1) {
let style = document.querySelector('head > style#ext'+ id);
if (!style && document.head) {
let sheet = document.createElement('style');
sheet.id = 'ext' + id;
sheet.innerText = selector + ' {display: none !important;}';
document.head.appendChild(sheet);
}
}
function addStyle(css, id = 1) {
let style = document.querySelector('head > style#add'+ id);
if (!style && document.head) {
let sheet = document.createElement('style');
sheet.id = 'add' + id;
sheet.innerText = css;
document.head.appendChild(sheet);
}
}
function clearPaywall(paywall, paywall_action) {
if (paywall) {
if (!paywall_action)
removeDOMElement(...paywall);
else {
for (let elem of paywall) {
if (paywall_action.rm_class)
elem.classList.remove(paywall_action.rm_class);
else if (paywall_action.rm_attrib)
elem.removeAttribute(paywall_action.rm_attrib);
}
}
}
}
function getSelectorLevel(selector) {
if (selector.replace(/,\s+/g, ',').match(/[>\s]+/))
selector = selector.replace(/,\s+/g, ',').split(',').map(x => x.match(/[>\s]+/) ? x + ', ' + x.split(/[>\s]+/).pop() : x).join(', ');
return selector;
}
function getArticleSrc(url, url_src, proxy, base64, selector, text_fail = '', selector_source = selector, selector_archive = selector) {
let url_fetch = url_src || url;
GM.xmlHttpRequest({
method: "GET",
url: url_fetch,
headers: fetch_headers,
onload: function (response) {
let html = response.responseText;
if (proxy && base64) {
html = decode_utf8(atob(html));
selector_source = 'body';
}
let recursive;
if (url.startsWith('https://archive.')) {
if (url_fetch.includes('/https')) {
if (html.includes('<div class="TEXT-BLOCK"')) {
url_src = html.split('<div class="TEXT-BLOCK"')[1].split('</div>')[0].split('href="')[1].split('"')[0];
getArticleSrc(url, url_src, proxy, base64, selector, text_fail, selector_source, selector_archive);
recursive = true;
} else
html = '';
}
}
if (!recursive)
replaceDomElementExtSrc(url, url_src, html, proxy, base64, selector, text_fail, selector_source, selector_archive);
}
});
}
function replaceDomElementExt(url, proxy, base64, selector, text_fail = '', selector_source = selector, selector_archive = selector) {
let article = document.querySelector(selector);
if (!article)
return;
if (proxy) {
if (!text_fail) {
if (url.startsWith('https://archive.'))
text_fail = 'BPC > Try for full article text (no need to report issue for external site):\r\n';
else if (!matchUrlDomain(window.location.hostname, url))
text_fail = 'BPC > failed to load from external site:\r\n';
}
getArticleSrc(url, '', proxy, base64, selector, text_fail, selector_source, selector_archive);
} else {
fetch(url, {headers: fetch_headers})
.then(response => {
let article = document.querySelector(selector);
if (response.ok) {
response.text().then(html => {
replaceDomElementExtSrc(url, '', html, false, base64, selector, text_fail, selector_source);
});
} else {
replaceTextFail(url, article, proxy, text_fail);
}
}).catch(function (err) {
replaceTextFail(url, article, proxy, text_fail);
});
}
}
var selector_level = false;
function replaceDomElementExtSrc(url, url_src, html, proxy, base64, selector, text_fail = '', selector_source = selector, selector_archive = selector) {
let article = document.querySelector(selector);
let article_link = document.querySelector(selector_archive);
let no_content_msg = '&nbsp;| no article content found! | :';
if (html) {
if (!proxy && base64) {
html = decode_utf8(atob(html));
selector_source = 'body';
}
let parser = new DOMParser();
window.setTimeout(function () {
if (url.startsWith('https://archive.') && url_src) {
let domain_archive = url.match(/^https:\/\/(archive\.\w{2})/)[1];
let pathname = new URL(url_src).pathname;
html = html.replace(new RegExp('https:\\/\\/' + domain_archive.replace('.', '\\.') + '\\/o\\/\\w+\\/', 'g'), '').replace(new RegExp("(src=\"|background-image:url\\(')" + pathname.replace('/', '\\/'), 'g'), "$1" + 'https://' + domain_archive + pathname);
}
let doc = parser.parseFromString(html, 'text/html');
if (selector_level)
selector_source = getSelectorLevel(selector_source);
let article_new = doc.querySelector(selector_source);
if (article_new) {
if (article && article.parentNode) {
if (url.startsWith('https://archive.')) {
let arch_dom = (selector_archive !== selector) ? (article_new.querySelector(selector_archive) || document.querySelector(selector_archive)) : article_new;
if (arch_dom) {
if (arch_dom.firstChild)
arch_dom = arch_dom.firstChild;
let arch_div = document.createElement('div');
arch_div.appendChild(archiveLink_renew(url_src));
arch_div.appendChild(archiveLink(window.location.href, 'BPC > Full article text fetched from (no need to report issue for external site):\r\n'));
arch_div.style = 'margin: 0px 0px 50px;';
arch_dom.before(arch_div);
}
let targets = article_new.querySelectorAll('a[target="_blank"][href^="' + window.location.origin + '"]');
for (let elem of targets)
elem.removeAttribute('target');
let invalid_links = article_new.querySelectorAll('link[rel*="preload"]:not([href])');
removeDOMElement(...invalid_links);
}
window.setTimeout(function () {
if (article.parentNode) {
article.parentNode.replaceChild(article_new, article);
if (func_post)
func_post();
}
}, 200);
}
} else
replaceTextFail(url, article_link, proxy, text_fail.replace(':', no_content_msg));
}, 200);
} else {
replaceTextFail(url, article_link, proxy, url_src ? text_fail.replace(':', no_content_msg) : text_fail);
}
}
function replaceTextFail(url, article, proxy, text_fail) {
if (text_fail && article) {
let text_fail_div = document.createElement('div');
text_fail_div.id = 'bpc_fail';
text_fail_div.setAttribute('style', 'margin: 0px 50px; font-weight: bold; color: red;');
text_fail_div.appendChild(document.createTextNode(text_fail));
if (proxy) {
if (url.startsWith('https://archive.')) {
text_fail_div = archiveLink(url.replace(/^https:\/\/archive\.\w{2}\//, ''), text_fail);
} else {
let a_link = document.createElement('a');
a_link.innerText = url;
a_link.href = url;
a_link.target = '_blank';
text_fail_div.appendChild(a_link);
}
}
if (article.firstChild)
article.firstChild.before(text_fail_div);
else
article.appendChild(text_fail_div);
}
}
function randomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
function archiveRandomDomain() {
let tld_array = ['fo', 'is', 'li', 'md', 'ph', 'vn'];
let tld = tld_array[randomInt(6)];
return 'archive.' + tld;
}
function getArchive(url, paywall_sel, paywall_action = '', selector, text_fail = '', selector_source = selector, selector_archive = selector) {
let url_archive = 'https://' + archiveRandomDomain() + '/' + url.split(/[#\?]/)[0];
let paywall = document.querySelectorAll(paywall_sel);
if (paywall.length) {
clearPaywall(paywall, paywall_action);
replaceDomElementExt(url_archive, true, false, selector, text_fail, selector_source, selector_archive);
}
}
function archiveLink(url, text_fail = 'BPC > Try for full article text (no need to report issue for external site):\r\n') {
return externalLink(['archive.today', 'archive.is'], 'https://{domain}?run=1&url={url}', url, text_fail);
}
function archiveLink_renew(url, text_fail = 'BPC > Only use to renew if text is incomplete or updated:\r\n') {
return externalLink([new URL(url).hostname], '{url}/again?url=' + window.location.href, url, text_fail);
}
function nftLink(url, text_fail = 'BPC > Full article text:\r\n') {
return externalLink(['1ft.io'], 'https://{domain}/{url}', url, text_fail);
}
function externalLink(domains, ext_url_templ, url, text_fail = 'BPC > Full article text:\r\n') {
let text_fail_div = document.createElement('div');
text_fail_div.id = 'bpc_archive';
text_fail_div.setAttribute('style', 'margin: 20px; font-size: 20px; font-weight: bold; color: red;');
let parser = new DOMParser();
text_fail = text_fail.replace(/\[(?<url>[^\]]+)\]/g, function (match, url) {
return "<a href='" + url + "' target='_blank' style='color: red'>" + new URL(url).hostname + "</a>";
});
let doc = parser.parseFromString('<span>' + text_fail + '</span>', 'text/html');
let elem = doc.querySelector('span');
text_fail_div.appendChild(elem);
for (let domain of domains) {
let ext_url = ext_url_templ.replace('{domain}', domain).replace('{url}', url.split('?')[0]);
let a_link = document.createElement('a');
a_link.innerText = domain;
a_link.href = ext_url;
a_link.target = '_blank';
text_fail_div.appendChild(document.createTextNode(' | '));
text_fail_div.appendChild(a_link);
}
return text_fail_div;
}
function encode_utf8(str) {
return unescape(encodeURIComponent(str));
}
function decode_utf8(str) {
return decodeURIComponent(escape(str));
}
})();

1867
userscript/bpc.fr.user.js Normal file

File diff suppressed because it is too large Load diff

612
userscript/bpc.it.user.js Normal file
View file

@ -0,0 +1,612 @@
// ==UserScript==
// @name Bypass Paywalls Clean - it
// @version 4.0.8.0
// @description Bypass Paywalls of news sites
// @author magnolia1234
// @downloadURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.it.user.js
// @updateURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.it.user.js
// @homepageURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters
// @supportURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters
// @license MIT; https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=LICENSE
// @match *://*.it/*
// @match *://*.eastwest.eu/*
// @match *://*.ilsole24ore.com/*
// @match *://*.italian.tech/*
// @match *://*.quotidiano.net/*
// @match *://*.tuttosport.com/*
// ==/UserScript==
(function() {
//'use strict';
window.setTimeout(function () {
var domain;
var mobile = window.navigator.userAgent.toLowerCase().includes('mobile');
var csDoneOnce;
var overlay = document.querySelector('body.didomi-popup-open');
if (overlay)
overlay.classList.remove('didomi-popup-open');
var ads = 'div.OUTBRAIN, div[id^="taboola-"], div.ad-container, div[class*="-ad-container"], div[class*="_ad-container"], div.arc_ad, div[id^="poool-"], amp-ad, amp-embed[type="mgid"], amp-embed[type="outbrain"], amp-embed[type="taboola"]';
hideDOMStyle(ads, 10);
var it_gedi_domains = ['huffingtonpost.it', 'italian.tech', 'lastampa.it', 'lescienze.it', 'moda.it', 'repubblica.it'];
var it_ilmessaggero_domains = ['corriereadriatico.it', 'ilgazzettino.it', 'ilmattino.it', 'ilmessaggero.it', 'quotidianodipuglia.it'];
var it_quotidiano_domains = ['ilgiorno.it', 'ilrestodelcarlino.it', 'iltelegrafolivorno.it', 'lanazione.it', 'quotidiano.net'];
if (matchDomain('corriere.it')) {
if (window.location.pathname.endsWith('_amp.html')) {
amp_unhide_subscr_section('');
} else {
if (window.location.pathname.includes('_preview.shtml') && !window.location.pathname.startsWith('/podcast/')) {
window.setTimeout(function () {
window.location.href = window.location.pathname.replace('_preview.shtml', '.shtml');
}, 500);
}
}
}
else if (matchDomain('corrieredellosport.it')) {
if (!window.location.pathname.startsWith('/amp/')) {
amp_redirect('div[class^="MainTextTruncated_paragraph__"]');
let ads = 'div[class^="AdUnit_placeholder"]';
hideDOMStyle(ads);
}
}
else if (matchDomain('eastwest.eu')) {
let paywall = document.querySelector('.paywall');
if (paywall) {
paywall.removeAttribute('style');
paywall.classList.remove('paywall');
let intro = document.querySelectorAll('div#testo_articolo > p, div#testo_articolo > h3');
let offerta = document.querySelectorAll('div.offerta_abbonamenti');
removeDOMElement(...intro, ...offerta);
}
}
else if (matchDomain('editorialedomani.it')) {
if (window.location.search.startsWith('?amp=1'))
ampToHtml();
}
else if (matchDomain('gazzetta.it')) {
if (window.location.pathname.endsWith('_preview.shtml')) {
let paywall = document.querySelector('section.bck-freemium__wall');
if (paywall) {
removeDOMElement(paywall);
if (!window.location.search.startsWith('?reason=unauthenticated')) {
window.location.href = window.location.pathname.replace('_preview', '') + '?gaa_at=g';
} else {
let json_script = getArticleJsonScript();
let header = 'div.content > h2';
if (json_script) {
let json = JSON.parse(json_script.text);
if (json) {
let json_text = json.articleBody.replace(/(\s{3}|&nbsp;)/g, '\r\n\r\n');
let content = document.querySelector('div.content > p.has-first-letter');
if (json_text && content) {
let content_new = document.createElement('p');
content_new.innerText = json_text;
content.parentNode.replaceChild(content_new, content);
let article_body = document.querySelector('section.body-article');
if (article_body)
article_body.style = 'height: auto;';
} else
header_nofix(header);
}
} else
header_nofix(header);
}
}
} else if (window.location.pathname.endsWith('_amp.shtml'))
ampToHtml();
}
else if (matchDomain('ilfattoquotidiano.it')) {
if (window.location.pathname.endsWith('/amp/')) {
amp_unhide_subscr_section('div#_4sVideoContainer, div#post-consent-ui');
let comments = document.querySelector('div.content.comments');
removeDOMElement(comments);
let logo = document.querySelector('a > amp-img[src$="/logo-tablet.svg"]');
if (logo) {
let logo_new = document.createElement('img');
logo_new.src = logo.getAttribute('src').replace('logo-tablet.svg', 'logo-desktop.svg');
logo_new.height = logo.getAttribute('height');
logo_new.width = logo.getAttribute('width');
logo.parentNode.replaceChild(logo_new, logo);
}
} else if (window.location.pathname.match(/\/\d{4}\/\d{2}\/\d{2}\//)) {
amp_redirect('div.read-more', '', window.location.pathname + 'amp');
}
}
else if (matchDomain('ilfoglio.it')) {
if (window.location.pathname.endsWith('/amp/')) {
amp_unhide_subscr_section('amp-ad, [class^="adv-"], div#gmpVideoContainer');
} else {
amp_redirect('div.paywall');
let ads = '.advertisement';
hideDOMStyle(ads);
}
}
else if (matchDomain('ilmanifesto.it')) {
let paywall = document.querySelector('div[class*="before:bg-gradient-to-t"]');
if (paywall) {
removeDOMElement(paywall);
let article = document.querySelector('article div.prose');
if (article) {
let filter = /^self\.__next_f\.push\(\[1,"/;
let scripts = document.querySelectorAll('script:not([src], [type])');
for (let script of scripts) {
if (script.text.match(filter) && script.text.includes('canonical_url')) {
if (!script.text.includes(window.location.href))
refreshCurrentTab();
break;
}
}
let source_script = getSourceJsonScript(/^self\.__next_f\.push\(\[1,"\\u003c/);
if (source_script) {
let source_text = source_script.text.split(filter)[1].split('"])')[0].replace(/\\u003c/g, '<').replace(/\\u003e/g, '>').replace(/\\"/g, '"').replace(/\\n/g, '');
let parser = new DOMParser();
let doc = parser.parseFromString('<div>' + source_text + '</div>', 'text/html');
let article_new = doc.querySelector('div');
let figures = article_new.querySelectorAll('figure[style]');
for (let elem of figures)
elem.removeAttribute('style');
article.innerHTML = '';
article.appendChild(article_new);
}
}
}
}
else if (matchDomain('ilsole24ore.com')) {
header_nofix('div.paywalltext', 'div.lock');
waitDOMAttribute('body', 'BODY', 'style', node => node.removeAttribute('style'), true);
let ads = 'div.background-adv, div.abox, div.ob-smartfeed-wrapper, div.s24_adb';
hideDOMStyle(ads);
}
else if (domain = matchDomain(['iltirreno.it', 'lanuovasardegna.it']) || matchDomain(['gazzettadimodena.it', 'gazzettadireggio.it', 'lanuovaferrara.it'])) {
if (window.location.pathname.includes('/news/')) {
let paywall = document.querySelector('span > img[alt*="Paywall"]');
if (paywall) {
let header = paywall.parentNode.parentNode;
header_nofix(header);
removeDOMElement(paywall.parentNode);
}
window.setTimeout(function () {
let banners = document.querySelectorAll('div.MuiSnackbar-root, div.css-16cchgy');
removeDOMElement(...banners);
}, 1000);
}
setCookie(/__mtr$/, '', domain, '/', 0);
}
else if (matchDomain(it_ilmessaggero_domains)) {
if (window.location.pathname.toLowerCase().includes('/amp/')) {
amp_unhide_subscr_section();
} else {
let noscroll = document.querySelector('html[style]');
if (noscroll)
noscroll.removeAttribute('style');
let ads = 'div.adv_banner, div.inread_adv, div#outbrain';
hideDOMStyle(ads);
}
}
else if (matchDomain(it_quotidiano_domains)) {
if (window.location.pathname.endsWith('/amp') || window.location.search.startsWith('?amp')) {
amp_unhide_access_hide('="c.customGranted"', '="NOT c.customGranted"', 'amp-fx-flying-carpet, .watermark-adv, .amp__watermark');
} else {
amp_redirect('div[data-testid="paywall-container"], div[class^="Paywall_paywall_"]', '', window.location.pathname + '/amp');
let ads = 'div[id^="div-gpt-ad"]';
hideDOMStyle(ads);
}
}
else if (matchDomain('italiaoggi.it')) {
let paywall = document.querySelector('div.boxAbb');
if (paywall) {
let overlay = document.querySelector('div.article-locked-overlay');
removeDOMElement(paywall, overlay);
let article_locked = document.querySelector('div.article-locked');
if (article_locked) {
article_locked.classList.remove('article-locked');
let json_script = getArticleJsonScript();
if (json_script) {
let json = JSON.parse(json_script.text);
if (json) {
let json_text = json.articleBody;
let content = article_locked.querySelector('section');
if (json_text && content) {
let parser = new DOMParser();
json_text = json_text.replace(/&amp;apos;/g, "'").replace(/;/g, '');
let doc = parser.parseFromString('<div><section>' + json_text + '</section></div>', 'text/html');
let content_new = doc.querySelector('div');
content.parentNode.replaceChild(content_new, content);
}
}
}
}
}
}
else if (domain = matchDomain(it_gedi_domains)) {
let amp = window.location.pathname.match(/\/amp(\/)?$/);
if (matchDomain(['huffingtonpost.it', 'lastampa.it'])) {
if (window.location.pathname.includes('/news/')) {
if (!amp) {
let paywall = document.querySelector('iframe[id^="__limio_frame"]');
if (paywall) {
setCookie(/blaize_session/, '', domain, '/', 0);
refreshCurrentTab(false);
}
let modal = document.querySelector('aside#widgetDP');
removeDOMElement(modal);
} else
ampToHtml();
}
} else if (matchDomain('repubblica.it')) {
if (!amp)
amp_redirect('iframe[id^="__limio_frame"]', '', window.location.pathname + 'amp/');
else {
amp_unhide_subscr_section();
if (!mobile)
addStyle('img.i-amphtml-fill-content {min-height: 50% !important; min-width: 50% !important;}');
let paywall = document.querySelector('div.not_granted__content');
if (paywall) {
removeDOMElement(paywall);
let article = document.querySelector('div.story__wrapper');
if (article) {
let url = window.location.href.split(/[#\?]/)[0].replace(/\/amp\/$/, '');
article.before(googleSearchToolLink(url));
}
}
}
} else {
if (!amp) {
let paywall = document.querySelector('div#ph-paywall');
removeDOMElement(paywall);
setCookie(/blaize_session/, '', domain, '/', 0);
} else
ampToHtml();
}
let ads = 'div[id^="adv"]';
hideDOMStyle(ads);
}
else if (matchDomain('milanofinanza.it')) {
let paywall = document.querySelector('div.paywall-content, section.payment');
if (paywall) {
removeDOMElement(paywall);
let json_script = getArticleJsonScript();
if (json_script) {
try {
let json = JSON.parse(json_script.text.replace(/!=/g, '').replace(/!function\(\){[^!]+(\(\);|0;[a-z])/g, ''));
if (json) {
let json_text = parseHtmlEntities(json.articleBody);
let article = document.querySelector('div.article-locked');
if (json_text && article) {
article.innerHTML = '';
let article_new = document.createElement('p');
article_new.innerText = json_text;
article.appendChild(article_new);
}
}
} catch (err) {
console.log(err);
header_nofix('div.article-locked', '', 'BPC > no fix (json-error)');
}
}
}
}
else if (matchDomain('sky.it')) {
let paywall = document.querySelector('div.c-paywall');
if (paywall && window.location.hostname.match(/^(sport|tg24)\./)) {
removeDOMElement(paywall);
let article = document.querySelector('div > div.c-article-abstract');
let json_script = getArticleJsonScript();
if (article && json_script) {
try {
let json = JSON.parse(json_script.text);
if (json) {
let json_text = json[0].articleBody;
if (json_text) {
let par_new = document.createElement('p');
par_new.innerText = json_text;
article.parentNode.appendChild(par_new);
}
}
} catch (err) {
console.log(err);
}
}
}
let ads = 'div.c-adv';
hideDOMStyle(ads);
}
else if (matchDomain('tuttosport.com')) {
if (!window.location.pathname.startsWith('/amp/')) {
let paywall = document.querySelector('div[class^="MainTextTruncated_premium"]');
if (paywall) {
removeDOMElement(paywall);
let article = document.querySelector('div > div[class^="MainTextTruncated_truncatedContent"]');
if (article) {
let json_script = document.querySelector('script#__NEXT_DATA__');
if (json_script) {
try {
let json = JSON.parse(json_script.text);
if (json && json.props.pageProps.news && json.props.pageProps.news.content) {
let url_next = json.props.pageProps.news.href;
if (url_next && !window.location.pathname.includes(url_next))
window.location.href = window.location.pathname;
let parser = new DOMParser();
let doc = parser.parseFromString('<div>' + json.props.pageProps.news.content + '</div>', 'text/html');
let article_new = doc.querySelector('div');
article.parentNode.replaceChild(article_new, article);
} else
refreshCurrentTab();
} catch (err) {
console.log(err);
}
}
}
}
let ads = 'div[class^="AdUnit_"]';
hideDOMStyle(ads);
}
}
}, 1000);
// General Functions
function matchDomain(domains, hostname) {
var matched_domain = false;
if (!hostname)
hostname = window.location.hostname;
if (typeof domains === 'string')
domains = [domains];
domains.some(domain => (hostname === domain || hostname.endsWith('.' + domain)) && (matched_domain = domain));
return matched_domain;
}
function matchCookies(name) {
return document.cookie.split(';').filter(x => x.trim().match(name)).map(y => y.split('=')[0].trim())
}
function setCookie(names, value, domain = '', path = '/', days = 0) {
var max_age = days * 24 * 60 * 60;
let ck_names = Array.isArray(names) ? names : [];
if (names instanceof RegExp)
ck_names = matchCookies(names);
else if (typeof names === 'string')
ck_names = [names];
for (let ck_name of ck_names) {
document.cookie = ck_name + "=" + (value || "") + (domain ? "; domain=" + domain : '') + (path ? "; path=" + path : '') + "; max-age=" + max_age;
}
window.localStorage.clear();
}
function removeDOMElement(...elements) {
for (let element of elements) {
if (element)
element.remove();
}
}
function hideDOMElement(...elements) {
for (let element of elements) {
if (element)
element.style = 'display:none !important;';
}
}
function hideDOMStyle(selector, id = 1) {
let style = document.querySelector('head > style#ext'+ id);
if (!style && document.head) {
let sheet = document.createElement('style');
sheet.id = 'ext' + id;
sheet.innerText = selector + ' {display: none !important;}';
document.head.appendChild(sheet);
}
}
function addStyle(css, id = 1) {
let style = document.querySelector('head > style#add'+ id);
if (!style && document.head) {
let sheet = document.createElement('style');
sheet.id = 'add' + id;
sheet.innerText = css;
document.head.appendChild(sheet);
}
}
function waitDOMAttribute(selector, tagName = '', attributeName = '', callback, multiple = false) {
let targetNode = document.querySelector(selector);
if (!targetNode)
return;
new window.MutationObserver(function (mutations) {
for (let mutation of mutations) {
if (mutation.target.attributes[attributeName]) {
callback(mutation.target);
if (!multiple)
this.disconnect();
}
}
}).observe(targetNode, {
attributes: true,
attributeFilter: [attributeName]
});
}
function clearPaywall(paywall, paywall_action) {
if (paywall) {
if (!paywall_action)
removeDOMElement(...paywall);
else {
for (let elem of paywall) {
if (paywall_action.rm_class)
elem.classList.remove(paywall_action.rm_class);
else if (paywall_action.rm_attrib)
elem.removeAttribute(paywall_action.rm_attrib);
}
}
}
}
function header_nofix(header, cond_sel = '', msg = 'BPC > no fix') {
if (header && typeof header === 'string')
header = document.querySelector(header);
if (header && !document.querySelector('div#bpc_nofix')) {
if (cond_sel) {
let elem = document.querySelectorAll(cond_sel);
if (elem.length)
removeDOMElement(...elem);
else
return false;
}
let nofix_div = document.createElement('div');
nofix_div.id = 'bpc_nofix';
nofix_div.style = 'margin: 20px; font-size: 20px; font-weight: bold; color: red;';
nofix_div.innerText = msg;
header.before(nofix_div);
}
}
function amp_iframes_replace(weblink = false, source = '') {
let amp_iframes = document.querySelectorAll('amp-iframe' + (source ? '[src*="' + source + '"]' : ''));
let par, elem;
for (let amp_iframe of amp_iframes) {
if (!weblink) {
if (amp_iframe.offsetHeight > 10) {
elem = document.createElement('iframe');
elem.src = amp_iframe.getAttribute('src').replace(/^http:/, 'https:');
elem.style = 'height: ' + amp_iframe.offsetHeight + 'px; width: 100%; border: 0px;';
if (amp_iframe.getAttribute('sandbox'))
elem.sandbox = amp_iframe.getAttribute('sandbox');
amp_iframe.parentNode.replaceChild(elem, amp_iframe);
}
} else {
par = document.createElement('p');
par.style = 'margin: 20px 0px;';
elem = document.createElement('a');
elem.innerText = 'Media-link';
elem.setAttribute('href', amp_iframe.getAttribute('src'));
elem.setAttribute('target', '_blank');
par.appendChild(elem);
amp_iframe.parentNode.replaceChild(par, amp_iframe);
}
}
}
function amp_redirect_not_loop(amphtml) {
if (!check_loop()) {
window.location.href = amphtml.href;
} else {
let header = (document.body && document.body.firstChild) || document.documentElement;
header_nofix(header, '', 'BPC > redirect to amp failed (disable amp-to-html extension/add-on or browser setting)');
}
}
function amp_redirect(paywall_sel, paywall_action = '', amp_url = '') {
let paywall = document.querySelectorAll(paywall_sel);
let amphtml = document.querySelector('head > link[rel="amphtml"]');
if (!amphtml && amp_url)
amphtml = {href: amp_url};
if (paywall.length && amphtml) {
clearPaywall(paywall, paywall_action);
amp_redirect_not_loop(amphtml);
}
}
function amp_unhide_subscr_section(amp_ads_sel = '', replace_iframes = true, amp_iframe_link = false, source = '') {
let preview = document.querySelectorAll('[subscriptions-section="content-not-granted"]');
removeDOMElement(...preview);
let subscr_section = document.querySelectorAll('[subscriptions-section="content"]');
for (let elem of subscr_section)
elem.removeAttribute('subscriptions-section');
hideDOMStyle(amp_ads_sel, 5);
if (replace_iframes)
amp_iframes_replace(amp_iframe_link, source);
}
function amp_unhide_access_hide(amp_access = '', amp_access_not = '', amp_ads_sel = '', replace_iframes = true, amp_iframe_link = false, source = '') {
let access_hide = document.querySelectorAll('[amp-access' + amp_access + '][amp-access-hide]:not([amp-access="error"], [amp-access^="message"], .piano)');
for (let elem of access_hide)
elem.removeAttribute('amp-access-hide');
if (amp_access_not) {
let amp_access_not_dom = document.querySelectorAll('[amp-access' + amp_access_not + ']');
removeDOMElement(...amp_access_not_dom);
}
hideDOMStyle(amp_ads_sel, 6);
if (replace_iframes)
amp_iframes_replace(amp_iframe_link, source);
}
function ampToHtml() {
window.setTimeout(function () {
let canonical = document.querySelector('head > link[rel="canonical"][href]');
if (canonical)
window.location.href = canonical.href;
}, 1000);
}
function check_loop(interval = 2000) {
let loop = true;
let loop_date = Number(sessionStorage.getItem('###_loop'));
if (!(loop_date && (Date.now() - loop_date < interval))) {
sessionStorage.setItem('###_loop', Date.now());
loop = false;
}
return loop;
}
function refreshCurrentTab(not_loop = true) {
if (!not_loop || !check_loop(5000)) {
window.setTimeout(function () {
window.location.reload(true);
}, 500);
} else {
let header = (document.body && document.body.firstChild) || document.documentElement;
header_nofix(header, '', 'BPC > refresh loop stopped');
}
}
function getSourceJsonScript(filter, attributes = ':not([src], [type])') {
if (typeof filter === 'string')
filter = new RegExp(filter);
let scripts = document.querySelectorAll('script' + attributes);
for (let script of scripts) {
if (script.text.match(filter))
return script;
}
return false;
}
function getArticleJsonScript() {
let scripts = document.querySelectorAll('script[type="application/ld+json"]');
let json_script;
for (let script of scripts) {
if (script.innerText.match(/"(articlebody|text)":/i)) {
json_script = script;
break;
}
}
return json_script;
}
function parseHtmlEntities(encodedString) {
let parser = new DOMParser();
let doc = parser.parseFromString('<textarea>' + encodedString + '</textarea>', 'text/html');
let dom = doc.querySelector('textarea');
return dom.value;
}
})();

1069
userscript/bpc.nl.user.js Normal file

File diff suppressed because it is too large Load diff

526
userscript/bpc.pl.user.js Normal file
View file

@ -0,0 +1,526 @@
// ==UserScript==
// @name Bypass Paywalls Clean - pl
// @version 3.9.2.3
// @description Bypass Paywalls of news sites
// @author magnolia1234
// @downloadURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.pl.user.js
// @updateURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=userscript/bpc.pl.user.js
// @homepageURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters
// @supportURL https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters
// @license MIT; https://gitflic.ru/project/magnolia1234/bypass-paywalls-clean-filters/blob/raw?file=LICENSE
// @match *://*.auto-swiat.pl/*
// @match *://*.businessinsider.com.pl/*
// @match *://*.forbes.pl/*
// @match *://*.komputerswiat.pl/*
// @match *://*.magazyn-kuchnia.pl/*
// @match *://*.newsweek.pl/*
// @match *://*.onet.pl/*
// @match *://*.parkiet.com/*
// @match *://*.pb.pl/*
// @match *://*.rp.pl/*
// @match *://*.wyborcza.biz/*
// @match *://*.wyborcza.pl/*
// @match *://*.wysokieobcasy.pl/*
// @connect archive.fo
// @connect archive.is
// @connect archive.li
// @connect archive.md
// @connect archive.ph
// @connect archive.vn
// @grant GM.xmlHttpRequest
// ==/UserScript==
(function() {
//'use strict';
var func_post;
var fetch_headers = {};
window.setTimeout(function () {
var domain;
var mobile = window.navigator.userAgent.toLowerCase().includes('mobile');
var csDoneOnce;
var cs_param = {};
var overlay = document.querySelector('body.didomi-popup-open');
if (overlay)
overlay.classList.remove('didomi-popup-open');
var ads = 'div.OUTBRAIN, div[id^="taboola-"], div.ad-container, div[class*="-ad-container"], div[class*="_ad-container"], div.arc_ad, div[id^="poool-"], amp-ad, amp-embed[type="mgid"], amp-embed[type="outbrain"], amp-embed[type="taboola"]';
hideDOMStyle(ads, 10);
var pl_ringier_domains = ['auto-swiat.pl', 'businessinsider.com.pl', 'forbes.pl', 'komputerswiat.pl', 'newsweek.pl', 'onet.pl'];
if (matchDomain('pb.pl')) {
let paywall = document.querySelector('div.paywall');
if (paywall) {
paywall.classList.remove('paywall');
let article_hidden = paywall.querySelector('section.o-article-content');
if (article_hidden)
article_hidden.removeAttribute('class');
let loader = document.querySelector('div.o-piano-template-loader-box');
removeDOMElement(loader);
}
}
else if (matchDomain(pl_ringier_domains)) {
if (matchDomain('businessinsider.com.pl')) {
let paywall = document.querySelector('div#content-premium-offer');
removeDOMElement(paywall);
}
let premium = document.querySelector('div.contentPremium[style]');
if (premium) {
premium.removeAttribute('class');
premium.removeAttribute('style');
}
let ads = 'div.adPlaceholder , div[class^="Ad"][class*="Placeholder_"], div[data-placeholder-caption], div[data-run-module$=".floatingAd"], aside[data-ad-container], aside.adsContainer, [class^="pwAds"], .hide-for-paying, div.onet-ad, div.bottomBar, ad-default';
hideDOMStyle(ads);
}
else if (matchDomain(['rp.pl', 'parkiet.com'])) {
let paywall = document.querySelector('div.paywallComp');
if (paywall) {
removeDOMElement(paywall);
let article = document.querySelector('div.article--content');
if (article) {
let url = window.location.href;
article.firstChild.before(googleSearchToolLink(url));
}
}
}
else if (matchDomain(['wyborcza.biz', 'wyborcza.pl', 'wysokieobcasy.pl', 'magazyn-kuchnia.pl'])) {
let url = window.location.href;
func_post = function () {
let empty_spans = document.querySelectorAll('figure > a > span:empty');
removeDOMElement(...empty_spans);
}
if (matchDomain(['wyborcza.biz', 'wyborcza.pl']))
getArchive(url, 'div.article--content-fadeout', {rm_attrib: 'class'}, 'div.container[class*="pt"]', '', 'div.body > div:not([style*="background-color:"]):not([old-position])');
else
getArchive(url, 'section.fade-out-article', {rm_attrib: 'class'}, 'article');
let ads = 'div[id^="adUnit"], div[id^="ads-"]';
hideDOMStyle(ads);
}
}, 1000);
// General Functions
function matchDomain(domains, hostname) {
var matched_domain = false;
if (!hostname)
hostname = window.location.hostname;
if (typeof domains === 'string')
domains = [domains];
domains.some(domain => (hostname === domain || hostname.endsWith('.' + domain)) && (matched_domain = domain));
return matched_domain;
}
function urlHost(url) {
if (/^http/.test(url)) {
try {
return new URL(url).hostname;
} catch (e) {
console.log(`url not valid: ${url} error: ${e}`);
}
}
return url;
}
function matchUrlDomain(domains, url) {
return matchDomain(domains, urlHost(url));
}
function setCookie(name, value, domain, path, days, localstorage_hold = false) {
var max_age = days * 24 * 60 * 60;
document.cookie = name + "=" + (value || "") + "; domain=" + domain + "; path=" + path + "; max-age=" + max_age;
if (!localstorage_hold)
window.localStorage.clear();
}
function removeDOMElement(...elements) {
for (let element of elements) {
if (element)
element.remove();
}
}
function hideDOMElement(...elements) {
for (let element of elements) {
if (element)
element.style = 'display:none !important;';
}
}
function hideDOMStyle(selector, id = 1) {
let style = document.querySelector('head > style#ext'+ id);
if (!style && document.head) {
let sheet = document.createElement('style');
sheet.id = 'ext' + id;
sheet.innerText = selector + ' {display: none !important;}';
document.head.appendChild(sheet);
}
}
function addStyle(css, id = 1) {
let style = document.querySelector('head > style#add'+ id);
if (!style && document.head) {
let sheet = document.createElement('style');
sheet.id = 'add' + id;
sheet.innerText = css;
document.head.appendChild(sheet);
}
}
function clearPaywall(paywall, paywall_action) {
if (paywall) {
if (!paywall_action)
removeDOMElement(...paywall);
else {
for (let elem of paywall) {
if (paywall_action.rm_class)
elem.classList.remove(paywall_action.rm_class);
else if (paywall_action.rm_attrib)
elem.removeAttribute(paywall_action.rm_attrib);
}
}
}
}
function waitDOMElement(selector, tagName = '', callback, multiple = false) {
new window.MutationObserver(function (mutations) {
for (let mutation of mutations) {
for (let 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 waitDOMAttribute(selector, tagName = '', attributeName = '', callback, multiple = false) {
let targetNode = document.querySelector(selector);
if (!targetNode)
return;
new window.MutationObserver(function (mutations) {
for (let mutation of mutations) {
if (mutation.target.attributes[attributeName]) {
callback(mutation.target);
if (!multiple)
this.disconnect();
}
}
}).observe(targetNode, {
attributes: true,
attributeFilter: [attributeName]
});
}
function getSelectorLevel(selector) {
if (selector.replace(/,\s+/g, ',').match(/[>\s]+/))
selector = selector.replace(/,\s+/g, ',').split(',').map(x => x.match(/[>\s]+/) ? x + ', ' + x.split(/[>\s]+/).pop() : x).join(', ');
return selector;
}
function getArticleSrc(url, url_src, proxy, base64, selector, text_fail = '', selector_source = selector, selector_archive = selector) {
let url_fetch = url_src || url;
GM.xmlHttpRequest({
method: "GET",
url: url_fetch,
headers: fetch_headers,
onload: function (response) {
let html = response.responseText;
if (proxy && base64) {
html = decode_utf8(atob(html));
selector_source = 'body';
}
let recursive;
if (url.startsWith('https://archive.')) {
if (url_fetch.includes('/https')) {
if (html.includes('<div class="TEXT-BLOCK"')) {
url_src = html.split('<div class="TEXT-BLOCK"')[1].split('</div>')[0].split('href="')[1].split('"')[0];
getArticleSrc(url, url_src, proxy, base64, selector, text_fail, selector_source, selector_archive);
recursive = true;
} else
html = '';
}
}
if (!recursive)
replaceDomElementExtSrc(url, url_src, html, proxy, base64, selector, text_fail, selector_source, selector_archive);
}
});
}
function replaceDomElementExt(url, proxy, base64, selector, text_fail = '', selector_source = selector, selector_archive = selector) {
let article = document.querySelector(selector);
if (!article)
return;
if (proxy) {
if (!text_fail) {
if (url.startsWith('https://archive.'))
text_fail = 'BPC > Try for full article text (no need to report issue for external site):\r\n';
else if (!matchUrlDomain(window.location.hostname, url))
text_fail = 'BPC > failed to load from external site:\r\n';
}
getArticleSrc(url, '', proxy, base64, selector, text_fail, selector_source, selector_archive);
} else {
fetch(url, {headers: fetch_headers})
.then(response => {
let article = document.querySelector(selector);
if (response.ok) {
response.text().then(html => {
replaceDomElementExtSrc(url, '', html, false, base64, selector, text_fail, selector_source);
});
} else {
replaceTextFail(url, article, proxy, text_fail);
}
}).catch(function (err) {
replaceTextFail(url, article, proxy, text_fail);
});
}
}
var selector_level = false;
function replaceDomElementExtSrc(url, url_src, html, proxy, base64, selector, text_fail = '', selector_source = selector, selector_archive = selector) {
let article = document.querySelector(selector);
let article_link = document.querySelector(selector_archive);
let no_content_msg = '&nbsp;| no article content found! | :';
if (html) {
if (!proxy && base64) {
html = decode_utf8(atob(html));
selector_source = 'body';
}
let parser = new DOMParser();
window.setTimeout(function () {
if (url.startsWith('https://archive.') && url_src) {
let domain_archive = url.match(/^https:\/\/(archive\.\w{2})/)[1];
let pathname = new URL(url_src).pathname;
html = html.replace(new RegExp('https:\\/\\/' + domain_archive.replace('.', '\\.') + '\\/o\\/\\w+\\/', 'g'), '').replace(new RegExp("(src=\"|background-image:url\\(')" + pathname.replace('/', '\\/'), 'g'), "$1" + 'https://' + domain_archive + pathname);
}
let doc = parser.parseFromString(html, 'text/html');
if (selector_level)
selector_source = getSelectorLevel(selector_source);
let article_new = doc.querySelector(selector_source);
if (article_new) {
if (article && article.parentNode) {
if (url.startsWith('https://archive.')) {
let arch_dom = (selector_archive !== selector) ? (article_new.querySelector(selector_archive) || document.querySelector(selector_archive)) : article_new;
if (arch_dom) {
if (arch_dom.firstChild)
arch_dom = arch_dom.firstChild;
let arch_div = document.createElement('div');
arch_div.appendChild(archiveLink_renew(url_src));
arch_div.appendChild(archiveLink(window.location.href, 'BPC > Full article text fetched from (no need to report issue for external site):\r\n'));
arch_div.style = 'margin: 0px 0px 50px;';
arch_dom.before(arch_div);
}
let targets = article_new.querySelectorAll('a[target="_blank"][href^="' + window.location.origin + '"]');
for (let elem of targets)
elem.removeAttribute('target');
let invalid_links = article_new.querySelectorAll('link[rel*="preload"]:not([href])');
removeDOMElement(...invalid_links);
}
window.setTimeout(function () {
if (article.parentNode) {
article.parentNode.replaceChild(article_new, article);
if (func_post)
func_post();
}
}, 200);
}
} else
replaceTextFail(url, article_link, proxy, text_fail.replace(':', no_content_msg));
}, 200);
} else {
replaceTextFail(url, article_link, proxy, url_src ? text_fail.replace(':', no_content_msg) : text_fail);
}
}
function replaceTextFail(url, article, proxy, text_fail) {
if (text_fail && article) {
let text_fail_div = document.createElement('div');
text_fail_div.id = 'bpc_fail';
text_fail_div.setAttribute('style', 'margin: 0px 50px; font-weight: bold; color: red;');
text_fail_div.appendChild(document.createTextNode(text_fail));
if (proxy) {
if (url.startsWith('https://archive.')) {
text_fail_div = archiveLink(url.replace(/^https:\/\/archive\.\w{2}\//, ''), text_fail);
} else {
let a_link = document.createElement('a');
a_link.innerText = url;
a_link.href = url;
a_link.target = '_blank';
text_fail_div.appendChild(a_link);
}
}
if (article.firstChild)
article.firstChild.before(text_fail_div);
else
article.appendChild(text_fail_div);
}
}
function randomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
function archiveRandomDomain() {
let tld_array = ['fo', 'is', 'li', 'md', 'ph', 'vn'];
let tld = tld_array[randomInt(6)];
return 'archive.' + tld;
}
function getArchive(url, paywall_sel, paywall_action = '', selector, text_fail = '', selector_source = selector, selector_archive = selector) {
let url_archive = 'https://' + archiveRandomDomain() + '/' + url.split(/[#\?]/)[0];
let paywall = document.querySelectorAll(paywall_sel);
if (paywall.length) {
clearPaywall(paywall, paywall_action);
replaceDomElementExt(url_archive, true, false, selector, text_fail, selector_source, selector_archive);
}
}
function archiveLink(url, text_fail = 'BPC > Try for full article text (no need to report issue for external site):\r\n') {
return externalLink(['archive.today', archiveRandomDomain()], 'https://{domain}?run=1&url={url}', url, text_fail);
}
function archiveLink_renew(url, text_fail = 'BPC > Only use to renew if text is incomplete or updated:\r\n') {
return externalLink([new URL(url).hostname], '{url}/again?url=' + window.location.href, url, text_fail);
}
function googleSearchToolLink(url, text_fail = 'BPC > Try for full article text (test url & copy html (tab) code to [https://codebeautify.org/htmlviewer]):\r\n') {
return externalLink(['search.google.com'], 'https://search.google.com/test/rich-results?url={url}', encodeURIComponent(url), text_fail);
}
function externalLink(domains, ext_url_templ, url, text_fail = 'BPC > Full article text:\r\n') {
let text_fail_div = document.createElement('div');
text_fail_div.id = 'bpc_archive';
text_fail_div.setAttribute('style', 'margin: 20px; font-size: 20px; font-weight: bold; color: red;');
let parser = new DOMParser();
text_fail = text_fail.replace(/\[(?<url>[^\]]+)\]/g, function (match, url) {
return "<a href='" + url + "' target='_blank' style='color: red'>" + new URL(url).hostname + "</a>";
});
let doc = parser.parseFromString('<span>' + text_fail + '</span>', 'text/html');
let elem = doc.querySelector('span');
text_fail_div.appendChild(elem);
for (let domain of domains) {
let ext_url = ext_url_templ.replace('{domain}', domain).replace('{url}', url.split('?')[0]);
let a_link = document.createElement('a');
a_link.innerText = domain;
a_link.href = ext_url;
a_link.target = '_blank';
text_fail_div.appendChild(document.createTextNode(' | '));
text_fail_div.appendChild(a_link);
}
return text_fail_div;
}
function getArticleJsonScript() {
let scripts = document.querySelectorAll('script[type="application/ld+json"]');
let json_script;
for (let script of scripts) {
if (script.innerText.match(/"(articlebody|text)":/i)) {
json_script = script;
break;
}
}
return json_script;
}
function getNestedKeys(obj, key) {
if (key in obj)
return obj[key];
let keys = key.split('.');
let value = obj;
for (let i = 0; i < keys.length; i++) {
value = value[keys[i]];
if (value === undefined)
break;
}
return value;
}
function header_nofix(header, cond_sel = '', msg = 'BPC > no fix') {
if (header && typeof header === 'string')
header = document.querySelector(header);
if (header && !document.querySelector('div#bpc_nofix')) {
if (cond_sel) {
let elem = document.querySelectorAll(cond_sel);
if (elem.length)
removeDOMElement(...elem);
else
return false;
}
let nofix_div = document.createElement('div');
nofix_div.id = 'bpc_nofix';
nofix_div.style = 'margin: 20px; font-size: 20px; font-weight: bold; color: red;';
nofix_div.innerText = msg;
header.before(nofix_div);
}
}
function pageContains(selector, text) {
let elements = document.querySelectorAll(selector);
return Array.prototype.filter.call(elements, function (element) {
return RegExp(text).test(element.textContent);
});
}
function parseHtmlEntities(encodedString) {
let translate_re = /&(nbsp|amp|quot|lt|gt|deg|hellip|laquo|raquo|ldquo|rdquo|lsquo|rsquo|mdash);/g;
let translate = {"nbsp": " ", "amp": "&", "quot": "\"", "lt": "<", "gt": ">", "deg": "°", "hellip": "…",
"laquo": "«", "raquo": "»", "ldquo": "“", "rdquo": "”", "lsquo": "", "rsquo": "", "mdash": "—"};
return encodedString.replace(translate_re, function (match, entity) {
return translate[entity];
}).replace(/&#(\d+);/gi, function (match, numStr) {
let num = parseInt(numStr, 10);
return String.fromCharCode(num);
});
}
function encode_utf8(str) {
return unescape(encodeURIComponent(str));
}
function decode_utf8(str) {
return decodeURIComponent(escape(str));
}
function ampToHtml() {
window.setTimeout(function () {
let canonical = document.querySelector('head > link[rel="canonical"][href]');
if (canonical)
window.location.href = canonical.href;
}, 1000);
}
function check_loop(interval = 2000) {
let loop = true;
let loop_date = Number(sessionStorage.getItem('###_loop'));
if (!(loop_date && (Date.now() - loop_date < interval))) {
sessionStorage.setItem('###_loop', Date.now());
loop = false;
}
return loop;
}
function refreshCurrentTab(not_loop = true) {
if (!not_loop || !check_loop(5000)) {
window.setTimeout(function () {
window.location.reload(true);
}, 500);
} else {
let header = (document.body && document.body.firstChild) || document.documentElement;
header_nofix(header, '', 'BPC > refresh loop stopped');
}
}
})();