Files

5.4 KiB

urnet — URnetwork free-tier farm

Turn URnetwork (ur.io) into a rotating residential proxy pool. Every account you create gives 30 GiB of traffic per day and 5 hosted proxies — no card, no email, no captcha, no browser. Everything runs over the public API.

python urnet.py farm    --count 1 --proxies 3       # account + proxies, ~25 s
python urnet.py collect --bank bank.jsonl --out pool.jsonl
python urnet.py verify  --pool pool.jsonl --limit 3

That is the whole quick start. One account ~ 25 seconds ~ 30 GiB/day.

Requirements

  • Python 3.8+ — standard library only, nothing to pip install
  • curl — optional, but required when you route a run through a proxy (--proxy / --proxy-file). Windows 10/11, macOS and most Linux distros ship it. Without curl, direct (non-proxied) calls work.

Install

git clone https://git.reformboss.com/reform/ur-network-farm.git
cd ur-network-farm
python urnet.py --help

No virtualenv, no requirements.txt, no build step, no config file.

First run

python urnet.py farm --count 1                  # 1 account, 5 proxies in 5 countries

python urnet.py collect --bank bank.jsonl --out pool.jsonl
python urnet.py export  --pool pool.jsonl --format txt --out proxies.txt
python urnet.py verify  --pool pool.jsonl --limit 5
python urnet.py balance --bank bank.jsonl

proxies.txt is a plain list of ready-to-use URLs:

https://<token>.crisp.bringyour.com:7155

Use one directly:

curl --proxy "$(head -1 proxies.txt)" https://ipinfo.io/json

How it works

Four API calls per account, no UI involved:

POST /auth/network-create   {"terms":true,"product_updates":false}   -> network.by_jwt
POST /auth/regenerate-seedphrase                                     -> seedphrase (24 words)
POST /account/api-key       {"name":"urnet-1"}                       -> urn_... key
POST /network/auth-client   {"device_spec":"resident proxy",
                             "proxy_config":{"initial_device_state":{"country_code":"us"}}}
                                                                     -> https_proxy_url

Base: https://api.bringyour.com. Auth header: Authorization: Bearer <jwt | urn_ key>. GET /network/proxies returns every proxy of an account, GET /subscription/balance returns traffic left today.

Limits (measured, not guessed)

limit value
traffic per account 30 GiB / day, resets 00:00 UTC
proxies per account 5 active — the 6th answers client_limit_exceeded
proxy creation rate ~5 / minute / account
accounts per IP ~4, then 429 Too many accounts have been created recently from your network address
countries seen 15 verified by ipinfo: US DE NL FR GB CA BR SE PL CH JP SG IT ES AT

Proof of the caps, straight from the API:

start_balance_byte_count: 32212254720   (30 GiB, window 2026-11-13T00:00:00Z -> 2026-11-14T01:00:00Z)
6th proxy: {"error":{"client_limit_exceeded":true,"upgrade_required":true,
            "message":"Your plan's limit of 5 active proxies is reached..."}}

Workaround for the IP cap: create the first few accounts directly, then feed their own proxy URLs back into the farm as rotating egress — --proxy-file px.txt. Recipe: GUIDE.md.

Commands

command what it does
farm create accounts: JWT, seed phrase, urn_ API key, hosted proxies
collect flatten bank.jsonl into a deduplicated proxy pool
verify ipinfo through every proxy -> alive / unique_ip / countries / hosting_exits
export pool -> txt / csv / env
balance traffic left per account

Every flag, recipe and failure mode: GUIDE.md.

Proxy URL shape

https://<40-char-token>.crisp.bringyour.com:7155     # HTTPS CONNECT, token is the credential
socks5h://crisp.bringyour.com:7153                   # SOCKS5, username/password auth
http://crisp.bringyour.com:7154                      # plain HTTP

https_proxy_url carries the token inline, so curl --proxy "$url" works as-is.

Files it writes

file content secret?
bank.jsonl one line per account: name, jwt, seed, urn_ key, proxies yes
pool.jsonl deduplicated proxy URLs yes (token inside URL)
proxies.txt / .csv exports for other tools yes
verify.json pool enriched with ip / country / org no

.gitignore excludes all of them. Keep bank.jsonl at chmod 600: the account has no email and no password recovery, so losing the file loses the account, and leaking it hands the account over.

Troubleshooting (short version)

symptom fix
429 Too many accounts ... from your network address add --proxy-file px.txt (rotate egress), or wait for the reset
Invalid location country_code missing — pass --countries us,de
Your plan's limit of 5 active proxies is reached 5 proxies per account is the free cap; --proxies 5 max
curl returned nothing through this proxy proxy dead or token rotated — re-run collect
nothing created, no error curl not on PATH — install it or drop the proxy flags

Full table with causes: GUIDE.md.

Scope

Free-tier testing of a public API on accounts you create yourself. No card data, no third-party accounts, no payment flows. Respect the provider's terms of service.