Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

163 rader
3.7 KiB

import hashlib
import platform
import random
import socket
from datetime import datetime
import sys
import os
from http.cookies import SimpleCookie
import json
import re
from tools.ModifiedBase64 import ModifiedBase64
def text_to_json(text, regex):
pattern = re.compile(regex)
text_list = re.findall(pattern, text)
_json = json.loads(text_list[0])
return _json
def remove_unused_symbol(text):
return text.replace('\n', '').replace('\r', '').replace('\t', '')
def remove_redundant_comma(text):
"""
移除json多余逗号,避免json.loads报错
"""
rex = r"""(?<=[}\]"'])\s*,\s*(?!\s*[{["'])"""
return re.sub(rex, "", text, 0)
def resource_path(relative_path):
if getattr(sys, 'frozen', False):
base_path = sys._MEIPASS
else:
base_path = os.path.abspath("../..")
return os.path.join(base_path, relative_path)
def export_file_name():
return "ck-export-" + datetime.now().strftime('%Y%m%d%H%M%S') + ".txt"
def desktop_path():
if platform.system() == 'Windows':
return r"C:\Users\Administrator\Desktop"
else:
return "/Users/xiaoqingsong/Desktop"
def is_json(text):
if text is None:
return False
try:
json.loads(text)
except ValueError:
return False
return True
def getTimeStamp(time):
"""
:param time: 形如 2021-01-20 10:10:20.120
:return:
"""
ts = datetime.timestamp(datetime.strptime(time, '%Y-%m-%d %H:%M:%S.%f'))
return int(ts * 1000)
def getTimeStamp(time, format):
"""
:param format: %Y-%m-%d %H:%M:%S
:param time: 形如 2021-01-20 10:10:20
:return:
"""
ts = datetime.timestamp(datetime.strptime(time, format))
return int(ts * 1000)
def getNowTime():
return datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-7]
def getCookieFromStr(rawStr):
cookie = SimpleCookie()
cookie.load(rawStr)
# Even though SimpleCookie is dictionary-like, it internally uses a Morsel object
# which is incompatible with requests. Manually construct a dictionary instead.
cookies = {}
for key, morsel in cookie.items():
cookies[key] = morsel.value
return cookies
def get_random_number_str(length):
"""
生成随机数字字符串
:param length: 字符串长度
:return:
"""
num_str = ''.join(str(random.choice(range(10))) for _ in range(length))
return num_str
def randomUUID():
random_number = get_random_number_str(15)
random_str = hashlib.md5(random_number.encode('utf-8')).hexdigest()[:12]
return random_number + "-" + random_str
def get_host_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
finally:
s.close()
return ip
def mb_encrypt(str):
v = ModifiedBase64()
return v.m23207r(str)
def get_ep(ts, uuid):
area = '13_1000_40488_54435'
d_model = 'PDNM00'
wifiBssid = 'unknown'
osVersion = '11'
d_brand = 'OPPO'
screen = '2161*1080'
uuid = uuid
aid = uuid
openudid = uuid
hdid = ''
ep = {
'hdid': mb_encrypt(hdid),
'ts': ts,
'ridx': -1,
'cipher': {
'area': mb_encrypt(area),
'd_model': mb_encrypt(d_model),
'wifiBssid': mb_encrypt(wifiBssid),
'osVersion': mb_encrypt(osVersion),
'd_brand': mb_encrypt(d_brand),
'screen': mb_encrypt(screen),
'uuid': mb_encrypt(uuid),
'aid': mb_encrypt(aid),
'openudid': mb_encrypt(openudid),
},
'ciphertype': 5,
'version': '1.2.0',
'appname': 'com.jingdong.app.mall',
}
return ep