# ur-network-farm Free-tier **residential** egress from URnetwork (ur.io) without a card, an email, or a browser. Everything runs over the public API — an account, an API key and up to five hosted proxies in about 20 seconds. ``` POST /auth/network-create {"terms":true,"product_updates":false} -> network.by_jwt POST /auth/regenerate-seedphrase -> seedphrase (24 words) POST /account/api-key {"name":"farm-1"} -> urn_... key POST /network/auth-client {"device_spec":"resident proxy", "proxy_config":{"initial_device_state":{"country_code":"us"}}} -> https_proxy_url (creds inside) GET /network/proxies -> every proxy of the account GET /subscription/balance -> bytes left today ``` Base: `https://api.bringyour.com`. Auth: `Authorization: Bearer `. ## Limits (measured 2026-11-13) | limit | value | proof | |---|---|---| | traffic per account | **30 GiB / day**, resets 00:00 UTC | `start_balance_byte_count: 32212254720`, `start_time 2026-11-13T00:00:00Z → end_time 2026-11-14T01:00:00Z` | | active proxies | **5 per account** | 6th call → `{"error":{"client_limit_exceeded":true,"upgrade_required":true,"message":"Your plan's limit of 5 active proxies is reached..."}}` | | proxy creation rate | ~5 / minute / account | 429 on bursts; script sleeps 1.3 s | | instant accounts per IP | ~4, then 429 | `Too many accounts have been created recently from your network address. This limit is scoped to the address you are connecting from and is shared with everyone` | | countries | 20+ residential providers | 15 verified by `ipinfo` in one evening (US DE NL FR GB CA BR SE PL CH JP SG IT ES AT) | Bypass for the IP cap: create the first ~4 accounts directly, then feed their own proxy URLs back into the farm as rotating egress (`--proxy-file px.txt`). 8 more accounts went through with zero 429. Pro tier ($3 first year, USDC/Zcash/Monero or card) raises it to 10 TiB/month and 1000 proxies. ## Usage ```bash # 5 accounts, 5 proxies each, direct connection python ur_farm.py --count 5 --proxies 5 --bank bank.jsonl # more accounts, rotating egress through proxies we already own python ur_farm.py --count 20 --proxies 5 --proxy-file px.txt --bank bank.jsonl --start 500 # export every proxy URL into a flat pool python collect.py bank.jsonl > pool.jsonl # liveness pass over the pool (ipinfo through each proxy) python verify.py pool.jsonl --limit 20 ``` `bank.jsonl` line shape: ```json {"idx":300,"network_id":"...","name":"february-exhaust-83","jwt":"...","seed":"24 words", "urn":"urn_...","proxies":[{"cc":"us","url":"https://@host:7155","socks":"socks5h://..."}]} ``` ## Proxy URL shape ``` https://<40-char-token>.crisp.bringyour.com:7155 # HTTPS CONNECT, token is the credential socks5h://crisp.bringyour.com:7153 # SOCKS5 with username/password auth http://crisp.bringyour.com:7154 # plain HTTP ``` `https_proxy_url` carries the token inline, so `curl --proxy "$url"` works as-is. ## Pitfalls - **`country_code` is mandatory** in `initial_device_state` — omit it and the call answers `Invalid location`. - **Exit IP is not pinned.** The same proxy URL returned `188.103.48.237 AS3209 Vodafone Augsburg` and later `80.171.40.200 AS6805 Telefonica Essen`. Enable *Fixed IP* in the proxy options when a stable address matters, or treat stability as a known risk. - **Save the seed before anything else.** The account has no email and no password recovery; losing the JWT/seed loses the account. - **Do not drive the browser for this.** UI proxy creation needs clipboard reads that fail when the document is not focused, and copies the URL of the wrong card. `GET /network/proxies` returns every URL directly. - Proxies are residential but shared: several accounts can land on the same provider (two `Vodafone Hildesheim` exits were seen), so `unique_ip` is the metric, not `alive`. - **Not every exit is residential.** A proxy created with `country_code: br` came back as `209.50.178.206 AS200373 3xK Tech GmbH, Toronto` — a hosting ASN in the wrong country. The network is P2P, so peers supply the exit; check `ipinfo` (`org`/`country`) per proxy before trusting it for anything geo-sensitive, and drop rows where the ASN is a hosting provider. ## Scope Free-tier testing of a public API on accounts we create ourselves. No card data, no third-party accounts, no payment flows. Respect the provider's terms — this is a field note, not a licence.