AJiaJiShu commited on
Commit
d439dbe
·
verified ·
1 Parent(s): 319e93b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -14
app.py CHANGED
@@ -88,6 +88,29 @@ def get_hash(str):
88
  return hashlib.md5(str.encode()).hexdigest()
89
 
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  async def get_change_ip():
92
  m = random.randint(0, 255)
93
  n = random.randint(0, 255)
@@ -97,15 +120,18 @@ async def get_change_ip():
97
  return randomIP
98
 
99
 
100
- # 创建随机UA
101
- async def get_user_agent():
102
- tmp1 = random.randrange(90, 120)
103
- tmp2 = random.randrange(5200, 5500)
104
- tmp3 = random.randrange(90, 180)
105
- tmp_version = str(tmp1) + ".0." + str(tmp2) + "." + str(tmp3)
106
- ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/' + tmp_version + ' Safari/537.36'
107
- print(ua)
108
- return ua
 
 
 
109
 
110
 
111
  # 设置请求头基本信息
@@ -131,13 +157,12 @@ async def get_image_d(pid, device_id, f, change_ip):
131
  }
132
  response = requests.request("POST", url, json=payload, headers=headers)
133
  response_data = response.json()
134
- # print(f"d:{response_data['d']}")
135
  return response_data['d']
136
 
137
 
138
  # 安全验证-登录
139
  async def init(client_id, device_id, User_Agent, mail, change_ip):
140
- url = f"https://user.mypikpak.net/v1/shield/captcha/init"
141
  payload = {
142
  "action": "POST:/v1/auth/signin",
143
  "captcha_token": '',
@@ -148,13 +173,19 @@ async def init(client_id, device_id, User_Agent, mail, change_ip):
148
  },
149
  }
150
  headers = {
151
- "x-client-id": "YUMx5nI8ZU8Ap8pm",
152
  "X-Device-Id": device_id,
153
  "User-Agent": User_Agent,
154
  'X-Forwarded-For': str(change_ip)
155
  }
156
  headers.update(basicRequestHeaders_1)
157
  response = requests.request("POST", url, json=payload, headers=headers)
 
 
 
 
 
 
 
158
  return json.loads(response.text)
159
 
160
 
@@ -482,11 +513,15 @@ async def login():
482
  return jsonify({"error": "没有指定参数"}), 400
483
  email = data.get('userName')
484
  password = data.get('passWord')
 
 
 
485
  try:
486
  change_ip = await get_change_ip()
487
  client_id1 = "YNxT9w7GMdWvEOKa"
488
  device_id = str(uuid.uuid4()).replace("-", "")
489
- user_agent = await get_user_agent()
 
490
  action_init = await init(client_id1, device_id, user_agent, email, change_ip)
491
  captcha_token = action_init["captcha_token"]
492
  if 'url' in action_init.keys():
@@ -504,7 +539,7 @@ async def login():
504
  return jsonify({"code": 200, "data": login_data, "msg": 'success'}), 200
505
  except Exception as e:
506
  print(e)
507
- return jsonify({"code": 500, "data": {}, "msg": '登录失败'}), 500
508
 
509
 
510
  config = Config()
 
88
  return hashlib.md5(str.encode()).hexdigest()
89
 
90
 
91
+ Name = ["VIVO-", 'OPPO-', 'HUAWEI-', 'Honor-', 'XIAOMI', 'HONGMI-', 'APPLE-']
92
+ Type = ["S ", " pro ", "A "]
93
+
94
+
95
+ def B():
96
+ timestamp = str(int(time.time()) * 1000)
97
+ device_id = str(uuid.uuid4()).replace("-", "")
98
+ phoneModel = ""
99
+ for i in range(3):
100
+ r = chr(random.randint(65, 90))
101
+ phoneModel += r
102
+ phoneModel = phoneModel + "-"
103
+ for i in range(5):
104
+ if random.randint(0, 4) != 2:
105
+ r = chr(random.randint(65, 90))
106
+ else:
107
+ r = chr(random.randint(48, 57))
108
+ phoneModel += r
109
+ phoneBuilder = Name[random.randint(0, 6)] + str(random.randint(3, 9)) + Type[random.randint(0, 2)] + str(
110
+ random.randint(5, 6)) + "G"
111
+ return timestamp, device_id, phoneModel, phoneBuilder
112
+
113
+
114
  async def get_change_ip():
115
  m = random.randint(0, 255)
116
  n = random.randint(0, 255)
 
120
  return randomIP
121
 
122
 
123
+ def get_UA(id, ua_key, timestamp, phoneModel, phoneBuilder, version):
124
+ UA = "ANDROID-com.pikcloud.pikpak/" + version + " accessmode/ devicename/" + phoneBuilder + " appname/ android-com.pikcloud.pikpak appid/ action_type/ clientid/ YNxT9w7GMdWvEOKa deviceid/" + id + "refresh_token/ grant_type/ devicemodel/ " + phoneModel + " networktype/WIFI accesstype/ sessionid/ osversion/" + "13." + str(
125
+ random.randint(0, 9)) + "." + str(random.randint(0,
126
+ 9)) + " datetime/" + timestamp + " protocolversion/200 sdkversion/2.0.1.200200 clientversion/" + version + " providername/NONE clientip/ session_origin/ devicesign/div101." + ua_key + "platformversion/10 usrno/"
127
+ return UA
128
+
129
+
130
+ def get_ua_key(id):
131
+ k = "com.pikcloud.pikpak1appkey"
132
+ rank_1 = hashlib.sha1((id + k).encode("utf-8")).hexdigest()
133
+ rank_2 = get_hash(rank_1)
134
+ return id + rank_2
135
 
136
 
137
  # 设置请求头基本信息
 
157
  }
158
  response = requests.request("POST", url, json=payload, headers=headers)
159
  response_data = response.json()
 
160
  return response_data['d']
161
 
162
 
163
  # 安全验证-登录
164
  async def init(client_id, device_id, User_Agent, mail, change_ip):
165
+ url = f"https://user.mypikpak.com/v1/shield/captcha/init?client_id={client_id}"
166
  payload = {
167
  "action": "POST:/v1/auth/signin",
168
  "captcha_token": '',
 
173
  },
174
  }
175
  headers = {
 
176
  "X-Device-Id": device_id,
177
  "User-Agent": User_Agent,
178
  'X-Forwarded-For': str(change_ip)
179
  }
180
  headers.update(basicRequestHeaders_1)
181
  response = requests.request("POST", url, json=payload, headers=headers)
182
+ if response.status_code != 200:
183
+ error_response = response.json()
184
+ message = None
185
+ if "details" in error_response and len(error_response["details"]) > 0:
186
+ last_detail = error_response["details"][-1]
187
+ message = last_detail.get("message", "操作频繁...")
188
+ raise Exception(f"{message}")
189
  return json.loads(response.text)
190
 
191
 
 
513
  return jsonify({"error": "没有指定参数"}), 400
514
  email = data.get('userName')
515
  password = data.get('passWord')
516
+ timestamp = B()[0]
517
+ phoneModel = B()[2]
518
+ phoneBuilder = B()[3]
519
  try:
520
  change_ip = await get_change_ip()
521
  client_id1 = "YNxT9w7GMdWvEOKa"
522
  device_id = str(uuid.uuid4()).replace("-", "")
523
+ ua_key = get_ua_key(device_id)
524
+ user_agent = get_UA(device_id, ua_key, timestamp, phoneModel, phoneBuilder, "1.47.1")
525
  action_init = await init(client_id1, device_id, user_agent, email, change_ip)
526
  captcha_token = action_init["captcha_token"]
527
  if 'url' in action_init.keys():
 
539
  return jsonify({"code": 200, "data": login_data, "msg": 'success'}), 200
540
  except Exception as e:
541
  print(e)
542
+ return jsonify({"code": 500, "data": {}, "msg": str(e)}), 200
543
 
544
 
545
  config = Config()