AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Adspower

skill-pencil20388-eng-adspower-skill-adspower · by pencil20388-eng

A Claude skill from pencil20388-eng/adspower-skill.

No reviews yet
0 installs
11 views
0.0% view→install

Install

$ agentstack add skill-pencil20388-eng-adspower-skill-adspower

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-pencil20388-eng-adspower-skill-adspower)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Adspower? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

AdsPower Local API Automation Skill

Automate AdsPower antidetect browser operations through its Local API. This skill handles profile creation, browser control, proxy management, cookie operations, and fingerprint verification.

Prerequisites

  • AdsPower installed and running locally (paid plan with API access)
  • API Key generated (AdsPower → Automation → API → Generate)
  • Python 3.8+ with requests installed

API Basics

Base URL: http://local.adspower.net:50325

All requests require the Authorization header:

Authorization: Bearer YOUR_API_KEY

Success response: {"code": 0, "msg": "success", "data": {...}} Error response: {"code": -1, "msg": "error description"}

Core Operations

1. Check API Status

curl -s -H "Authorization: Bearer $API_KEY" \
  "http://local.adspower.net:50325/api/v1/status"

2. Create a Profile

import requests

resp = requests.post(
    "http://local.adspower.net:50325/api/v1/user/create",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "name": "profile_001",
        "group_id": "0",
        "fingerprint_config": {
            "automatic_timezone": "1",
            "language": ["en-US", "en"],
        },
    },
).json()
profile_id = resp["data"]["id"]

3. Open a Browser Profile

resp = requests.get(
    f"http://local.adspower.net:50325/api/v1/browser/start?user_id={profile_id}",
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=30,  # 30s timeout for slow proxies
).json()

# Connection info for automation frameworks:
webdriver_path = resp["data"]["webdriver"]
selenium_address = resp["data"]["ws"]["selenium"]     # For Selenium
puppeteer_ws = resp["data"]["ws"]["puppeteer"]         # For Playwright

4. Close a Browser Profile

requests.get(
    f"http://local.adspower.net:50325/api/v1/browser/stop?user_id={profile_id}",
    headers={"Authorization": f"Bearer {API_KEY}"},
)

5. Connect Selenium

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

service = Service(executable_path=webdriver_path)
options = Options()
options.add_experimental_option("debuggerAddress", selenium_address)
driver = webdriver.Chrome(service=service, options=options)
driver.get("https://www.browserscan.net/")

6. Connect Playwright

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(puppeteer_ws)
    context = browser.contexts[0]
    page = context.pages[0] if context.pages else context.new_page()
    page.goto("https://www.browserscan.net/")

7. Update Proxy

requests.post(
    "http://local.adspower.net:50325/api/v1/user/update",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "user_id": profile_id,
        "user_proxy_config": {
            "proxy_soft": "other",
            "proxy_type": "http",       # http | https | socks5
            "proxy_host": "1.2.3.4",
            "proxy_port": "8080",       # Must be string
            "proxy_user": "username",
            "proxy_password": "password",
        },
    },
).json()

8. Query Profiles

resp = requests.get(
    "http://local.adspower.net:50325/api/v1/user/list",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={"page": 1, "page_size": 100, "group_name": "My Campaign"},
).json()
profiles = resp["data"]["list"]

9. Create a Group

resp = requests.post(
    "http://local.adspower.net:50325/api/v1/group/create",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={"group_name": "My Campaign"},
).json()
group_id = resp["data"]["group_id"]

Rate Limits

| Profile count | Max frequency | |---|---| | 0–200 | 2 req/sec | | 200–5000 | 5 req/sec | | > 5000 | 10 req/sec |

Profile creation is always limited to 1 req/sec. Add time.sleep(1.1) between batch operations.

Common Errors

| Error | Cause | Fix | |---|---|---| | Connection refused | AdsPower not running | Start AdsPower, check API status | | Invalid API key | Wrong or expired key | Regenerate in Automation → API | | Error 100044 | Browser start timeout | Check proxy, clear cache, increase timeout | | Error 100001 | Browser failed to start | Repair profile, update AdsPower | | Too many requests | Rate limit exceeded | Add sleep between API calls | | Profile not found | Wrong user_id | Query /api/v1/user/list to get correct IDs |

Important Notes

  • proxy_port must be a string, not an integer
  • user_id is the internal ID from creation, not the profile name or UI number
  • The API port (default 50325) can change between sessions — verify in AdsPower settings
  • Always close browsers via API after automation to prevent resource leaks
  • Use resp["data"]["ws"]["selenium"] for Selenium, resp["data"]["ws"]["puppeteer"] for Playwright

## Bundled Scripts

Profile Report Generator

Generate a CSV audit report of all profiles:

python3 ${CLAUDE_SKILL_DIR}/scripts/profile_report.py
python3 ${CLAUDE_SKILL_DIR}/scripts/profile_report.py --group "My Campaign"

Output includes: profile_id, name, group, proxy status, cookie status, creation time, last open time. Use this when the user asks to audit profiles, check proxy coverage, or generate a profile summary.

Resources

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.