Autoclicker

Autoclicker

ID: beilbfghjjeoajmbmlfbocjgbocmggap

Extension Info & Metadata

Status
Active
Version
0.0.2
Size
0.01 MB
Rating
2.3/5
Reviews
35
Users
10,000
Type
Extension
Updated
Nov 15, 2022
Category
Accessibility
Price
Free
Featured
Yes
Visibility
Listed
Mature
No
By Google
No
Trusted
Yes

Publisher Contextual Analysis

Trusted
Author
xela92View Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
1
Active
1
Obsolete
0
Listed
1
Unlisted
0
Total Users
10,000
Screenshot 1

Automatically click on element matching search criteria

Autoclicker aims to help you automate repetitive clicks on an element in the webpage. For instance, did you ever had to deal with a page that continuously, every 20 seconds, asks you to press a confirm button, that maybe appears and disappears for a certain time? This is the extension you're looking for to be able to avoid that! #NEW IN 0.0.5 - add option to persist clicking over page reload - minor bug fixes

Item
Type
Severity
Description
scripting
Permission
Critical
This permission allows injection and execution of JavaScript on any webpage. Rated Critical because it can modify page content, steal sensitive data, and inject malicious code into any site the extension has access to.
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.
activeTab
Permission
Medium
This permission grants temporary access to the current tab. Rated Medium because it can access current page content when invoked, though limited to user-initiated actions.

The popup UI script `clicker.js` is also registered as a content script that runs on every URL (`<all_urls>`) in every frame (`all_frames: true`). This is architecturally unnecessary — the extension's functionality only requires injecting code into the active tab on user demand via `chrome.scripting.executeScript`. Injecting into every page and every iframe creates an unnecessarily broad execution footprint and is inconsistent with the declared 'autoclicker' purpose.

manifest.json (Line 16)
{  "content_scripts": [    {      "matches": [        "<all_urls>"      ],      "js": [        "js/clicker.js"      ],      "run_at": "document_idle",      "all_frames": true    }  ]}

`chrome.scripting.executeScript` dynamically injects the `startSeekAndClick` function into any active tab on any website, where it then uses `setInterval` to continuously find and programmatically `.click()` DOM elements at a user-defined cadence. This capability combined with `<all_urls>` access enables automated click fraud on ad networks, manipulation of voting or review systems, or silent automated form submissions on any website the user visits — all without further user interaction after initial configuration.

js/clicker.js (Line 111)
let [tab] = await chrome.tabs.query({  active: true,  currentWindow: true});await chrome.scripting.executeScript({target: {tabId: tab.id},function: startSeekAndClick,});})});function startSeekAndClick() {  function getElementsByText(document, str, tag = 'button') {    return new Array(...document.getElementsByTagName(tag))      .filter(el => !!el && String(el.innerText)        .startsWith(str));  }  chrome.storage.sync.get("data", ({    data  }) => {    const interval = setInterval(() => {      let element;      // ...      element.click()    }, data.delay || 1000);  })}

The extension persists a reference to the matched DOM `element` object into `chrome.storage.sync`. Storing live DOM node references in sync storage is technically unsupported (they cannot serialize meaningfully), but the pattern reveals the extension is tracking which elements have been previously clicked across storage. Combined with the ability to target elements by arbitrary attribute key/value pairs, this could be used to interact with payment buttons, consent forms, or authentication elements while bypassing attribute-based guards.

js/clicker.js (Line 164)
if (!!data.customAttrib) {  const [attribKey, attribValue] = data.customAttrib.replaceAll('"', '')    .split("=")  if (element.hasAttribute(attribKey) && element.getAttribute(attribKey) === attribValue) {    element.click()  }} else {  element.click()}chrome.storage.sync.get("element", ({  oldElement}) => {  if (element !== oldElement) {    chrome.storage.sync.set({      interval,      element    })  }})

The popup loads a stylesheet from the Google Fonts CDN (`fonts.googleapis.com` / `fonts.gstatic.com`) every time the extension popup is opened. This causes the user's IP address and browser fingerprint to be transmitted to Google servers on every popup interaction, constituting passive tracking not disclosed to the user.

html/popup.html (Line 10)
<link rel="preconnect" href="https://fonts.googleapis.com">< link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>  < link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap" rel="stylesheet">

By severity

Critical0
High2
Medium1
Low1

Versions scanned

Showing 1 of 3 scanned versions with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
0.0.24

Files with findings

3 distinct paths — top paths by unique finding count:

  • js/clicker.js2
  • html/popup.html1
  • manifest.json1
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
high
js/clicker.js (line 111)`chrome.scripting.executeScript` dynamically injects the `startSeekAndClick` function into any active tab on any website, where it then uses `setInterval` to continuously find and programmatically `.click()` DOM eleme…
2Privilege Escalation
high
manifest.json (line 16)The popup UI script `clicker.js` is also registered as a content script that runs on every URL (`<all_urls>`) in every frame (`all_frames: true`). This is architecturally unnecessary — the extension's functionality on…
3Unauthorized Data Collection
medium
js/clicker.js (line 164)The extension persists a reference to the matched DOM `element` object into `chrome.storage.sync`. Storing live DOM node references in sync storage is technically unsupported (they cannot serialize meaningfully), but …
4Tracking
low
html/popup.html (line 10)The popup loads a stylesheet from the Google Fonts CDN (`fonts.googleapis.com` / `fonts.gstatic.com`) every time the extension popup is opened. This causes the user's IP address and browser fingerprint to be transmitt…
URLs
4
IPv4
0
IPv6
0

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

fonts.googleapis.com-https://fonts.googleapis.com
fonts.gstatic.com-https://fonts.gstatic.com
fonts.googleapis.com/css2https://fonts.googleapis.com/css2?family=Roboto:wght@300&display=swap
clients2.google.com/service/update2/crxhttps://clients2.google.com/service/update2/crx

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Showing 1 to 3 of 10 rows
Rows per page:

Code Diff

Compare extension code between any two versions.

0 changed files (scanned top 25 shared text files)

No comparable text files found between these versions.

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.