Nevar pievienot vairāk kā 25 tēmas
Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
163 rindas
3.7 KiB
163 rindas
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
|
|
|