Manage AdsPower antidetect browser profiles for multi-account marketing automation and campaigns
Scanned 9/9/2026
Install to Claude Code
npx -y skills add Lord1Egypt/awesome-skill-forge --skill skills-sh_aradotso_marketing-skills_adspower-antidetect-browser --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Skills Sh Aradotso Marketing Skills Adspower Antidetect Browser?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/lord1egypt-skills-sh-aradotso-marketing-skills-adspower-antid)More formats (shields.io, HTML) on the badges page.
---
name: adspower-antidetect-browser
description: Manage AdsPower antidetect browser profiles for multi-account marketing automation and campaigns
triggers:
- "create adspower browser profile"
- "manage multiple browser profiles for marketing"
- "set up antidetect browser automation"
- "configure adspower profiles for campaigns"
- "automate multi-account browser sessions"
- "use adspower api for browser control"
- "launch adspower profiles programmatically"
- "manage browser fingerprints for marketing"
---
# AdsPower Antidetect Browser Skill
> Skill by [ara.so](https://ara.so) — Marketing Skills collection.
## Overview
AdsPower is an antidetect browser platform that allows marketing teams to manage multiple browser profiles with unique fingerprints for multi-account operations, ad campaigns, and automation workflows. Each profile has isolated cookies, storage, and unique browser fingerprints to prevent account association and detection.
## Installation
AdsPower requires the desktop application installed on your system:
1. Download AdsPower from the official website
2. Install the application for your operating system (Windows/macOS)
3. Launch AdsPower and create an account
4. Enable API access in Settings → API Settings
## API Access
AdsPower provides a local HTTP API (default port: 50325) for programmatic control.
### Base Configuration
```python
import requests
import os
# AdsPower local API endpoint
ADSPOWER_API_BASE = "http://localhost:50325/api/v1"
# Optional: If using cloud API
ADSPOWER_API_KEY = os.getenv("ADSPOWER_API_KEY")
```
```javascript
const axios = require('axios');
const ADSPOWER_API_BASE = 'http://localhost:50325/api/v1';
const API_KEY = process.env.ADSPOWER_API_KEY;
```
## Core Operations
### Create Browser Profile
```python
def create_profile(name, group_id=None, fingerprint_config=None):
"""Create a new browser profile"""
url = f"{ADSPOWER_API_BASE}/user/create"
payload = {
"name": name,
"group_id": group_id or "0",
"domain_name": "",
"open_urls": [],
"repeat_config": fingerprint_config or []
}
response = requests.post(url, json=payload)
data = response.json()
if data.get("code") == 0:
return data["data"]["id"]
else:
raise Exception(f"Failed to create profile: {data.get('msg')}")
# Usage
profile_id = create_profile(
name="Campaign_Profile_1",
group_id="marketing_team"
)
print(f"Created profile: {profile_id}")
```
```javascript
async function createProfile(name, groupId = '0') {
const response = await axios.post(`${ADSPOWER_API_BASE}/user/create`, {
name: name,
group_id: groupId,
domain_name: '',
open_urls: []
});
if (response.data.code === 0) {
return response.data.data.id;
}
throw new Error(`Failed to create profile: ${response.data.msg}`);
}
// Usage
const profileId = await createProfile('Campaign_Profile_1', 'marketing_team');
console.log(`Created profile: ${profileId}`);
```
### Launch Browser Profile
```python
def start_profile(profile_id, launch_args=None):
"""Launch a browser profile and return connection details"""
url = f"{ADSPOWER_API_BASE}/browser/start"
params = {
"user_id": profile_id,
"launch_args": launch_args or []
}
response = requests.get(url, params=params)
data = response.json()
if data.get("code") == 0:
return {
"ws_endpoint": data["data"]["ws"]["puppeteer"],
"selenium_endpoint": data["data"]["ws"]["selenium"],
"debug_port": data["data"]["debug_port"]
}
else:
raise Exception(f"Failed to start profile: {data.get('msg')}")
# Usage
connection = start_profile(profile_id)
print(f"WebSocket: {connection['ws_endpoint']}")
```
```javascript
async function startProfile(profileId) {
const response = await axios.get(`${ADSPOWER_API_BASE}/browser/start`, {
params: { user_id: profileId }
});
if (response.data.code === 0) {
return {
wsEndpoint: response.data.data.ws.puppeteer,
seleniumEndpoint: response.data.data.ws.selenium,
debugPort: response.data.data.debug_port
};
}
throw new Error(`Failed to start profile: ${response.data.msg}`);
}
```
### Close Browser Profile
```python
def stop_profile(profile_id):
"""Close a running browser profile"""
url = f"{ADSPOWER_API_BASE}/browser/stop"
params = {"user_id": profile_id}
response = requests.get(url, params=params)
data = response.json()
return data.get("code") == 0
# Usage
stop_profile(profile_id)
```
## Automation Integration
### With Selenium
```python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def connect_selenium(profile_id):
"""Connect Selenium to AdsPower profile"""
connection = start_profile(profile_id)
chrome_options = Options()
chrome_options.add_experimental_option(
"debuggerAddress",
f"127.0.0.1:{connection['debug_port']}"
)
driver = webdriver.Chrome(options=chrome_options)
return driver
# Usage
driver = connect_selenium(profile_id)
driver.get("https://example.com")
# Perform automation tasks
driver.quit()
stop_profile(profile_id)
```
### With Puppeteer
```javascript
const puppeteer = require('puppeteer-core');
async function connectPuppeteer(profileId) {
const connection = await startProfile(profileId);
const browser = await puppeteer.connect({
browserWSEndpoint: connection.wsEndpoint,
defaultViewport: null
});
return browser;
}
// Usage
(async () => {
const browser = await connectPuppeteer(profileId);
const page = await browser.newPage();
await page.goto('https://example.com');
// Perform automation tasks
await browser.disconnect();
await stopProfile(profileId);
})();
```
### With Playwright
```python
from playwright.sync_api import sync_playwright
def connect_playwright(profile_id):
"""Connect Playwright to AdsPower profile"""
connection = start_profile(profile_id)
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(connection['ws_endpoint'])
return browser
# Usage
browser = connect_playwright(profile_id)
page = browser.new_page()
page.goto("https://example.com")
# Perform automation tasks
browser.close()
stop_profile(profile_id)
```
## Profile Management
### List All Profiles
```python
def list_profiles(group_id=None, page=1, page_size=100):
"""Get all browser profiles"""
url = f"{ADSPOWER_API_BASE}/user/list"
params = {
"page": page,
"page_size": page_size
}
if group_id:
params["group_id"] = group_id
response = requests.get(url, params=params)
data = response.json()
if data.get("code") == 0:
return data["data"]["list"]
return []
# Usage
profiles = list_profiles(group_id="marketing_team")
for profile in profiles:
print(f"{profile['user_id']}: {profile['name']}")
```
### Update Profile Configuration
```python
def update_profile(profile_id, updates):
"""Update profile settings"""
url = f"{ADSPOWER_API_BASE}/user/update"
payload = {
"user_id": profile_id,
**updates
}
response = requests.post(url, json=payload)
data = response.json()
return data.get("code") == 0
# Usage
update_profile(profile_id, {
"name": "Updated_Campaign_Profile",
"remark": "Main account for Facebook ads"
})
```
### Delete Profile
```python
def delete_profile(profile_id):
"""Delete a browser profile"""
url = f"{ADSPOWER_API_BASE}/user/delete"
params = {"user_ids": [profile_id]}
response = requests.post(url, json=params)
data = response.json()
return data.get("code") == 0
```
## Common Patterns
### Campaign Profile Automation
```python
import time
class CampaignAutomation:
def __init__(self, profile_ids):
self.profile_ids = profile_ids
def run_campaign_tasks(self, task_function):
"""Execute tasks across multiple profiles"""
for profile_id in self.profile_ids:
try:
print(f"Starting profile {profile_id}")
driver = connect_selenium(profile_id)
# Execute custom task
task_function(driver)
driver.quit()
stop_profile(profile_id)
# Delay between profiles
time.sleep(5)
except Exception as e:
print(f"Error with profile {profile_id}: {e}")
stop_profile(profile_id)
# Usage
def post_ad_campaign(driver):
driver.get("https://ads.platform.com")
# Perform ad posting logic
pass
automation = CampaignAutomation([profile_id, profile_id_2])
automation.run_campaign_tasks(post_ad_campaign)
```
### Profile Pool Manager
```python
class ProfilePool:
def __init__(self, group_name):
self.group_name = group_name
self.active_profiles = {}
def get_available_profile(self):
"""Get next available profile from pool"""
profiles = list_profiles(group_id=self.group_name)
for profile in profiles:
profile_id = profile['user_id']
if profile_id not in self.active_profiles:
connection = start_profile(profile_id)
self.active_profiles[profile_id] = connection
return profile_id, connection
raise Exception("No available profiles in pool")
def release_profile(self, profile_id):
"""Release profile back to pool"""
if profile_id in self.active_profiles:
stop_profile(profile_id)
del self.active_profiles[profile_id]
# Usage
pool = ProfilePool("marketing_team")
profile_id, connection = pool.get_available_profile()
# Use profile
pool.release_profile(profile_id)
```
### Batch Profile Creation
```python
def create_campaign_profiles(campaign_name, count=10):
"""Create multiple profiles for a campaign"""
profile_ids = []
for i in range(count):
profile_name = f"{campaign_name}_Profile_{i+1}"
profile_id = create_profile(
name=profile_name,
group_id=campaign_name
)
profile_ids.append(profile_id)
print(f"Created: {profile_name} ({profile_id})")
return profile_ids
# Usage
campaign_profiles = create_campaign_profiles("BlackFriday2026", count=5)
```
## Fingerprint Configuration
### Custom Fingerprint Settings
```python
def create_profile_with_fingerprint(name, config):
"""Create profile with specific fingerprint configuration"""
url = f"{ADSPOWER_API_BASE}/user/create"
payload = {
"name": name,
"group_id": "0",
"fingerprint_config": {
"ua": config.get("user_agent"),
"language": config.get("language", "en-US"),
"timezone": config.get("timezone", "America/New_York"),
"webrtc": config.get("webrtc", "proxy"),
"location": config.get("location", "ask"),
"canvas": config.get("canvas", "noise"),
}
}
response = requests.post(url, json=payload)
data = response.json()
if data.get("code") == 0:
return data["data"]["id"]
raise Exception(f"Failed to create profile: {data.get('msg')}")
# Usage
fingerprint_config = {
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)...",
"language": "en-US,en;q=0.9",
"timezone": "America/Los_Angeles",
"webrtc": "proxy"
}
profile_id = create_profile_with_fingerprint(
"Custom_Fingerprint_Profile",
fingerprint_config
)
```
## Troubleshooting
### Connection Issues
```python
def check_api_status():
"""Verify AdsPower API is accessible"""
try:
response = requests.get(f"{ADSPOWER_API_BASE}/status", timeout=5)
return response.status_code == 200
except requests.exceptions.RequestException:
return False
if not check_api_status():
print("AdsPower API not accessible. Ensure the application is running.")
```
### Profile Not Starting
```python
def safe_start_profile(profile_id, max_retries=3):
"""Start profile with retry logic"""
for attempt in range(max_retries):
try:
connection = start_profile(profile_id)
return connection
except Exception as e:
print(f"Attempt {attempt + 1} failed: {e}")
time.sleep(2)
raise Exception(f"Failed to start profile after {max_retries} attempts")
```
### Clean Up Stuck Profiles
```python
def force_close_all_profiles():
"""Close all running browser profiles"""
profiles = list_profiles()
for profile in profiles:
profile_id = profile['user_id']
try:
stop_profile(profile_id)
print(f"Closed profile: {profile_id}")
except Exception as e:
print(f"Error closing {profile_id}: {e}")
```
## Environment Variables
```bash
# Optional: For cloud API access
export ADSPOWER_API_KEY="your_api_key_here"
# Custom API port if not using default
export ADSPOWER_API_PORT="50325"
```
## Best Practices
1. **Always close profiles** after use to free resources
2. **Add delays** between profile launches to avoid detection
3. **Use profile groups** to organize campaigns and teams
4. **Monitor active profiles** to prevent resource exhaustion
5. **Implement error handling** for network and API failures
6. **Rotate profiles** regularly for long-running campaigns
7. **Back up important profiles** and fingerprint configurations
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!