Installs into .claude/skills of the current project.
Are you the author of Proxy6?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/vkirill-proxy6)
---
name: proxy6
description: "[RU: интеграция proxy6.net — покупка/продление прокси, пул, ipauth, scraping] proxy6.net REST API — RU proxy provider for IPv4/IPv4 Shared/IPv6/MTproto. Methods getprice/getcount/getcountry/getproxy/buy/prolong/delete/setdescr/check/ipauth via https://px6.link/api/{key}/. Money + destructive + 3 req/s rate limit. Use when: proxy6, proxy6.net, px6.link, прокси6, ipv4 shared, ipv6 прокси, mtproto, buy proxy api, getprice, prolong proxy, setdescr, getproxy, ipauth, scraping rotation ru, error_id 100, error_id 105, error_id 300, error_id 400, error_id 429, балансовая проверка, auto_prolong. SKIP: Mobileproxy/Webshare/Brightdata/Oxylabs (different provider); using a proxy in HTTP code after acquisition (→httpx/nodejs); in-browser CORS proxying."
stacks:
- proxy6
- ru-proxy
- python
- nodejs
tags:
- proxy
- scraping
- ru
- automation
- rotation
- billing
source: vechkasov-global-skills
risk: high-stakes
---
<!-- versions:start -->
## 🎯 Version Requirements (August 2026)
**Primary pins:**
- proxy6 API: `docs-only (stable REST, no version path)`
- Python: `3.14.x`
- Node.js: `24.x (Active LTS)`
> Source of truth: [STACK_VERSIONS.md](../../STACK_VERSIONS.md) — verified 2026-08-24
<!-- versions:end -->
## Usage
Loaded automatically when its description matches the active task. Read only the section you need, then follow the link to the relevant reference file for full detail.
## Use this skill when
- Buying / prolonging / deleting proxies through the proxy6.net REST API — calls to `buy`, `prolong`, `delete`
- Building a proxy pool from `getproxy` results, organising it via `descr` tags, rotating per request / per worker
- Pre-flighting purchases with `getprice` + `getcount` + balance check before calling `buy` (money safety)
- Setting up `ipauth` IP allowlist for production scrapers — full-replace semantics, dev/prod separation
- Implementing a rate-limit-safe client (≤ 3 req/s) with retry/backoff on 429 / `error_id` envelopes
- Debugging proxy6 error responses — `error_id` 100 (auth), 105 (IP not allowed), 300 (insufficient stock), 400 (no money), 410 (zero price), 429 (rate limited)
- Picking the right proxy `version` for the workload — 3 (IPv4 Shared), 4 (IPv4), 5 (MTproto), 6 (IPv6) — and the right country
- Building a scheduled-cleanup job for expired proxies (`state=expired`) and a renewal job before `date_end`
## Do not use this skill when
- Task uses a different proxy provider — Mobileproxy / Webshare / Brightdata / Oxylabs / Smartproxy / iProxy / ProxyEmpire — they have different APIs
- Task is actually **using** a proxy in HTTP code after acquisition — that belongs to the HTTP-client skill (`httpx` for Python, `nodejs` for Node)
- Task is in-browser CORS proxying or local proxy server (mitmproxy / squid / nginx forward proxy) — different domain
- Task is Telegram MTProto client configuration without proxy6 (mtproto auth, session strings) — use `telegram-bot` and the MTProto client docs
## Purpose
proxy6.net is one of the dominant Russian retail proxy providers — IPv4 (dedicated), IPv4 Shared, IPv6, and MTproto-flavoured proxies, sold per proxy per day with a single REST endpoint at `https://px6.link/api/{api_key}/{method}/`. It is widely used by Russian scraping shops, ad-operations teams, social-media automation, and price-monitoring pipelines that need cheap, short-lived, country-targeted proxies.
This skill is **high-stakes** because three of the ten methods cost money or destroy state and the API is hard-limited to 3 requests per second:
1. `buy` debits the merchant balance immediately; `auto_prolong` silently re-charges on expiry.
2. `prolong` debits again and (for mixed-version `ids`) returns no `price_single` — easy to miscalculate.
3. `delete` is irreversible; with the `descr` filter you can wipe an entire pool in one call.
4. `ipauth` REPLACES the full allowlist — passing a partial list deletes everything else.
5. Over-3-req/s bursts return HTTP 429, breaking unaware clients.
The skill owns provider-domain knowledge — method shapes, error semantics, version tradeoffs, billing safety, rate-limit handling, pool management via `descr` tags, and ipauth gotchas. HTTP plumbing (retries, async clients, secret loading) belongs to the runtime skill (`httpx`, `nodejs`).
## Capabilities
### API client setup
Single endpoint pattern: `https://px6.link/api/{api_key}/{method}/?{params}` (api_key in the URL path). Success envelope: `{"status":"yes", user_id, balance, currency, ...}`. Error envelope: `{"status":"no", error_id, error}`. Auth via api_key only; optional IP allowlist in dashboard (returns `error_id 105` if source IP not allowed). The key in the URL path means it appears in nginx / reverse-proxy access logs — log scrubbing is mandatory.
> Full reference: [references/setup.md](references/setup.md)
### The 10 methods
`getprice` (price calc) · `getcount` (stock check) · `getcountry` (countries by version) · `getproxy` (list owned proxies, paged) · `setdescr` (update comment tag) · `buy` (purchase — money) · `prolong` (extend — money) · `delete` (irreversible) · `check` (validate one proxy) · `ipauth` (full-replace allowlist).
> Full reference: [references/methods.md](references/methods.md)
### Proxy versions (3/4/5/6)
Four `version` values map to four distinct products with different prices and protocol support: **3** = IPv4 Shared (cheapest, shared across users), **4** = IPv4 dedicated, **5** = MTproto (Telegram-specific), **6** = IPv6. Pick by target: IPv6 only works against IPv6-aware destinations; MTproto only for Telegram clients; IPv4 Shared is fine for low-trust scraping but flags faster on sensitive sites.
> Full reference: [references/proxy-versions.md](references/proxy-versions.md)
### Rate limit handling (3 req/s budget)
Provider enforces 3 requests per second. Practical client budget: **2 req/s** (33% headroom) under steady load, brief bursts up to 3. Use a token bucket / leaky bucket gate or per-call sleep ≥ 333 ms. Retry policy: 429 → backoff base 500 ms, cap 30 s, max 5 attempts; never retry 4xx envelope errors except `error_id 30` (unknown — single retry).
> Full reference: [references/rate-limit-and-retry.md](references/rate-limit-and-retry.md)
### Purchase and billing safety
Canonical pre-buy sequence: `getprice(count, period, version)` → `getcount(country, version)` → balance check (from any successful envelope) → `buy(...)`. Always set `descr` to a stable ops tag so the order is reattributable later. Default `auto_prolong = OFF` — surprise renewals are a top operational complaint. Document a balance-low threshold (alert when `balance < N × daily_burn`).
> Full reference: [references/purchase-and-billing.md](references/purchase-and-billing.md)
### Pool management & rotation
Organise live proxies by `descr` tag (e.g. `descr=pool:scraper-A:prod`). Rotation strategies: **sticky** (worker keeps one proxy until ban / expiry), **round-robin** (per-request from a shuffled pool), **weighted** (prefer freshest by `date_end`). Ban detection: track per-proxy 4xx/5xx ratio; quarantine on threshold; replace via `buy` with the same `descr`. Schedule a daily cleanup that `getproxy(state=expired)` → `delete(ids=...)`.
> Full reference: [references/pool-management.md](references/pool-management.md)
### IP authentication strategy
`ipauth` sets the full list of source IPs allowed to use the proxies (separate from API allowlist — that's in the dashboard). Critical gotcha: every `ipauth` call REPLACES the prior list. Always send the complete union of dev + prod + CI IPs; pass `ip=delete` to clear all bindings. Prefer ipauth over user/pass for production worker fleets — fewer secrets in code.
> Full reference: [references/ipauth-strategy.md](references/ipauth-strategy.md)
### Python integration (httpx + tenacity)
Async `httpx.AsyncClient` with `tenacity` retry decorators, `pydantic` models for response shapes, api_key in env var (`PROXY6_API_KEY`), per-method functions returning typed envelopes, rate-limit token bucket via `asyncio.Semaphore` + sleep.
> Full reference: [references/integration-python.md](references/integration-python.md)
### Node.js / TypeScript integration
`fetch` or `axios` with `axios-retry` / `p-retry`, TypeScript types for each method's response, env-based key, rate limit via `p-limit` or `bottleneck`.
> Full reference: [references/integration-node.md](references/integration-node.md)
## Behavioral Traits
- Reads `getprice` + `getcount` + envelope `balance` BEFORE every `buy` — never trusts an outdated balance value
- Always passes `descr` on `buy` for ops attribution; never relies on `id` alone for identifying a logical pool
- Defaults `auto_prolong` to OFF; opts in only when there's a documented billing-alert path
- Treats every `ipauth` call as a full-list overwrite — composes the union of all known IPs before sending
- Caps client throughput at **2 req/s** (headroom under the 3 req/s provider limit); centralises the limiter so all callers share it
- Retries only on `429`, network errors, `5xx`, and `error_id 30` — never retries `100/105/200/210/220/230/240/250/260/270/280/300/400/404/410`
- Stores `id`, `ip`, `port`, `user`, `pass`, `date_end`, `descr`, `active` from `getproxy` in a local table and refreshes daily
- Runs `delete` with `ids=` only after a `getproxy` dry-run that lists exactly those ids — never blindly with `descr=` filter
- Uses values from [recommended-defaults.md](references/recommended-defaults.md) — no inline magic numbers
- Loads `api_key` from `PROXY6_API_KEY` env var; scrubs it from access logs at the reverse proxy
## Important Constraints
- NEVER hardcode `api_key` in source, commit history, or client bundles — it grants full balance-spending power
- NEVER call `buy` without a fresh `getprice` + `getcount` + balance check — silent overdraft / out-of-stock buys waste money
- NEVER pass a partial IP list to `ipauth` — it REPLACES the allowlist, instantly cutting off prod workers not in the call
- NEVER enable `auto_prolong=1` without a budget alert and an off-switch — runaway charges are the #1 incident class
- NEVER call `delete` with `descr=` filter without a `getproxy(descr=...)` dry-run that prints every id about to die
- NEVER exceed 3 req/s — even short bursts to 5–10 req/s trigger 429 storms that stall the whole client until backoff drains
- NEVER assume `prolong` mixed-version returns `price_single` — for heterogenous `ids` the field is ABSENT; sum from `list`
- NEVER log the full request URL — `api_key` is in the path and ends up in nginx access logs / APM
- ALWAYS scrub `api_key` from reverse-proxy access logs (Angie/Nginx `log_format` with regex masking)
- ALWAYS validate response shape against the envelope schema before reading domain fields — error envelopes are JSON-200, not HTTP-4xx
## Related Skills
**90%-filter applied** — mainstream 2026 choices used in scraping / automation pipelines.
### Runtime & HTTP clients (where the proxy is actually used)
- ✓ `httpx` — Python async HTTP client (primary runtime for scraping with proxy6 outputs)
- ✓ `nodejs` — Node 24 (alternative scraping runtime)
- ✓ `python` — Python 3.14 (parent runtime for scraping pipelines)
### Validation & testing
- ✓ `pydantic` — validate proxy6 response envelopes and proxy records
- ✓ `pytest` — test the client and rotation logic against fixture envelopes
### RU-SaaS pattern peers (quality bar)
- ✓ `cloudpayments` — RU payment SaaS skill (high-stakes pattern reference)
- ✓ `yookassa` — RU payment SaaS skill (high-stakes pattern reference)
### Persistence & scheduling
- ✓ `redis` — Redis 8 (token-bucket rate limiter, pool cache)
- ✓ `postgresql` — PostgreSQL 18 (pool state, descr tagging, expiry tracking)
### Code discipline
- ✓ `karpathy-guidelines`
## API Reference
Domain-specific references (Pattern 2) — load only what's relevant:
| Topic | File |
|---|---|
| Index, decision map, when-to-use which doc | [references/REFERENCE.md](references/REFERENCE.md) |
| API key handling, log scrubbing, IP allowlist, rate-limit overview | [references/setup.md](references/setup.md) |
| All 10 methods — params, response shapes, examples | [references/methods.md](references/methods.md) |
| Proxy versions 3/4/5/6 — IPv4 Shared vs IPv4 vs MTproto vs IPv6, when to use which | [references/proxy-versions.md](references/proxy-versions.md) |
| All 17 error codes — diagnose / cause / fix (symptom-indexed) | [references/error-codes.md](references/error-codes.md) |
| Rate limit & retry — 3 req/s budget, token bucket, tenacity / p-retry config, 429 backoff | [references/rate-limit-and-retry.md](references/rate-limit-and-retry.md) |
| Purchase & billing — getprice→getcount→buy idempotency, balance check, auto_prolong, descr tagging | [references/purchase-and-billing.md](references/purchase-and-billing.md) |
| Pool management — descr organisation, rotation, ban detection, scheduled cleanup | [references/pool-management.md](references/pool-management.md) |
| ipauth strategy — when to use, full-replace semantics, dev/prod separation | [references/ipauth-strategy.md](references/ipauth-strategy.md) |
| Python integration — httpx, tenacity, pydantic, asyncio limiter | [references/integration-python.md](references/integration-python.md) |
| Node.js / TS integration — fetch/axios, p-retry, types, bottleneck limiter | [references/integration-node.md](references/integration-node.md) |
| **Recommended defaults** — SSOT: rate budget, request timeout, retry policy, auto_prolong default, balance threshold | [references/recommended-defaults.md](references/recommended-defaults.md) |
| **Wrong vs Right** — paired anti-patterns: key leakage, missing retry, blind delete, ipauth wipe, auto_prolong runaway | [references/wrong-vs-right.md](references/wrong-vs-right.md) |
| **Troubleshooting** — symptom-indexed: 429 storm, 100 auth, 105 IP block, 300 stock, 400 balance, 410 zero price, descr overflow, mixed-version prolong, accidental delete | [references/troubleshooting.md](references/troubleshooting.md) |
| Eval cases — routing tests (positive + negative + edge) | [references/eval-cases.md](references/eval-cases.md) |
**How to use**: open the topic file relevant to the current task. Purchase work → `purchase-and-billing.md` + `methods.md`. Rate-limit / 429 work → `rate-limit-and-retry.md` + `troubleshooting.md`. Pool work → `pool-management.md`. New integration → `setup.md` + `integration-python.md` or `integration-node.md`. Tuning knobs → `recommended-defaults.md`.