55import requests
66from nacl .bindings import crypto_scalarmult_base
77
8- from warpy .utils import generate_string , conf
8+ from warpy .utils import generate_string , conf , TlsAdapter
9+
10+ api_version = "v0a884"
11+
12+ session = requests .session ()
13+ session .mount ("https://" , TlsAdapter ())
914
1015
1116class WarpPlus :
@@ -18,49 +23,49 @@ def generate_key():
1823
1924 def enable_warp (self , config ):
2025 data = {"warp_enabled" : True }
21- url = 'https://api.cloudflareclient.com/v0a745 /reg/' + config ['id' ]
26+ url = 'https://api.cloudflareclient.com/' + api_version + ' /reg/' + config ['id' ]
2227 headers = {"Accept-Encoding" : "gzip" ,
2328 "User-Agent" : "okhttp/3.12.1" ,
2429 "Authorization" : "Bearer {}" .format (config ['token' ]),
2530 "Content-Type" : "application/json; charset=UTF-8" }
26- req = requests . patch ( url , json = data , headers = headers )
31+ req = session . request ( "PATCH" , url , json = data , headers = headers )
2732 req .raise_for_status ()
2833 req = req .json ()
2934 assert req ["warp_enabled" ] is True
3035
3136 def register (self , key = None , referrer = None ):
3237
33- url = 'https://api.cloudflareclient.com/v0a745 /reg'
38+ url = 'https://api.cloudflareclient.com/' + api_version + ' /reg'
3439
35- headers = {'Content-Type' : 'application/json; charset=UTF-8' ,
36- 'Host' : 'api.cloudflareclient.com' ,
37- 'Connection' : 'Keep-Alive' ,
38- 'Accept-Encoding' : 'gzip' ,
39- 'User-Agent' : 'okhttp/3.12.1' }
40+ headers = {"Accept-Encoding" : "gzip" ,
41+ "User-Agent" : "okhttp/3.12.1" ,
42+ "Content-Type" : "application/json; charset=UTF-8" }
4043
4144 install_id = generate_string (11 )
4245 key = key if key else self .generate_key ()
4346 data = {"key" : key [1 ],
44- "install_id" : install_id ,
45- "fcm_token" : "{}:APA91b{}" . format ( install_id , generate_string ( 134 )) ,
47+ "install_id" : "" ,
48+ "fcm_token" : "" ,
4649 "referrer" : referrer or "" ,
4750 "warp_enabled" : True ,
48- "tos" : datetime .datetime .now ().isoformat ()[:- 3 ] + "+07:00" ,
51+ "tos" : datetime .datetime .now ().isoformat ()[:- 7 ] + "Z" ,
52+ "model" : "" ,
4953 "type" : "Android" ,
50- "locale" : "en-GB " }
51-
52- req = requests . post ( url , headers = headers , json = data )
53- req . raise_for_status ()
54+ "locale" : "en_US " }
55+ req = session . request ( 'POST' , url , headers = headers , json = data )
56+ if req . status_code != 200 :
57+ return {}
5458 req_json = dict (req .json ())
5559 req_json ['key' ] = {"public_key" : req_json ['config' ]['peers' ][0 ]['public_key' ], "private_key" : key [0 ]}
5660 return req_json
5761
5862 @staticmethod
5963 def get_info (ID , token ):
60- url = 'https://api.cloudflareclient.com/v0i1909221500 /reg/' + ID .strip ()
64+ url = 'https://api.cloudflareclient.com/' + api_version + ' /reg/' + ID .strip ()
6165 headers = {"Authorization" : "Bearer " + token .strip ()}
62- req = requests .get (url , headers = headers )
63- req .raise_for_status ()
66+ req = session .request ("GET" , url , headers = headers )
67+ if req .status_code != 200 :
68+ raise Exception (req .text )
6469 return req .json ()
6570
6671 @staticmethod
0 commit comments