Captcha Solving
Fresh Source: docs.airtop.aiAirtop provides two approaches for handling captchas: the built-in solver and Chrome extension-based solvers.
Built-in Captcha Solver
The simplest approach. Enable it in session configuration and Airtop handles captchas automatically.
typescript
const session = await client.sessions.create({
configuration: {
solveCaptcha: true,
timeoutMinutes: 15,
},
});python
session = client.sessions.create(
configuration={
"solveCaptcha": True,
"timeoutMinutes": 15,
}
)When solveCaptcha is true, Airtop will automatically detect and attempt to solve captchas encountered during browsing.
Chrome Extension Approach
For more control or specialized captcha types, install a captcha-solving Chrome extension into the browser profile.
Supported Extensions
| Extension | Description |
|---|---|
| NopeCHA | Free tier available, supports reCAPTCHA, hCaptcha, FunCaptcha |
| CapSolver | Paid service, broad captcha type support |
| 2Captcha | Paid service, human-assisted solving |
Setup Steps
- Create a profile with the captcha extension installed
- Configure the extension with your API key (via Live View or programmatically)
- Save the profile so the extension persists
- Restore the profile in future sessions
typescript
// Step 1: Create session with profile for extension setup
const setupSession = await client.sessions.create({
configuration: {
persistProfile: true,
timeoutMinutes: 15,
},
});
// Step 2: Use Live View to install and configure the extension
const windowInfo = await client.windows.getWindowInfo(
setupSession.data.id,
windowId
);
console.log('Live View URL:', windowInfo.data.liveViewUrl);
// Navigate to chrome://extensions and install the solver
// Step 3: Save profile with extension
await client.sessions.terminate(setupSession.data.id, {
saveProfileOnTermination: 'captcha-solver-profile',
});
// Step 4: Use in future sessions
const session = await client.sessions.create({
configuration: {
profileName: 'captcha-solver-profile',
timeoutMinutes: 10,
},
});python
# Step 1: Create session with profile for extension setup
setup_session = client.sessions.create(
configuration={
"persistProfile": True,
"timeoutMinutes": 15,
}
)
# Step 2: Use Live View to install and configure the extension
window_info = client.windows.get_window_info(
setup_session.data.id, window_id
)
print(f"Live View URL: {window_info.data.live_view_url}")
# Step 3: Save profile with extension
client.sessions.terminate(
setup_session.data.id,
save_profile_on_termination="captcha-solver-profile"
)
# Step 4: Use in future sessions
session = client.sessions.create(
configuration={
"profileName": "captcha-solver-profile",
"timeoutMinutes": 10,
}
)Built-in vs Extension
| Feature | Built-in (solveCaptcha) | Chrome Extension |
|---|---|---|
| Setup | One config flag | Profile setup required |
| reCAPTCHA | Yes | Yes |
| hCaptcha | Yes | Depends on extension |
| Cost | Included in credits | Extension subscription + credits |
| Reliability | Good for common types | May handle edge cases better |
| Control | Automatic | Configurable per extension |
Best Practices
- Start with built-in —
solveCaptcha: trueis the easiest approach - Fall back to extensions if the built-in solver can't handle specific captcha types
- Increase timeout — captcha solving can take 10-30 seconds
- Combine with proxies — some captchas are IP-sensitive
- Test thoroughly — captcha behavior varies by site and region