diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..10d626d --- /dev/null +++ b/LICENSE @@ -0,0 +1,3 @@ +All original code was developed by GPU Drops. +Original source can be obtained by seeing the first commit in the repository, and was obtained from https://chrome.google.com/webstore/detail/noptcha-recaptcha-hcaptch/dknlfmjaanfblgfdfebhijalfmhmjjjo +No warranty or guarantee is provided that this extension will function or be updated. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..79c9350 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# Noptcha, without affiliate link injection + +Noptcha is a reCaptcha and hCaptcha solving extension created by GPU Drops. + +This fork was made because I hate tracking stuff and I use an ad blocker (like you should on the modern internet) and also hate captchas, but I don't really want people over at GPU Drops to profit off me using their AI captcha solver. + +Unfortunately, I discovered that the extension redirects some websites to have affilate tracking codes. I have prettified the code, made some of it readable and removed such functionality. + +Most of the changes are in [background.js](background.js) and all tracking functionality _can_ be disabled by removing the `start()` call near the end of the file. + +None of the original code in here belongs to me. + +No warranty or guarantee is provided that this extension will function or be updated. + +[Original extension](https://chrome.google.com/webstore/detail/noptcha-recaptcha-hcaptch/dknlfmjaanfblgfdfebhijalfmhmjjjo) \ No newline at end of file diff --git a/manifest.json b/manifest.json index 77bce99..912241f 100644 --- a/manifest.json +++ b/manifest.json @@ -28,7 +28,7 @@ "matches": [ "*://*.google.com/recaptcha/*", "*://*.recaptcha.net/recaptcha/*", "*://recaptcha.net/recaptcha/*" ], "run_at": "document_start" } ], - "description": "Automatically solve CAPTCHAs using AI.", + "description": "Automatically solve CAPTCHAs using AI. Affiliate tracking link injection has been removed.", "host_permissions": [ "\u003Call_urls>" ], "icons": { "128": "icon/128.png", @@ -36,7 +36,6 @@ "32": "icon/32.png", "48": "icon/48.png" }, - "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlWiyXSK0GK0nDwOfOJ2zUvRv99E2XU6LnR67zKE5RjM2icff7Cwmo6nR5i+4UukShIyEaDdQsbC+vyTpDeaJMn+bNphPYjQxGY6spIk3KV1h71Jj0dSUOYUwGrViKg3LnC4LKtENYOsbIxTmMw8JG4oH1hU1tY4KlnSzcqiwTaDLTP0X7MVdDK0WPOyypNlkL7v1HWMjPZa32EudqcrWub/EMpMFuSugTyIu8dHaAQhW13RkU77BiMRoZfZYxbcED48YPmZS8qi3KOrymjOTWCJeDMjwy/MLCqrwhjoG1Y5jDXHFbxNUPxEJYw9mxxPTN+asraML9tywlLuzZluHwwIDAQAB", "manifest_version": 3, "name": "Noptcha: ReCAPTCHA & hCAPTCHA Solver", "permissions": [ "storage", "scripting", "declarativeNetRequest", "webRequest" ], diff --git a/popup.css b/popup.css index d95a1f6..e47d701 100644 --- a/popup.css +++ b/popup.css @@ -44,12 +44,15 @@ html, body { .clickable:hover { opacity: 0.8; } +.disclaimer { + font-weight: 600; +} #main { padding: 8px 16px; } -#footer { +.footer { margin-top: 8px; width: 100%; text-align: center; diff --git a/popup.html b/popup.html index 0a23415..6dc1e30 100644 --- a/popup.html +++ b/popup.html @@ -55,7 +55,11 @@ -->
- + +
+ +
+
diff --git a/popup.js b/popup.js index 35f411f..8d5d702 100644 --- a/popup.js +++ b/popup.js @@ -64,9 +64,11 @@ async function set_select(e, t) { } async function main() { document.querySelector("#footer").addEventListener("click", async () => { - await BG.exec("open_tab", { - url: "https://discord.gg/gpudrops" - }) + if (confirm("Warning: You're using a modified version of this extension with affiliate tracking removed, and it might not be completely up to date. Would you still like to continue to \"discord.gg/gpudrops\" for support?")) { + await BG.exec("open_tab", { + url: "https://discord.gg/gpudrops" + }) + } } ); var e = await BG.exec("get_settings"); @@ -81,7 +83,7 @@ async function main() { c.addEventListener("input", () => set_field(c.id, c.value)); for (const o of document.querySelectorAll(".settings_group select")) o.addEventListener("change", () => set_select(o.id, o.value)); - async function t() { + async function queryServerStatus() { var e = await BG.exec("get_server_status"); if (["Online", "Offline", "Slow", "Update Required"].includes(e)) { const t = document.querySelector("#server_status"); @@ -92,7 +94,7 @@ async function main() { "Online" === e ? t.classList.add("green") : "Offline" === e ? t.classList.add("red") : "Slow" !== e && "Update Required" !== e || t.classList.add("yellow") } } - await t(), - setInterval(t, 1e3) + await queryServerStatus(), + setInterval(queryServerStatus, 1e3) } document.addEventListener("DOMContentLoaded", main);