universal-autoreg: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok609a1a863cbgp
2026-10-20 02:16:17 +03:00
commit 888c07b949
32 changed files with 6363 additions and 0 deletions

151
providers/miarouter_farm.py Normal file
View File

@@ -0,0 +1,151 @@
"""miarouter mass autoreg — pool builder. Free turnstile via local sidecar :8877."""
import json, time, secrets, string, urllib.request, urllib.parse, urllib.error, os, sys
BASE = "https://miarouter.online"
SITEKEY = "0x4AAAAAAEj69NaErmbKI26M"
SIDE = "http://127.0.0.1:8879/solve"
AFF = "IDH1"
POOL = r"C:/Users/User/Desktop/farm/miarouter/accounts.jsonl"
STATE = r"C:/Users/User/Desktop/farm/miarouter/farm_state.json"
UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36"
PROXY_FILE = r"C:/Users/User/tmp/mia_proxies.json"
PROXIES = json.load(open(PROXY_FILE)) + ["DIRECT"] if os.path.exists(PROXY_FILE) else ["DIRECT"]
import random
random.shuffle(PROXIES)
_cur_p = {"i": 0, "proxy": PROXIES[0]}
def next_proxy():
_cur_p["i"] = (_cur_p["i"] + 1) % len(PROXIES)
_cur_p["proxy"] = PROXIES[_cur_p["i"]]
return _cur_p["proxy"]
def cur_proxy():
return _cur_p["proxy"]
os.makedirs(os.path.dirname(POOL), exist_ok=True)
def log(*a):
print(time.strftime("%H:%M:%S"), *a, flush=True)
def solve(url_page="/sign-up"):
for _try in range(3):
try:
p = {"type":"turnstile","url":BASE+url_page,"sitekey":SITEKEY,"real_page":True}
req = urllib.request.Request(SIDE, data=json.dumps(p).encode(), headers={"Content-Type":"application/json"})
r = json.loads(urllib.request.urlopen(req, timeout=280).read())
tok = r.get("token") or ""
if tok:
return tok
except Exception as e:
log("solve retry:", str(e)[:50])
time.sleep(8)
return ""
def http(method, path, body=None, jwt=None, raw_body=None, proxy=None):
url = BASE + path
data = None
headers = {"User-Agent":UA, "Origin":BASE, "Referer":BASE+"/sign-up", "Accept":"application/json"}
if body is not None:
data = json.dumps(body).encode(); headers["Content-Type"]="application/json"
if raw_body is not None:
data = raw_body; headers["Content-Type"]="application/json"
if jwt: headers["Authorization"] = "Bearer "+jwt
if proxy is None: proxy = cur_proxy()
ph = urllib.request.ProxyHandler({} if proxy == "DIRECT" else {"http":proxy,"https":proxy})
opener = urllib.request.build_opener(ph)
req = urllib.request.Request(url, data=data, method=method, headers=headers)
try:
r = opener.open(req, timeout=12)
return r.status, r.read().decode()
except urllib.error.HTTPError as e:
try: return e.code, e.read().decode()
except: return e.code, ""
except Exception:
return 0, "proxy_dead"
def gen_creds():
alpha = string.ascii_lowercase + string.digits
u = "refox" + "".join(secrets.choice(alpha) for _ in range(6))
p = "".join(secrets.choice(string.ascii_letters + string.digits) for _ in range(13)) + "Aa1"
return u, p
def make_account(idx):
u, p = gen_creds()
proxy = next_proxy() # sticky per account
log(idx, "proxy", proxy)
# 1. register
for attempt in range(3):
tok = solve("/sign-up")
if not tok: log(idx, "solve fail, retry"); time.sleep(5); continue
st, resp = http("POST", f"/api/user/register?turnstile={urllib.parse.quote(tok)}",
body={"username":u,"password":p,"aff_code":AFF,"turnstile":tok,"agreement_confirmed":True}, proxy=proxy)
try: j = json.loads(resp)
except: j = {"success":False,"message":resp[:100]}
if st == 200 and j.get("success"): break
msg = j.get("message","")
if st == 0 or resp == "proxy_dead":
proxy = next_proxy(); log(idx, "proxy dead, rotate ->", proxy); continue
if st == 429 or "rate" in msg.lower():
proxy = next_proxy(); log(idx, "429 register, rotate ->", proxy); time.sleep(2); continue
if "already" in msg.lower() or "exist" in msg.lower():
u, p = gen_creds(); continue
log(idx, "reg fail:", st, msg[:120]); time.sleep(5)
else:
return None
log(idx, "REG OK", u)
# 2. login
jwt = None
for attempt in range(4):
tok2 = solve("/sign-in")
if not tok2: time.sleep(5); continue
st, resp = http("POST", f"/api/user/login?turnstile={urllib.parse.quote(tok2)}",
body={"username":u,"password":p,"turnstile":tok2}, proxy=proxy)
try: j = json.loads(resp)
except: j = {}
if st == 200 and j.get("success"):
jwt = j["data"]["access_token"]; break
if st == 0 or resp == "proxy_dead":
proxy = next_proxy(); log(idx, "proxy dead, rotate ->", proxy); continue
if st == 429:
proxy = next_proxy(); log(idx, "429 login, rotate ->", proxy); time.sleep(2); continue
log(idx, "login fail:", st, str(j)[:120]); time.sleep(10)
if not jwt:
rec = {"username":u,"password":p,"aff":AFF,"status":"reg_ok_login_fail","ts":int(time.time())}
open(POOL,"a",encoding="utf-8").write(json.dumps(rec)+"\n")
return rec
# 3. create token + reveal key
key = None; tid = None
st, resp = http("POST", "/api/token/", jwt=jwt, body={"name":"main","remain_quota":500000,"expired_time":-1,"unlimited_quota":True,"model_limits":"","allowed_ips":""})
if st == 200:
st2, resp2 = http("GET", "/api/token/?p=0&size=10", jwt=jwt)
try:
items = json.loads(resp2)["data"]["items"]
if items:
tid = items[0]["id"]
st3, resp3 = http("POST", f"/api/token/{tid}/key", jwt=jwt, raw_body=b"{}")
if st3 == 200:
key = json.loads(resp3)["data"]["key"]
except Exception as e:
log(idx, "key err", e)
rec = {"username":u,"password":p,"aff":AFF,"jwt":jwt,"token_id":tid,"api_key":("sk-"+key) if key and not key.startswith("sk-") else key,"status":"full","ts":int(time.time())}
open(POOL,"a",encoding="utf-8").write(json.dumps(rec)+"\n")
log(idx, "FULL OK", u, "key:", (key or "NONE")[:14]+"...")
json.dump({"last_idx":idx,"last_user":u,"ts":int(time.time())}, open(STATE,"w"))
return rec
def main():
target = int(sys.argv[1]) if len(sys.argv)>1 else 50
ok = 0
for i in range(target):
try:
r = make_account(i)
if r and r.get("status")=="full": ok += 1
except Exception as e:
log(i, "FATAL", repr(e)[:200])
time.sleep(20)
time.sleep(3)
log("DONE. full accounts:", ok)
if __name__ == "__main__":
main()