65 lines
2.6 KiB
Python
65 lines
2.6 KiB
Python
import json, requests, re
|
||
import sys
|
||
requests.packages.urllib3.disable_warnings()
|
||
ws=sys.argv[1]
|
||
def getsign():
|
||
try:
|
||
sign = 'https://sign.smxy.xyz/sign'
|
||
s = requests.get(url=sign).json()
|
||
svv = s['sv']
|
||
stt = s['st']
|
||
suid = s['uuid']
|
||
sign = s['sign']
|
||
return svv, stt, suid, sign
|
||
except:
|
||
print('调用sign出错!')
|
||
|
||
|
||
def getToken(wskey):
|
||
sv, st, uuid, sign = getsign()
|
||
headers = {'cookie': wskey,
|
||
'User-Agent': 'okhttp/3.12.1;jdmall;android;version/10.1.2;build/89743;screen/1440x3007;os/11;network/wifi;',
|
||
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 'charset': 'UTF-8',
|
||
'accept-encoding': 'br,gzip,deflate'}
|
||
params = {'functionId': 'genToken', 'clientVersion': '10.1.2', 'client': 'android', 'uuid': uuid, 'st': st,
|
||
'sign': sign, 'sv': sv}
|
||
url = 'https://api.m.jd.com/client.action'
|
||
data = 'body=%7B%22action%22%3A%22to%22%2C%22to%22%3A%22https%253A%252F%252Fplogin.m.jd.com%252Fcgi-bin%252Fm%252Fthirdapp_auth_page%253Ftoken%253DAAEAIEijIw6wxF2s3bNKF0bmGsI8xfw6hkQT6Ui2QVP7z1Xg%2526client_type%253Dandroid%2526appid%253D879%2526appup_type%253D1%22%7D&'
|
||
res = requests.post(url=url, params=params, headers=headers, data=data, verify=False)
|
||
res_json = json.loads(res.text)
|
||
tokenKey = res_json['tokenKey']
|
||
return appjmp(wskey, tokenKey)
|
||
|
||
def appjmp(wskey, tokenKey):
|
||
headers = {
|
||
'User-Agent': 'okhttp/3.12.1;jdmall;android;version/10.1.2;build/89743;screen/1440x3007;os/11;network/wifi;',
|
||
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3', }
|
||
params = {'tokenKey': tokenKey,
|
||
'to': 'https://plogin.m.jd.com/cgi-bin/m/thirdapp_auth_page?token=AAEAIEijIw6wxF2s3bNKF0bmGsI8xfw6hkQT6Ui2QVP7z1Xg',
|
||
'client_type': 'android', 'appid': 879, 'appup_type': 1, }
|
||
url = 'https://un.m.jd.com/cgi-bin/app/appjmp'
|
||
res = requests.get(url=url, headers=headers, params=params, verify=False, allow_redirects=False)
|
||
res_set = res.cookies.get_dict()
|
||
pt_key = 'pt_key=' + res_set['pt_key']
|
||
pt_pin = 'pt_pin=' + res_set['pt_pin']
|
||
jd_ck = str(pt_key) + ';' + str(pt_pin) + ';'
|
||
# print(jd_ck)
|
||
wskey = wskey.split(";")[0]
|
||
if 'fake' in pt_key:
|
||
print("wskey格式错误!")
|
||
else:
|
||
print(jd_ck)
|
||
|
||
|
||
def checkwskey(wskey):
|
||
flag = "wskey=" in wskey
|
||
flag1 = "pin=" in wskey
|
||
if flag == True & flag1 == True:
|
||
return True
|
||
else :
|
||
return False
|
||
|
||
if __name__ == '__main__':
|
||
getToken(ws)
|
||
|