#!/usr/bin/env python3 """One-off diagnostic: inspect the raw gofile API response for one content id. Prints everything except the account token. Creates exactly one guest account. """ import hashlib import json import sys import time import requests CID = sys.argv[1] USER_AGENT = "Mozilla/5.0" LOCALE = "en-US" TOKEN_SECRET = "12af056dacea0b" WINDOW_SEC = 14400 COMMON = {"User-Agent": USER_AGENT, "Accept-Encoding": "gzip", "Accept": "*/*", "Connection": "keep-alive"} resp = requests.post("https://api.gofile.io/accounts", headers=COMMON, timeout=15) data = resp.json() assert data.get("status") == "ok", data token = data["data"]["token"] window = int(time.time()) // WINDOW_SEC seed = f"{USER_AGENT}::{LOCALE}::{token}::{window}::{TOKEN_SECRET}" wtoken = hashlib.sha256(seed.encode()).hexdigest() headers = { **COMMON, "Authorization": f"Bearer {token}", "X-Website-Token": wtoken, "X-BL": LOCALE, } r = requests.get( f"https://api.gofile.io/contents/{CID}?cache=true&sortField=createTime&sortDirection=1", headers=headers, timeout=30, ) print("HTTP", r.status_code) body = r.json() print("api status:", body.get("status")) def scrub(node): """Remove anything token-like from the tree before printing.""" if isinstance(node, dict): return { k: ("" if k in ("token", "accountToken") else scrub(v)) for k, v in node.items() } if isinstance(node, list): return [scrub(x) for x in node] return node d = body.get("data") or {} print("data keys:", sorted(d.keys())) print("type:", d.get("type")) children = d.get("children") or {} print("children count:", len(children)) for cid, child in list(children.items())[:5]: print(" child:", cid, "type:", child.get("type"), "name:", child.get("name"), "has link:", "link" in child) print() print(json.dumps(scrub(body), indent=2)[:3000])