Spaces:
Running
Running
Upload folder using huggingface_hub
Browse files- background.js +11 -0
- brainly.crx +0 -0
- brainly.pem +28 -0
- brainly/background.js +28 -0
- brainly/icons/64.png +0 -0
- brainly/icons/icon128.png +0 -0
- brainly/icons/icon16.png +0 -0
- brainly/icons/icon48.png +0 -0
- brainly/manifest.json +29 -0
- brainly/popup.html +20 -0
- brainly/popup.js +41 -0
- popup.html +13 -0
background.js
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
chrome.runtime.onInstalled.addListener(() => {
|
2 |
+
chrome.storage.sync.set({ blockedSites: [] });
|
3 |
+
});
|
4 |
+
|
5 |
+
chrome.webRequest.onBeforeRequest.addListener(
|
6 |
+
(details) => {
|
7 |
+
return { cancel: true };
|
8 |
+
},
|
9 |
+
{ urls: ["*://*.example.com/*"], types: ["script"] },
|
10 |
+
["blocking"]
|
11 |
+
);
|
brainly.crx
ADDED
Binary file (8.48 kB). View file
|
|
brainly.pem
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
-----BEGIN PRIVATE KEY-----
|
2 |
+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCjG4MmKn4D6DRH
|
3 |
+
RtCQNZ7vmETLjMDSIhBbP8G1Jmrjhm5Vq9hy0+fZSQcc3PgN/JFCkTkeVSIxiskp
|
4 |
+
MYKLEc9BfBzwT4e0zVLfxER+QyDepKZ2HMD59CzuEm6mdPwts5XAF2PKQuAUPloB
|
5 |
+
IWHUMZQiUZdX2j8e1TCKkjGobki/VjDfmJakjkeDhF7vNdUvBvxnV5e1KaKXY84G
|
6 |
+
Nl/tpj/aMMCaJSHoQfgDGFdhQ6BXaZmKRekG/CYXrZosgfdjB7lf1rYP8W6kepyZ
|
7 |
+
wB4RIAIMkER9aDhehTOAyLrSonk7FkiFsOFBbTGdKY3udhVvTeFW8WXCOVML15gH
|
8 |
+
lL7D+eKPAgMBAAECggEAQxny8vUhQZc6RqZ18BX3LGeOydS+kNRNuVR56v4ClFb+
|
9 |
+
NkWLtvXBmK0H/ZJUhGCHHAUlo/pvJkWL62QAahkqFC0stJprYHDl6sPST8VrFN1U
|
10 |
+
1BuRMmOHRmwT1GwlQOH0NgIJXjD0AbADFBr5JbQ91n6NjilttVAMd72cK0gvqnLx
|
11 |
+
P6n0Mgvai2Eiv4RHgJA1TvuBVbkWwxkBjCZbVd+CZ7bDxv2TRBK3n7IecZQ8aTbS
|
12 |
+
18H9xvVCStJvWfNoF8biQYt1PM6NBD4MB5xFrt+Px3MWZ7ILCn8W7/Hnd06QZW/J
|
13 |
+
WpcHiHsU8f0kEy54uxD6RquIy7hcI+OCEIEQ+6m7IQKBgQDVUij6j8bGpfUOZ0Lv
|
14 |
+
W+zSVA5FqE4u+oPyP1yD9qGuJGBTDP/nS0/sDspG8kkaKUzwD9y2oah/ECd2ZjCo
|
15 |
+
3NLI67qgyBoVTt1Ql+mUvxajQaHvpLxg9ZT05Bl2DPBNRX3SA4w62QG1JfZ1KSgA
|
16 |
+
k5SeYWqYphmlLlGVIAGuqXaUoQKBgQDDvYa9q3g1qG739I6usENSXZsPZJxmau2X
|
17 |
+
d9WYmuTVjM22Yp5eZf0Mr66fWv1pJRNBtND9yM0O49DYTMKI0TLdQpJ4F8F0gtpV
|
18 |
+
Q2mbU42xAo3YK1hK4hugwcrtsQBVMjvYgfWI2YwVU0Y89TsN5ejsXisR9LG2woI8
|
19 |
+
zhuKKiT5LwKBgQCU5TQVMCXeohfaZdkimVdDt8f+duubfuB6Rh+dPJi9pEZXscss
|
20 |
+
9jRi4C/wNU0xJYK+TVQRZeTmS7A/xDRSqU+3TlKFxyXtmY6Aoog3eumiKj2Nt76F
|
21 |
+
LuU5yby72Wwhg0+/Nxq6OJ4ogsb0IDX7sQcbRYPR6J4d3aa0IBMMhtxuAQKBgDXi
|
22 |
+
5Uct/2f2OKZ2YxlgWQhB0MBKGGxxn3sFeH4Mllbb7n35ZFPki+eELfSc3gqmNEjw
|
23 |
+
eGCFeT5SJVqGtz9nKDOVcjExiQaER4sVhetG80j5xQbv19y1ppl5AF6zTb4mmCcg
|
24 |
+
j/HewhvU0w9RC7LlylvYCM9mp84Cekw3CYnd1FPtAoGAGi9lMQnH63bz/uoN3Htj
|
25 |
+
MTJwz4xqWZ3UaSeaGUZLa/IZWJC4ba2UjMqQ2QYzNll3vaBA+LMPPtEq2Mbih4Bi
|
26 |
+
ovAAnxKVXvvdWJrFb2+14DpT9AFH2oD1yi6gs4QiJvfLgmMaQn7sVwoArEoKNWX7
|
27 |
+
NIs+aUIdgfNZgbN2vSGzdTY=
|
28 |
+
-----END PRIVATE KEY-----
|
brainly/background.js
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
chrome.runtime.onInstalled.addListener(() => {
|
2 |
+
chrome.storage.sync.set({ blockedSites: [] });
|
3 |
+
updateDeclarativeNetRequestRules();
|
4 |
+
});
|
5 |
+
|
6 |
+
chrome.storage.onChanged.addListener((changes, namespace) => {
|
7 |
+
if (namespace === 'sync' && changes.blockedSites) {
|
8 |
+
updateDeclarativeNetRequestRules();
|
9 |
+
}
|
10 |
+
});
|
11 |
+
|
12 |
+
async function updateDeclarativeNetRequestRules() {
|
13 |
+
const { blockedSites } = await chrome.storage.sync.get('blockedSites');
|
14 |
+
const rules = blockedSites.map((site, index) => ({
|
15 |
+
id: index + 1,
|
16 |
+
priority: 1,
|
17 |
+
action: { type: 'block' },
|
18 |
+
condition: {
|
19 |
+
urlFilter: `||${site}^`,
|
20 |
+
resourceTypes: ['script']
|
21 |
+
}
|
22 |
+
}));
|
23 |
+
|
24 |
+
await chrome.declarativeNetRequest.updateDynamicRules({
|
25 |
+
removeRuleIds: rules.map(rule => rule.id),
|
26 |
+
addRules: rules
|
27 |
+
});
|
28 |
+
}
|
brainly/icons/64.png
ADDED
![]() |
brainly/icons/icon128.png
ADDED
![]() |
brainly/icons/icon16.png
ADDED
![]() |
brainly/icons/icon48.png
ADDED
![]() |
brainly/manifest.json
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"manifest_version": 3,
|
3 |
+
"name": "JavaScript Disabler",
|
4 |
+
"version": "1.0",
|
5 |
+
"description": "Disables JavaScript on specified websites and their subdomains.",
|
6 |
+
"permissions": [
|
7 |
+
"storage",
|
8 |
+
"declarativeNetRequest"
|
9 |
+
],
|
10 |
+
"host_permissions": [
|
11 |
+
"<all_urls>"
|
12 |
+
],
|
13 |
+
"background": {
|
14 |
+
"service_worker": "background.js"
|
15 |
+
},
|
16 |
+
"action": {
|
17 |
+
"default_popup": "popup.html",
|
18 |
+
"default_icon": {
|
19 |
+
"16": "icons/icon16.png",
|
20 |
+
"48": "icons/icon48.png",
|
21 |
+
"128": "icons/icon128.png"
|
22 |
+
}
|
23 |
+
},
|
24 |
+
"icons": {
|
25 |
+
"16": "icons/icon16.png",
|
26 |
+
"48": "icons/icon48.png",
|
27 |
+
"128": "icons/icon128.png"
|
28 |
+
}
|
29 |
+
}
|
brainly/popup.html
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<title>JavaScript Disabler</title>
|
5 |
+
<style>
|
6 |
+
body { width: 300px; padding: 10px; }
|
7 |
+
ul { list-style-type: none; padding: 0; }
|
8 |
+
li { margin-bottom: 5px; }
|
9 |
+
button { margin-left: 5px; }
|
10 |
+
</style>
|
11 |
+
</head>
|
12 |
+
<body>
|
13 |
+
<h1>JavaScript Disabler</h1>
|
14 |
+
<input type="text" id="site" placeholder="Enter domain (e.g., example.com)">
|
15 |
+
<button id="addSite">Add Site</button>
|
16 |
+
<h2>Blocked Sites:</h2>
|
17 |
+
<ul id="siteList"></ul>
|
18 |
+
<script src="popup.js"></script>
|
19 |
+
</body>
|
20 |
+
</html>
|
brainly/popup.js
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
document.getElementById('addSite').addEventListener('click', addSite);
|
2 |
+
|
3 |
+
function addSite() {
|
4 |
+
const site = document.getElementById('site').value.trim();
|
5 |
+
if (site) {
|
6 |
+
chrome.storage.sync.get('blockedSites', (data) => {
|
7 |
+
const blockedSites = new Set(data.blockedSites || []);
|
8 |
+
blockedSites.add(site);
|
9 |
+
chrome.storage.sync.set({ blockedSites: Array.from(blockedSites) }, () => {
|
10 |
+
updateSiteList();
|
11 |
+
document.getElementById('site').value = '';
|
12 |
+
});
|
13 |
+
});
|
14 |
+
}
|
15 |
+
}
|
16 |
+
|
17 |
+
function removeSite(site) {
|
18 |
+
chrome.storage.sync.get('blockedSites', (data) => {
|
19 |
+
const blockedSites = new Set(data.blockedSites || []);
|
20 |
+
blockedSites.delete(site);
|
21 |
+
chrome.storage.sync.set({ blockedSites: Array.from(blockedSites) }, updateSiteList);
|
22 |
+
});
|
23 |
+
}
|
24 |
+
|
25 |
+
function updateSiteList() {
|
26 |
+
chrome.storage.sync.get('blockedSites', (data) => {
|
27 |
+
const siteList = document.getElementById('siteList');
|
28 |
+
siteList.innerHTML = '';
|
29 |
+
(data.blockedSites || []).forEach((site) => {
|
30 |
+
const li = document.createElement('li');
|
31 |
+
li.textContent = site;
|
32 |
+
const removeButton = document.createElement('button');
|
33 |
+
removeButton.textContent = 'Remove';
|
34 |
+
removeButton.onclick = () => removeSite(site);
|
35 |
+
li.appendChild(removeButton);
|
36 |
+
siteList.appendChild(li);
|
37 |
+
});
|
38 |
+
});
|
39 |
+
}
|
40 |
+
|
41 |
+
updateSiteList();
|
popup.html
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
<title>JavaScript Disabler</title>
|
5 |
+
<script src="popup.js"></script>
|
6 |
+
</head>
|
7 |
+
<body>
|
8 |
+
<h1>JavaScript Disabler</h1>
|
9 |
+
<input type="text" id="site" placeholder="Enter site URL">
|
10 |
+
<button id="addSite">Add Site</button>
|
11 |
+
<ul id="siteList"></ul>
|
12 |
+
</body>
|
13 |
+
</html>
|