import requests,json,time,urllib3,sys
from crypto_hall import enc,dec,k1,k2
urllib3.disable_warnings()
H='ein38eu95792b.4656hd15.cc'
UA='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/126.0 Safari/537.36'
TOKEN='b2e3d672-9d88-47a7-81b4-9d7ffc62054f'
def call(path,params=None,method='GET',data=None,key=None,token=TOKEN,crypto=True,decrypt=True,want_raw=False):
    params=dict(params or {})
    key=key or k1(token)
    p={}
    if crypto:
        base={'siteCode':1003,'token':token,'currency':'CNY','language':'zh-CN','platformType':1}
        base.update(params)
        p['encryptString']=enc(base,key)
    else:
        p.update(params)
    h={'User-Agent':UA,'content-type':'text/plain','x-data-mode':'chipher','siteCode':'1003','currency':'CNY','language':'zh-CN','token':token,'platformType':'1','timestamp':str(int(time.time())),'device':'00000000-0000-0000-0000-000000000000','domain':H}
    r=requests.request(method,f'https://{H}/hall{path}',params=p if method=='GET' else None,headers=h,timeout=20,verify=False,data=data)
    out=r.text
    if decrypt and out and r.headers.get('content-type','').startswith('text/plain'):
        try: out=dec(out.strip(),key).decode('utf-8','replace')
        except Exception as e: out=f'[DECRYPT_FAIL {e}] '+out[:200]
    return r,out
if __name__=='__main__':
    import sys
    path=sys.argv[1] if len(sys.argv)>1 else '/api/finance/maxChargeRate'
    params=json.loads(sys.argv[2]) if len(sys.argv)>2 else {}
    r,out=call(path,params)
    print('HTTP',r.status_code,'CT',r.headers.get('content-type'),'LEN',len(r.content))
    print('KEY',k1(TOKEN))
    print(out[:2000])
