# Extension Quickstart

### Loading the NopeCHA extension in a browser.
- Pros

    [!badge variant="success" text=":icon-plus:"] Faster and consumes fewer credits than the [!badge variant="primary" text="Token API"].

    [!badge variant="success" text=":icon-plus:"] Updated regularly to support new CAPTCHA technologies.

    [!badge variant="success" text=":icon-plus:"] Automated in a way that is indistinguishable from a human user.

- Cons

    [!badge variant="danger" text=":icon-dash:"] Browser required (e.g. Chrome, Firefox, Edge, Opera, Brave).

!!!
While the official NopeCHA extension is undetectable, it is important to choose the right extension host to avoid detection. Popular browser automation tools (e.g., `Selenium`, `Puppeteer`, or `Playwright`) are easily detected by CAPTCHA providers and websites. We recommend using a patched browser automation tool (e.g., `nodriver`) or a standard browser with automation performed either at the OS level (e.g., using `PyAutoGUI`) or from within the browser itself (e.g., via a custom extension or userscript).
!!!

!!!
If you need to automatically apply a custom extension setting for each new browser profile (e.g., automatically setting your API key), you can refer to the [Extension for Experts](/guides/extension_advanced.md) guide to pre-configure the extension so that it is ready to use without manual configuration.
!!!

---

## Official NopeCHA browser extensions

[!ref target="blank" text="Chrome Web Store"](https://nopecha.com/chrome)
[!ref target="blank" text="Firefox Add-on"](https://nopecha.com/firefox)

```python
import requests
import zipfile
from selenium import webdriver

NOPECHA_KEY = ''  # Enter your key here or leave empty to use the free credits.

options = webdriver.chrome.options.Options()
options.add_argument('--no-sandbox')
options.add_argument('--disable-infobars')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)

# Download the latest NopeCHA extension release.
response = requests.get(url='https://github.com/NopeCHALLC/nopecha-extension/releases/latest/download/chromium.zip')
with open(file='chromium.zip', mode='wb') as f:
    f.write(response.content)
with zipfile.ZipFile(file='chromium.zip', mode='r') as z:
    z.extractall(path='chromium')
options.add_argument('--load-extension=chromium')

# Start the driver.
driver = webdriver.Chrome(options=options)

# Set the subscription key for the extension by visiting this URL.
# You can programmatically import all extension settings using this method.
# To learn more, go to "Export Settings" in the extension popup.
driver.get(f"https://nopecha.com/setup#{NOPECHA_KEY}")

# Go to any page with a CAPTCHA and the extension will automatically solve it.
driver.get('https://nopecha.com/demo/recaptcha')
```
```python
import requests
import zipfile
import undetected_chromedriver.v2 as uc

NOPECHA_KEY = ''  # Enter your key here or leave empty to use the free credits.

options = uc.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('--disable-infobars')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_argument('--no-first-run --no-service-autorun --password-store=basic')

# Download the latest NopeCHA extension release.
response = requests.get(url='https://github.com/NopeCHALLC/nopecha-extension/releases/latest/download/chromium.zip')
with open(file='chrome.zip', mode='wb') as f:
    f.write(response.content)
with zipfile.ZipFile(file='chrome.zip', mode='r') as z:
    z.extractall(path='chromium')
options.add_argument('--load-extension=chromium')

# Start the driver.
driver = uc.Chrome(options=options)

# Set the subscription key for the extension by visiting this URL.
# You can programmatically import all extension settings using this method.
# To learn more, go to "Export Settings" in the extension popup.
driver.get(f"https://nopecha.com/setup#{NOPECHA_KEY}")

# Go to any page with a CAPTCHA and the extension will automatically solve it.
driver.get('https://nopecha.com/demo/recaptcha')
```
