Skip to content

Extensions Payload

The Extensions Payload feature lets you inject Chrome browser extensions into your automation’s browser. This is useful for adding functionality like ad blocking, cookie management, or custom scripts that enhance your automation’s capabilities.

Think of it like installing browser extensions in your regular Chrome browser, except RTILA X does it automatically every time the automation runs, and the extensions are specific to each browser profile.

Extensions can enhance your automation in several ways:

Use Case Extension Example Benefit
Ad blocking uBlock Origin, AdBlock Plus Removes ads that slow down page loads and interfere with element selection
Cookie consent handling I don’t care about cookies Automatically dismisses cookie consent banners
Custom scripts Tampermonkey, Greasemonkey Inject custom JavaScript to modify page behavior
Proxy management Proxy SwitchyOmega Advanced proxy configuration
Privacy protection Privacy Badger, Ghostery Block trackers that might detect automation
Developer tools Various debugging tools Inspect and debug page structure

The most common use of extensions is ad blocking. Ads can:

  • Slow down page loads significantly
  • Cover content you’re trying to extract
  • Trigger anti-bot detection (some ad networks track automation)
  • Interfere with element selectors (ads may overlap your target elements)

By injecting an ad blocker, you get faster page loads and cleaner page structure.

  1. Go to Browser Profiles in the sidebar.
  2. Create a new profile or edit an existing one.
  3. In the profile settings, find the Extensions Payload section.
  4. Enter Chrome Web Store extension URLs, one per line.
  5. Click Save.

Extensions must be specified as Chrome Web Store URLs:

https://chromewebstore.google.com/detail/extension-name/abcdefghijklmnop

The URL must match this pattern:

https://chromewebstore.google.com/detail/<extension-name>/<extension-id>

Or the older format:

https://chrome.google.com/webstore/detail/<extension-name>/<extension-id>
  1. Open Chrome or Edge browser.
  2. Go to the Chrome Web Store.
  3. Search for the extension you want.
  4. Click on the extension to open its detail page.
  5. Copy the URL from your browser’s address bar.
https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm
https://chromewebstore.google.com/detail/i-dont-care-about-cookies/fihnjjcciajhdojfnbdddfaoknhalnja

This configuration injects:

  • uBlock Origin — for ad blocking
  • I don’t care about cookies — for automatic cookie consent dismissal

When you assign a browser profile with extensions to a project and run it, here’s what happens:

Project Run Starts
│
▼
Profile Loaded
│
▼
Extensions List Read
│
▼
For Each Extension URL:
│
├──► Check if already installed
│ │
│ ├── Yes → Skip (use existing)
│ │
│ └── No → Download
│ │
│ ▼
│ Download CRX file
│ │
│ ▼
│ Extract CRX to ZIP
│ │
│ ▼
│ Extract ZIP to directory
│ │
│ ▼
│ Add to load list
│
▼
Browser Launches with Extensions
│
▼
Automation Runs
  1. Profile is loaded — When the project starts, RTILA X loads the assigned browser profile.

  2. Extensions list is read — The extensionsList field from the profile is parsed. Each line is treated as a separate extension URL.

  3. For each extension URL:

    a. Check if already installed — RTILA X checks if the extension is already downloaded and extracted in the profile’s extensions directory. If it exists, it skips to the next extension.

    b. Download the CRX file — If not installed, RTILA X constructs a download URL and downloads the extension’s CRX file from Google’s servers.

    c. Extract the CRX — CRX files are essentially ZIP files with a header. RTILA X finds the ZIP data within the CRX and extracts it.

    d. Extract to directory — The ZIP contents are extracted into a directory specific to that extension within the profile’s extensions folder.

    e. Add to load list — The extension’s directory path is added to the list of extensions to load.

  4. Browser launches — The browser is launched with all extensions loaded via the --load-extension command-line flag.

  5. Automation runs — Your automation runs with all extensions active.

RTILA X constructs the download URL using this format:

https://clients2.google.com/service/update2/crx?response=redirect&os=<os>&arch=<arch>&os_arch=<os_arch>&nacl_arch=<arch>&prodversion=130.0.0.0&acceptformat=crx2,crx3&x=id%3D<extension-id>%26uc

Where:

  • <os> is your operating system (win, mac, linux)
  • <arch> is your CPU architecture (x86-64, arm)
  • <extension-id> is the extension’s unique ID from the Chrome Web Store URL

The extension ID is extracted from the Chrome Web Store URL using a regular expression:

/detail/<extension-name>/<extension-id>

The extension ID is always a 32-character lowercase string (e.g., cjpalhdlnbpafiamejdnhcphjbkeiagm).

Currently, only Chrome Web Store extensions are supported.

Source Supported? Notes
Chrome Web Store ✅ Yes Full support for all published extensions
Local CRX files ❌ No Not currently supported
Local unpacked extensions ❌ No Not currently supported
Firefox extensions ❌ No Different format, not supported
Edge-specific extensions ⚠️ Partial Only if also available on Chrome Web Store
  • The Chrome Web Store has a standardized download API that RTILA X can use.
  • Extensions are packaged in a consistent CRX format.
  • Extension IDs are stable and predictable.
  • The download URL construction is reliable.
Limitation Description Workaround
Chrome Web Store only Only extensions published on the Chrome Web Store can be injected Publish your extension to the Chrome Web Store
No local extensions Cannot load extensions from local directories Use Chrome Web Store or Tampermonkey scripts
Download required Extensions are downloaded each time they’re first used Extensions are cached after first download
No extension settings Extension settings are not persisted between runs Configure extensions via their default behavior
Extension updates Extensions are not automatically updated Delete the profile’s extension cache to force re-download
Extension conflicts Multiple extensions may conflict with each other Test extensions together before production use
Performance overhead Each extension adds overhead to browser startup Limit the number of extensions to what’s necessary

Once an extension is downloaded and extracted, it’s cached in the profile’s extensions directory:

~/.rtila-x/profiles/<profile-id>/extensions/
├── <extension-id-1>/ ← Extracted extension 1
│ ├── manifest.json
│ ├── background.js
│ └── ...
├── <extension-id-2>/ ← Extracted extension 2
│ └── ...
└── ...

On subsequent runs, RTILA X checks if the extension directory exists. If it does, the download is skipped and the cached version is used.

To force a re-download of an extension:

  1. Close RTILA X completely.
  2. Navigate to ~/.rtila-x/profiles/<profile-id>/extensions/.
  3. Delete the directory for the specific extension you want to re-download.
  4. Restart RTILA X. The extension will be re-downloaded on the next run.

Here are some commonly used extensions for web automation:

Extension Chrome Web Store URL Description
uBlock Origin https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm Fast, efficient ad blocker
AdBlock Plus https://chromewebstore.google.com/detail/adblock-plus-free-ad-bloc/cfhdojbkjhnklbpkdaibdccddilifddb Popular ad blocker
Extension Chrome Web Store URL Description
I don’t care about cookies https://chromewebstore.google.com/detail/i-dont-care-about-cookies/fihnjjcciajhdojfnbdddfaoknhalnja Auto-dismisses cookie banners
Extension Chrome Web Store URL Description
Tampermonkey https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo Inject custom JavaScript via userscripts
Extension Chrome Web Store URL Description
Privacy Badger https://chromewebstore.google.com/detail/privacy-badger/pkehgijcmpdhfbdbbnkijodmdjhbjlgp Blocks trackers
Ghostery https://chromewebstore.google.com/detail/ghostery-privacy-ad-block/mlomiejdfkolichcflejclcbmpeaniij Tracker and ad blocker

Tip: Start with just an ad blocker. Add more extensions only if you need specific functionality. Each extension adds overhead.

Extensions are configured per browser profile. This means:

Scenario Result
Profile A has uBlock Origin, Profile B has no extensions Projects using Profile A get ad blocking. Projects using Profile B don’t.
Profile A has extensions, Default profile has no extensions Projects with Profile A get extensions. Projects with Default don’t.
Two profiles have the same extension The extension is downloaded once and cached per profile.

Extensions can complement other stealth features:

Feature Extension Complement
Proxies Extensions work through the proxy connection
Humanoid behavior Extensions don’t interfere with humanoid mouse movements
CAPTCHA solving Extensions don’t affect CAPTCHA solving
Fingerprint alignment Extensions don’t affect fingerprint alignment

Note: Extensions are loaded into the browser context. They don’t interfere with RTILA X’s core stealth features. However, some extensions may add their own network requests, which could potentially be detected by advanced anti-bot systems.

Problem Solution
Extension not loading Verify the Chrome Web Store URL is correct. Make sure the extension is available and not removed.
Extension download fails Check your internet connection. The download URL may be temporarily unavailable.
Extension conflicts with automation Try disabling the extension or using a different extension.
Extension not working as expected Some extensions require user interaction to configure. They may not work fully in headless mode.
Browser startup is slow Too many extensions. Remove unnecessary extensions.
Extension settings not persisting Extension settings are not persisted between runs. This is a known limitation.
Extension requires permissions Some extensions require permissions that may not be granted in automation mode.
CRX extraction fails The CRX file may be corrupted. Delete the extension cache and try again.
Tip Description
Start with just an ad blocker It provides the most benefit with the least overhead
Test extensions before production Launch the browser manually and verify the extension works
Limit the number of extensions Each extension adds startup overhead and potential conflicts
Use per-profile extensions Different projects may need different extensions
Clear extension cache if issues occur Delete the extension directory to force a re-download
Check extension compatibility Some extensions may not work in headless mode
Monitor browser startup time If startup is slow, remove unnecessary extensions
Use Tampermonkey for custom scripts Instead of creating custom extensions, use Tampermonkey with userscripts
Test with and without extensions Compare automation results with and without extensions to identify issues
Document which extensions you use Keep a record of which extensions each profile uses for future reference