Deleting the wiki page 'Home' cannot be undone. Continue?
LocalCDN is a web browser extension for your Firefox that emulates CDNs (Content Delivery Networks). It intercepts the network traffic between a website and remote CDNs, finds supported resources locally, and injects them into the environment. All of this happens automatically, so no prior configuration is required.
LocalCDN is Open Source so you can of course check out the code. You can either download the extension manually here (right click and 'Save as..') or you can check the following sections:
ajax.googleapis.com
ajax.aspnetcdn.com
ajax.microsoft.com
cdnjs.cloudflare.com
code.jquery.com
cdn.jsdelivr.net
fonts.googleapis.com
yastatic.net
yandex.st
apps.bdimg.com
libs.baidu.com
cdn.staticfile.org
cdn.bootcss.com
mat1.gtimg.com
lib.sinaapp.com
upcdn.b0.upaiyun.com
stackpath.bootstrapcdn.com
maxcdn.bootstrapcdn.com
netdna.bootstrapcdn.com
use.fontawesome.com
ajax.cloudflare.com
akamai-webcdn.kgstatic.net
gitcdn.github.io
sdn.geekzu.org
ajax.proxy.ustclug.org
unpkg.com
pagecdn.io
cdn.css.net
cdnjs.loli.net
ajax.loli.net
fonts.loli.net
lib.baomitu.com
cdn.bootcdn.net
Yes, it's possible. For publishing you need a Google Account. I don't have one and don't want one 😉 But Emanuel Bennici
takes the source code and publish LocalCDN in the Chrome Web Store.
There are some restrictions for Chrome and Chromium based browsers. While both browsers support the WebExtensionsAPI, there are still differences. Chromium unfortunately doesn't support all the cool features of LocalCDN.
Of course, but logging is disabled by default.
Open "Browser Console" with CTRL + SHIFT + J or the menu
Yes you can and that would make me and other users very happy. LocalCDN uses the Open Source tool 'Weblate' for this. You can register there and start directly or you can make suggestions (without registration). I will accept them as soon as possible.
That would be great.
⚠️ Please use a different user profile (about:profiles
) for this, because your previous settings will be deleted when you remove the temporary extension ⚠️
Follow these links or watch the video:
Your adblocker must forward the traffic to LocalCDN so that LocalCDN can detect the requests and replace them with local resources.
If you are using an adblocker (uBlock Origin, uMatrix or AdGuard) you can generate some rules in the LocalCDN settings. Please remember that these rules have to be inserted manually into your adblocker.
For uBlock Origin the following also applies: These rules are only relevant in "Medium Mode". They are not necessary in Easy Mode or default settings. For more information, please visit the uBlock Origin Wiki.
There are different reasons for this. Either it is caused by missing/blocked frameworks or the HTML filter.
If you find error messages like this in the console (Ctrl + Shift + K
) it looks like a CSP/SOP issue. The website determines from which sources a resource can be loaded. In this case, a resource cannot be loaded from the addon storage. The SOP (Same Origin Policy) is a security feature. A bugreport to detect this errors already exists, but with the lowest priority (Bugzilla #1419459). The only solution: Disable LocalCDN for this website.
Online Test-Utility for SOP
: https://www.localcdn.org/test/check
Some websites include external frameworks and use crossorigin/integrity attributes. Both of these prevent the replacement by LocalCDN. Enable the HTML filter to remove these attributes and allow LocalCDN to replace the framework. Please note that this may cause display errors.
If a website uses a service worker for caching, it can also block the replacement. If you don't need the functions of the service workers (push notifications or offline functionality), you can disable it globally in about:config -> dom.serviceWorkers.enabled = false
(Beta) Online Test-Utility for Service Worker
: https://www.localcdn.org/test/check
____
Someone asked if I can add a specific framework. First of all, LocalCDN emulates CDNs to improve your online privacy and prevent cross-site profiles about you and your habits. When a website hostes these frameworks itself, then this is okay for privacy. You have no privacy advantages if you exchange the frameworks that are stored locally on the web server. The operator knows you anyway, e.g. Youtube, Twitter, Facebook and Discus. They always knows which page you are currently using.
Google Fonts will not be integrated, because this is not necessary to display a web page. If the web page includes Google Fonts and you block them by uBlock, the browser will use the default font instead. Apart from the fact that in my opinion it is not necessary, it is technically not possible to include all Google Fonts. The complete package of all Google Fonts is uncompressed 950 MB (compressed 390 MB in size. Just have a look into this folder. Extensions have a limitation of 200 MB. So you have to check all Google Fonts, which is popular and which should be included and which not. I don't want to do that.
Youtube doesn't include any external framework and Twitter is using an own CDN (abs.twimg.com). When you're using one of them only “passive”, you can try “Invidious” or “Nitter”, that's an alternative front-end without 3rd party scripts and CDNs. When you use Youtube/Twitter actively, it doesn't matter if the scripts are loaded locally.
This are the reasons why LocalCDN isn't supported now and will not be in future:
Normally yes. At the moment I know only HTTPS Everywhere and NoScript.
In my opinion the extension is no longer necessary due to various browser and server functions, so I haven't used it for a long time. Because I don't deal with it anymore, I can't answer any questions about it.
If you still want to use HTTPS Everywhere, you can find more information on this topic at Decentraleyes.
In short: LocalCDN always tries to establish secure connections when requests are to be allowed through.
Important: This seems to affect all browsers except Firefox and Firefox based
NoScript doesn't support importing the CDNs. So you have two options:
The second way: You have to export, edit and re-import your NoScript configuration. In your exported file you will find a section "sites" and "trusted". By default, domains/CDNs are already included there:
...
"sites": {
"trusted": [
"§:addons.mozilla.org",
"§:afx.ms",
"§:ajax.aspnetcdn.com",
"§:ajax.googleapis.com",
"§:bootstrapcdn.com",
"§:code.jquery.com",
...
You can attach the CDNs there. Duplicate entries are automatically removed during import.
Normally this should happen automatically.
Normally Firefox detects this automatically and depends on the operating system and/or theme. Keyword: prefers-color-scheme (developer.mozilla.org)
If the automatic detection does not work (because you set privacy.resistFingerprinting
to true
), the operating system or the Firefox theme does not support it, you can also set it manually:
about:config
ui.systemUsesDarkTheme
"1
. If not, then create the entry (Type = Number) and set it to 1
That's it. 😉
An external framework (e.g. jQuery) will not be listed as a network connection if LocalCDN can replace the framework. You will only find external connections there. LocalCDN redirects to a local file, however.
You can see the redirection through the source code. On the web page just right click and select "View Page Source". In the source code you will find e.g. this:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
If you copy this link, paste it into the address line, you will be redirected to the local file. Please do not just click on the link, because this will redirect you to this:
view-source:https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js
If you open https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js
, you will be forwarded to moz-extension://e129e293-bad9-44d2-ab61-9a5cacb106be/resources/jquery/2.2.4/jquery.min.jsm
. The extension ID (e1..be
) is random.
Example: https://www.localcdn.org/dl/how_can_i_check_if_localcdn_really_works.mp4
I don't know the exact definitions for "Recommended" and how often this will be checked. Definitely not with every update. The badges are also no guarantee that an extension protect your privacy. Do you remember "Web of Trust"? These extension was also recommended by Mozilla for a while. So you can use the badges as a orientation, but it isn't a guarantee.
I wrote Mozilla an e-mail about this a few weeks ago, but they still haven't answered me. Maybe Mozilla is busy at the moment because of less employees, Fenix and the new badges (I already applied for it)
Mozilla has published here some tips about the missing badges. These badges are only available for Firefox. Chromium has no such labels at all.
If you have a question about a certain line of code or a certain section of code, just create a ticket and I will answer the question.
Yes, because I have already tested it. Unfortunately Mozilla hasn't unlocked all extensions for it. I don't know when this will finally happen. If you are using Firefox Nightly (Mobile), you can create your own collection and include a maximum of 25 extensions. Expanded extension support in Firefox for Android Nightly
You can also use my collection:
Collection owner: 15698979
Collection name: nobody
Content:
Are you missing an extension? Then open an issue and I'll add this extension. Collections
currently limited to 25, but Mozilla wants to expand it to 50.
The skepticism is good and should always be the case. There aren't many developers who publish more than their name. A good example are Custom ROMs. Many times I see only a name and maybe a country, but nothing more. As a developer you also want to protect your privacy, because something once published on the internet cannot be removed. If you publish your name nobody will check it. So I can write what I want. If you just need a name to trust me, just call me Marc 😉
Privacy is important for me. Mine but also yours. I like it when you report missing frameworks, bugs or suggestions on Codeberg, because I delete emails automatically after 14 days. If you report something to me via email, I have to add it manually on Codeberg. Why do I do that? If a missing framework was reported by e-mail and I want to visit this website a second time, I don't know which website it is after 14 days. Suggestions and bug reports should also be public. You do not have to write long text.
Instead of publishing my name, I do other things that might be important:
People who know me know that I'm absolutely against racism. We are all human. Right now we are alone in this huge universe. Every human being deserves to be respected. No matter what skin color, nationality, gender, religion or anything else. Racism is stupid.
The branch name was changed from Master to Main some time ago. I know that the source code of LocalCDN contains discriminating terms like whitelist and blacklist. I will change these terms to "Allowlist" and "Blocklist". Unfortunately this isn't easy because I used the same terms for the extension storage. I could change this in the next version, but if a user skips exactly this update, it could cause problems. So yes, I will change that, but it takes some time. Issue that containing these changes: #138
No matter if before or after this change: I'm against racism.
Of course I also hate all other stupid things that harm or disadvantage another person (war, terror, violence, etc.)
My message to all racists and all who harm or disadvantage people: 🖕
Yes, you can find this overview here.
Deleting the wiki page 'Home' cannot be undone. Continue?