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.