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>
|