ai项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

281 lines
21 KiB

import os
import json
import time
import random
from datetime import datetime
from typing import Any, Dict, List, Optional, Tuple
import requests
from dateparser.data.date_translation_data import pt
from utlit.retry import retry
from loguru import logger
from utlit.utils import parse_nested_json
cwd = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(cwd)
logger.add(f"{cwd}/my.log",
level="DEBUG",
rotation="00:00",
retention="3 days",
compression="zip",
backtrace=True)
class ToolsLoad:
"""工具类:封装API操作"""
@retry('提交结果', 5)
def post_task(self, data):
"""提交任务处理结果到服务器"""
# url = "https://api.granking.com/api/third/submitProjectTask"
# resp = requests.post(url, json=data, timeout=(5, 300))
# resp.raise_for_status()
if type(data) != str:
data = json.dumps(data, ensure_ascii=False)
url = "https://api.granking.com/api/third/submitProjectTask"
payload = data
headers = {
'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
'Content-Type': 'application/json',
'Accept': '*/*',
'Host': 'api.granking.com',
'Connection': 'keep-alive',
'Cookie': 'lang=zh-cn'
}
response = requests.request("POST", url, headers=headers, data=payload).json()
return response
@retry('获取task消息', 5)
def get_task(self):
"""从任务队列获取待处理任务"""
url = "https://api.granking.com/api/third/getTask?app_id=aa65700299848d6f21b969dbc9f6cf7c&secret=5588071d36f0bc61af849c311a03f2c4&date=2025-09-20&platform_ids=2"
resp = requests.get(url, timeout=(5, 20))
resp.raise_for_status()
return resp.json()
@retry('更新任务状态', 5)
def update_task_status(self, task_id: str, status: str):
"""更新任务状态"""
url = "https://api.granking.com/api/third/updateTask?app_id=aa65700299848d6f21b969dbc9f6cf7c&secret=5588071d36f0bc61af849c311a03f2c4"
payload = {"task_id": task_id, "status": status}
resp = requests.post(url, json=payload, timeout=(5, 20))
resp.raise_for_status()
return resp.json()
class TongyiChatClient:
"""通义千问聊天客户端"""
def __init__(self, cookie):
self.api_url = "https://api.tongyi.com/dialog/conversation"
self.headers = {
"Host": "api.tongyi.com",
"Connection": "keep-alive",
"X-Platform": "pc_tongyi",
"X-XSRF-TOKEN": "76d46e4e-87a0-4a76-8811-8ee300b56c4d",
"sec-ch-ua-mobile": "?0",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"accept": "text/event-stream",
"Content-Type": "application/json",
"Origin": "https://www.tongyi.com",
"Sec-Fetch-Site": "same-site",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Dest": "empty",
"Referer": "https://www.tongyi.com/qianwen",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "zh-CN,zh;q=0.9",
"Cookie": cookie,
}
def _build_payload(self, keyword: str) -> str:
"""构建请求payload"""
post_data = json.dumps({
"sessionId": "",
"sessionType": "text_chat",
"parentMsgId": "",
"model": "",
"mode": "chat",
"userAction": "new_top",
"actionSource": "",
"contents": [{
"content": keyword,
"contentType": "text",
"role": "user",
"ext": {"deepThink": True}
}],
"action": "next",
"requestId": "cdd3936e15364cef8415f14e1daa0b07",
"params": {
"deepThink": True,
"specifiedModel": "tongyi-qwen3-max-model",
"lastUseModelList": ["tongyi-qwen3-max-model"],
"recordModelName": "tongyi-qwen3-max-model",
"bizSceneInfo": {}
}
}, ensure_ascii=False)
return post_data
def chat(self, keyword: str) -> Tuple[str, List[Dict[str, str]]]:
"""执行聊天请求并获取AI回复"""
headers = dict(self.headers)
data = self._build_payload(keyword)
ai_search_result_list = []
answer = ''
try:
with requests.post(self.api_url, data=data, headers=headers, stream=True, timeout=60) as r:
r.encoding = "utf-8"
if r.status_code != 200:
text = r.text
raise RuntimeError(f"Upstream status {r.status_code}: {text[:200]}")
r.raw.decode_content = True
for ln in r.iter_lines(decode_unicode=True):
if not ln:
continue
# logger.info("SSE line: {}", ln)
if '今日超过调用次数' in ln:
logger.error(ln)
return ln, ln
data_str = ln.replace('data: ', '')
data = parse_nested_json(data_str)
# 获取结果
contents = data.get('contents', [])
# 保存搜索内容
for content in contents:
content_type = content.get('contentType', '')
if content_type == 'referenceLink':
search_result_list = content.get("content", {}).get("links", [])
for search_result in search_result_list:
dic = {}
dic["url"] = search_result.get('url', '')
title = search_result.get('title', '')
dic["title"] = title
dic["body"] = search_result.get('body', '')
dic["host_name"] = title.rsplit('-', 1)[1] if '-' in title else '未知'
dic["publish_time"] = search_result.get('time', 0)
ai_search_result_list.append(dic)
if content_type == 'text':
answer = content.get('content', '')
return answer, ai_search_result_list
except requests.exceptions.RequestException:
raise
except Exception:
raise
class Start:
"""通义千问任务处理器主类"""
def __init__(self, cookie):
self.tools = ToolsLoad()
self.client = TongyiChatClient(cookie)
@retry('处理消息任务', for_work=0, time_sleep=60)
def process_task(self, task, a):
"""处理单个任务"""
task_id = task.get("id", "")
keyword = task.get("keyword", "")
brand = task.get("brand", "")
platform_id = task.get("platform_id", "")
logger.info(f"账号:{a} 开始处理任务 {task_id} (keyword={keyword})", task_id, keyword)
# 使用通义千问API发起请求
answer, search_result = self.client.chat(keyword=keyword)
if '今日超过调用次数' in answer:
print(f'账号:{a} 今天超过限制')
time.sleep(30*60)
return False
# 组装提交数据
ts = time.time()
dt = datetime.fromtimestamp(ts).strftime("%Y-%m-%d %H:%M:%S")
dic1 = {"2": "通义千问"}
result = {
'app_id': 'aa65700299848d6f21b969dbc9f6cf7c',
'secret': '5588071d36f0bc61af849c311a03f2c4',
'platform_id': platform_id,
'platform_name': dic1.get(platform_id),
'prompt': keyword,
'keyword': brand,
'answer': answer,
'search_result': search_result,
'screenshot_file': '',
'run_status': True,
'task_id': task_id,
'rank': 0,
'start_time': dt,
'end_time': dt,
'screenshot_url': '',
'words': []
}
logger.info(f"账号:{a} 任务 {keyword} 结果返回: {result}")
post_resp = self.tools.post_task(result)
logger.info(f"账号:{a} 提交返回: {post_resp}")
return True
@retry('主运行窗口', for_work=1)
def start_task_msg(self, a):
"""获取并处理任务"""
task_resp = self.tools.get_task()
# task_resp = {}
# task_resp['data'] = {'id': 'eb457930e154753c5964404e7a8e0d5d', 'project_id': '019df74fec257337813e2651180be6e0', 'keyword_id': '019df777e80471ed9e7b862d898b085e', 'keyword': '点外卖有没有省钱技巧', 'brand': '美团', 'platform_id': '4', 'gather_date': '2026-05-06', 'gather_time': '06:00', 'gather_filter': '2026-05-06 00:30:02', 'status': 2, 'retry_count': 0, 'screen_flag': 1, 'thinking': 1, 'is_deal': 1, 'is_init': 2, 'publish_time': '2026-05-06 11:39:42', 'screen_url': '', 'priority': 1200, 'start_time': None, 'end_time': None, 'create_time': '2026-05-06 00:32:09', 'update_time': '2026-05-06 11:39:42', 'delete_time': 0, 'create_by': '', 'update_by': '', 'type': 1}
print(task_resp)
if not task_resp:
logger.info(f"get_task 未返回有效数据,等待后重试: 账号{a}")
time.sleep(5)
return True
data = task_resp.get("data", False)
if not data:
logger.info(f"没有任务数据,等待下一轮: 账号{a}")
time.sleep(30)
return True
return self.process_task(data, a)
def run(self, a):
"""主循环"""
logger.info(f"启动通义千问任务处理器: {a}")
while True:
self.start_task_msg(a)
time.sleep(random.uniform(5, 10))
if __name__ == "__main__":
cks = [
"UM_distinctid=19ba052efa8581-06dddb8c662afe8-26061a51-4b9600-19ba052efa9883; _ON_EXT_DVIDN=eCy#AANaRJDxEVb8bqwLxl0KH/LbC9Qr4fNXN8jM0ilCEryuKtBG5KxxupJRI201LiXuKkA=; _qk_bx_ck_v1=eyJkZXZpY2VJZCI6ImVDeSNBQU5hUkpEeEVWYjhicXdMeGwwS0gvTGJDOVFyNGZOWE44ak0waWxDRXJ5dUt0Qkc1S3h4dXBKUkkyMDFMaVh1S2tBPSIsImRldmljZUZpbmdlcnByaW50IjoiNDkzMTBjMmY1ZDk5ZmRjMmYwNmJkMjU5MjYzMjAzMzIifQ==; tongyi_sso_ticket=64kQ7YnAty8knctY0wC4BRzmgpubGDzpf8Gz1g_BynogsOH1apRX0qcdzyjCw$oV3MA93SvC4gFR0; tongyi_sso_ticket_hash=tytk_hash:1086e3f695c3ed852ed9eb88d0a14438; theme-mode=light; _qw_bx_timeout_v1=1000; xlly_s=1; _qk_bx_um_v1=eyJ1ZCI6IlQyZ0EzZEh3ZFdqOUFoUlV2Q2Z1WWZQOUhOekdSVnN5VEhLTzJmMV9zNGVGOWw3YzFDRVJuUXlsTjB3c3NxNzVDbTg9IiwiZXAiOjE3NzcyOTA2MTEyNjR9; JSESSIONID=52154072221ECD03C5145FF3DCD02AC2; sm_uuid=7917b46d4e5f49dea2557d62e77f2cad|||1777270865; sm_ruid=7917b46d4e5f49dea2557d62e77f2cad|||1777270865; isg=BFRUK5WUwehqr1UHZoMeoFJjJZLGrXiXguk40u42HV3-2f8jCr4wJk6b2dHBIbDv; tfstk=gJ6IlXvpF20ISIZLy2rZfGmrVk9Wplyqv0tRmgHE2ppKy4Iv7HSUtgu-FNTNLeSepUi5ziLKJUhpXGKcr3E3ZBhWXH-Yx4Fo9Rd5o30-weLKXfQRrub5qkxJyaQWz6Pa3MjHELUVN-yVxpH09hQIeYnT23KrelRpSgfS4LU4u-lZXB4eeM8a3gROXFxSpXKdyFL9YFK-9LQJWCKv02pJeaE6WnxDyvdJwRK92FLJeLQRXltyWHpJeaITf3cmYVtrRhSQ2dNXl8DYDGTseYB6XzxdAbHDvt-BOEIdd1f1CTABkMLsFyKYLf8WStUa1GbN9w-GP-a6BiC6peWTkYTPi9jOCBn-sMp9RiA1syM9bQTC69ds2YIHQ1bPNwaIteCF5Ix960wDbZ8Ox9C_qVIdue9pXCyYcGdR_9AcLPHBHsjeL_QTCv_A43M2lSFtNcOmFhT4flGoZUpDdFVUyP0H9hxL3lZs7TApjhalUlGBgBKMvHq_f2fc.",
"UM_distinctid=19dcd9ce400560-0f72c9a22d56308-26061e51-4b9600-19dcd9ce401f70; theme-mode=light; _samesite_flag_=true; _qw_bx_timeout_v1=1000; xlly_s=1; _ON_EXT_DVIDN=eCy#AAP69RjfUKviqCemYO4tUEEbXeNf0IeAt7xAzQGjSxbQ4DTdN8VLAwl2+uh+Nc7hK7s=; _qk_bx_ck_v1=eyJkZXZpY2VJZCI6ImVDeSNBQVA2OVJqZlVLdmlxQ2VtWU80dFVFRWJYZU5mMEllQXQ3eEF6UUdqU3hiUTREVGROOFZMQXdsMit1aCtOYzdoSzdzPSIsImRldmljZUZpbmdlcnByaW50IjoiZjFiYzg5OTA3YmE4ZjlmNzlhYWY5MDZkOGI4Yjk0ZDYifQ==; tongyi_sso_ticket=mG0YF*jzmRq19aotQ8mEwpfbGzzg_8yn1gsBH1opRO0qadzXjCc$oy0bNs1h*5poA2RM9ZsXXxZ_0; tongyi_sso_ticket_hash=tytk_hash:7c21ff5373b02f1999eec4ebaf3d4c3e; _qk_bx_um_v1=eyJ1ZCI6IlQyZ0FhVTBLMG9DNlBDbmF4TmhYSFg1QnBsa3Nxb2NtaW9HTFFZdHZ6dnR3NnNUalpOUHNoU0VRVGFsT0pJSTFHMzQ9IiwiZXAiOjE3NzcyOTEwNTQwMzN9; isg=BGBg0WgjHUyX3qFIiyOQ1uUSMW4yaUQz3nWsPtpzuXsO1QP_hH85wlMjbX3V5fwL; tfstk=gtFjkiGx1nxb_tbAXn7yPzqNVLhsfa5ekFgT-Pd2WjhvXhUK4qzVnP-91uizgmzqMcT_bynvDcpxyz33jVQcIxpsyqudohBMH_H_xVx9BmnvyLETjNq_SZ0tXlEsb-WPTr4msfIUC65UoWbICbrsHqL-wz0MHnBrHDzgVFsFY651HUh1cMzqaTujeVm-kIn96aM-72ltkIHOP03s-dKYXfQ5P20wHIHt6z3--qGtXlhOPzno5f3YXfQ7y00tGY-S7ngzlNh5Qk-e754xVCdTM1DoA3ixr4FSlxiKe0OOz7gjhDUY90mrw4FzNvky7MG8-8rxPX16wjMQiWM8MgAsEli-CShwRCU70zeECSQGnzNscvFxFeRsiz0TXAwlABujg8MQG-bM2rEEcJh07es4PvwSK4HJ5Kh4LyPipSCXx0kn5kgQcnsPsBoCpTp6PvAsPD75PdviXXcjqEE568MxrqCFPatzsx3oPXVNPKaZH40xoa_WmJf..",
"UM_distinctid=19e05ace6c8c33-09261779579fda8-3e2d0c10-4b9600-19e05ace6c9238d; theme-mode=light; XSRF-TOKEN=981723fa-0ff7-4547-aef1-cc35a3595a27; XSRF-TOKEN=981723fa-0ff7-4547-aef1-cc35a3595a27; _samesite_flag_=true; cna=YUmEIiHa0V0BASQOA6JJaFj0; xlly_s=1; tongyi_sso_ticket=i3jTmA0ScpUF9_URVf8laU62yErIoFfA5fbKzzp_8Gn1gsBy1ogROHqapzX0Ccdoyjpp$dlMt9Vx0; tongyi_sso_ticket_hash=tytk_hash:7dc1a46667e392197baa4ee790996810; _qw_bx_timeout_v1=1000; _qk_bx_um_v1=eyJ1ZCI6IlQyZ0FMdEc0OTAwTWpBZGpGekJyRWFuU2MtTW43TnFkcHZMR3dMUzdmbjZfRFNxT19mUDBpb0tQWjFoUF82NGg1MEk9IiwiZXAiOjE3NzgyMzE1NjM4MDB9; _ON_EXT_DVIDN=eCy#AAN+t8g6Jgo7lk9g6nVWuKQG41eJGKhn3xtt9gIWttxDf5dnraiMiEYZBPXH9thFpLU=; _qk_bx_ck_v1=eyJkZXZpY2VJZCI6ImVDeSNBQU4rdDhnNkpnbzdsazlnNm5WV3VLUUc0MWVKR0tobjN4dHQ5Z0lXdHR4RGY1ZG5yYWlNaUVZWkJQWEg5dGhGcExVPSIsImRldmljZUZpbmdlcnByaW50IjoiZmM2OGNhODQyYmJiYzhkMjkyNzg0MzY5MzU3NGJlZTAifQ==; tfstk=g5OjdRwoLoqju-gxXouzR4JQwvC1C4lU1P_9-FF4WsCYXlLd4Z8qnFrT13sygi8VMrvkYeF2gxfa1sfG6DoETXz2o1ft0wZwHrfRJNbt_iFOwsbNeM0atX8DozUbX2J-Tf9vHq_OXhBA2TQG2NITMhCR2Zj8MNFAWu35SgCOWSC9ybQ1JSQAWhL-PNjRX1BvX_35SgIO61hkiu_aca8jSWtDk0ocdEI765dxstsBqRP_1Q_fhCLcVe8eNZ6fvOwtnWOv4Fd2iTDzE1Yydh99jvylGFpAMw8mG71pkLR1zCuaCiKDNUdcFyPFhdQ1p1B7W5L5igtH16hLVavJuddDcPNOoIRFCMXSW5XNwBWppnai-UCAWhXH_DVcDFLHtp5Ia-CpPdKBCglLTMNs1Ra5K5_5Y4g7IRbXb_x7eEplitQlkXuSPuRGHab5Y4g7IRXArZpEP4Zys; isg=BIWF_lLhQPmoH2SlrMQVsLz2lMG_QjnUoqsvY4fqVrzLHqSQT5SNpW70KELoXlGM",
"theme-mode=light; UM_distinctid=19e05b28ed7955-03ad77104f659d-26061e51-4b9600-19e05b28ed82437; _samesite_flag_=true; cna=1EqEIqjt7DoBASQOA6IeP4xK; xlly_s=1; tongyi_sso_ticket=tzORv5J3LepQEjEdUDyvNFsFZo4pS7yOCOmHb6_zpf8Gz1g_BynogsOH1apRX0qcdzyjCs$oToJZ0; tongyi_sso_ticket_hash=tytk_hash:e82adda9bb503f4191b289ead1b14d63; _qw_bx_timeout_v1=1000; _qk_bx_um_v1=eyJ1ZCI6IlQyZ0FGdTNROTFQcy1iWHhObUc4ZlBuZmRHREVpaGpoVXBaa3ZmSTVLMXoyM0ZadElWVEtONk5JbThzcVdFay0xR289IiwiZXAiOjE3NzgyMzE5OTgzMjd9; _ON_EXT_DVIDN=eCy#AAN0QZ7GfNvzHKFVXascdh5MAeWZDi5pOITilZF1SufTkDmYnCose670VWvcyAexoyA=; _qk_bx_ck_v1=eyJkZXZpY2VJZCI6ImVDeSNBQU4wUVo3R2ZOdnpIS0ZWWGFzY2RoNU1BZVdaRGk1cE9JVGlsWkYxU3VmVGtEbVluQ29zZTY3MFZXdmN5QWV4b3lBPSIsImRldmljZUZpbmdlcnByaW50IjoiNTUxMDQ4YmU0MDZlZWExZjMxMjJjMGI3YzU3YWQzYjQifQ==; isg=BNTUmYKXQXq3K9U2QnTuqI0BpRJGLfgXAmm4Um61Id_iWXWjlj89p2caWVFBoTBv; tfstk=gTBiQsMR71R_Hr0UEqJ_tLDrFgNL6d9X_ZHvkKL4Te8IWVHO0Kyckw3O6iI2oZbpRZAbfEL2oZIV6ke8eGs6hKu0y8eJAwVzhN0wbAr2Tn-7vhuDFIiJhKz8JXH218vfSWF1MISUxnKj_E72_2ueRnDquZ8wT2-kVK8VuZJE83tq3AJ2uMkeRnJ2uZJ4xM8BmK8VuKrhYbqE_UK2W9zWTSzElLYhKhAMzMVS3xvEeC8PbeD4z9xGuUSw-xkvzYWoqMjTSYspCT_k2NeEIaj5dwxFz-4Hhw1VunbUFqp1wN6WtMNrLMpMRQ8FUVlwqdYMaORI4usyg6XHBOzjNMIH7Qvd9Wa9MdbGNUOaOy_cxFQVIBugJECRvORhzyHhlIf5DnbgIA7P4ThEacAjhHrALjGX_HtHy8q3FV3UM3zTxkcRcC-B0_E3xjie_Ht1LkqnwuOwAhc5.",
"UM_distinctid=19ddcfffe19a71-0c0744a63b8dda-3639313d-384000-19ddcfffe1a1453; cna=q995Iue97B8BASQOA6LqO1pE; theme-mode=light; XSRF-TOKEN=92291628-a38e-4df2-9aac-d6b57f792715; XSRF-TOKEN=92291628-a38e-4df2-9aac-d6b57f792715; _samesite_flag_=true; xlly_s=1; tongyi_sso_ticket=OH1apRX0qcdzyjCO$oQ4ZwftL86kfpryzHZDMYSOyYmUxtIy8120EXqC9SxFpfbGzzg_8yn1gsBo0; tongyi_sso_ticket_hash=tytk_hash:c675b29ed9350cb9b78985f3fc3dbc38; _qw_bx_timeout_v1=1000; _qk_bx_um_v1=eyJ1ZCI6IlQyZ0E0SFh0SFJZUi1pTUdsd0pMVW54dGpoTW42YzBsU01yUHd6WlU4RTkwYWZnQ1dnZV9STjJqWUk3RHQ0N0N1clE9IiwiZXAiOjE3NzgyMzIwOTkzNjV9; _ON_EXT_DVIDN=eCy#AANZeumXYKgKaJ1C0WYy/5zae+9aEypxdTTXRjAdaEFdbxEbsWjTyHOboXBq7dY6HoA=; _qk_bx_ck_v1=eyJkZXZpY2VJZCI6ImVDeSNBQU5aZXVtWFlLZ0thSjFDMFdZeS81emFlKzlhRXlweGRUVFhSakFkYUVGZGJ4RWJzV2pUeUhPYm9YQnE3ZFk2SG9BPSIsImRldmljZUZpbmdlcnByaW50IjoiNzNiMmRhYjNmODFmMjNiMDcyNzlkMzg3YmE1YjQ3MjAifQ==; isg=BJuboV2fdt_EYYokjKJgrYBMKv8FcK9yXXbrqI3YKRqxbLtOFUMfwi8vBsxizAdq; tfstk=gRz-arc2stXugv_fBUj0xU5TpICmyiVyZ8P6-vDkA-eY15JoA0qoJkF_BDmCU44LH4z0qeDlU2FQI2BGINbga7orROXGME7Hd2GC-vsmV_VGJ36GINbcVIgdeOVkiQ8icXkjNXTIAsHjtXuINbMCMxGK_H97d21AMXh6NHMWRjij6XgIdJgCMSMq92G7d21YGxlIZ3C-3aGwJoz5u71ADSLBRrh-ciVShi2LkbnmC7aJReGsw0H_NxW84ssEcWoL8B8KY7ZaLfwWFOmzOoexw2QDVVNYARh4PNv-guVbsxN9TePryrUYAmC5PS3-ec4bnQKIykwzJ0rJT1PjP-rZQ0sV3jUuSDHZDK67iSHSXkel3eMuXSwxjrvDS2y4AJGLhLIznP4TizpiBXx5MsKeY0G2yhMOU2AvUClxI_iWYHoTujHGMcxeYmUZMAfJ2H-E0t5.."
]
cks = [
'theme-mode=light; XSRF-TOKEN=a5f58cf1-2288-4154-8266-967a4ae178ea; XSRF-TOKEN=a5f58cf1-2288-4154-8266-967a4ae178ea; _samesite_flag_=true; UM_distinctid=19e0650daae6a6-0ca63746001f978-26061f51-125f20-19e0650daaf68b; cna=WnOEIm7uf2kBASQOA6K2vB8K; xlly_s=1; tongyi_sso_ticket=pfbGzzg_8yn1gsBH1opRO0qadzXjCc$oysrH_ZBT5gTUpDURaocsJfSltdcnqIOGSLHmoenUNf_a0; tongyi_sso_ticket_hash=tytk_hash:de4974bed10c882f7c0a56885e8c81d6; _qw_bx_timeout_v1=1000; _qk_bx_um_v1=eyJ1ZCI6IlQyZ0FIRkxSclc1TjdRbGFwbTFtWnBOcXRhcVdGV3NpUkJHZXdWR3dWMHNXTTFkLUVsdWwzUndtaTJ3Y0Q4NkpHSVU9IiwiZXAiOjE3NzgyNDI0MjY1MDF9; _ON_EXT_DVIDN=eCy#AAOiwZLBij1PBqFCxRFaQqQxuiTRbjqR4K/3t2pbTreC28Ll+5OIzh/M1weeBbE8Pg4=; _qk_bx_ck_v1=eyJkZXZpY2VJZCI6ImVDeSNBQU9pd1pMQmlqMVBCcUZDeFJGYVFxUXh1aVRSYmpxUjRLLzN0MnBiVHJlQzI4TGwrNU9JemgvTTF3ZWVCYkU4UGc0PSIsImRldmljZUZpbmdlcnByaW50IjoiMzgzNzJjOWM5M2FiNTFmYTZhYTBjNmQzYjRkYjAxZGEifQ==; isg=BF5e6H9Ku3RidO-QvQ-8LwXSr_SgHyKZn3zo9Qjnm6GcK_8FcKy-qPaIIzcnExqx; tfstk=gATIQ1cnEJ2IwCGKeJlaGjWavXb5Afu4P71JiQUUwwQLe8dAQ6RExQy8Pd6w89RFJWxM3IUe8DbzPwblyxkquqPHtabJ9OR28J0OM_uzJyQR-NIg2bymuqRH9W5KgC32YHElH_WRyMBdBVBGZJUpeMCOXOflwJC8JfOOIOCL26IR65CliWBJeah66OfRyTpRvfOOI_QReXtnV125QBGuumGKPxQW9Oa8ye3lAt6Q4zaW56sByBB1O6T1OM6AVuLffepwwe8hjmEfrC-XF3pt5y9W9npRLFHYPT-cNQCfk0kDsN6CWeKbwzd1ROjyRGeICtLH6EbObqhX6FvetFOzw4Cw3OdHJagxiw_dpN1MzA4dFhKJ8Mbupv_J1_IrJrWfwbq71i451tls1uqlZYQoQeGcfzjds1RE1fZ2xMCG1Ncs1orGv1fpTfG_dw5..',
'theme-mode=light; XSRF-TOKEN=c158bbf3-d3f4-4895-90c1-7ec7f09b38e5; XSRF-TOKEN=c158bbf3-d3f4-4895-90c1-7ec7f09b38e5; _samesite_flag_=true; UM_distinctid=19e065171c3726-07f1162ecfec668-26061f51-d4800-19e065171c44e9; cna=gXOEIqLAnzUBASQOA6KDtRWe; xlly_s=1; tongyi_sso_ticket=n4QJe8z7RxzTdemKbBi5ebiwzpf8Gz1g_BynogsOH1apRX0qcdzyjCY$oO322Vve0c_T5H40af_Z0; tongyi_sso_ticket_hash=tytk_hash:748e32d7c0a88e1bfbe55a8a3a88bc14; _qw_bx_timeout_v1=1000; _qk_bx_um_v1=eyJ1ZCI6IlQyZ0FGalhPeTJyWGYydl9tWWh0LWl4ekxPTDlwaEcxb1dOY1FrY0NGdmh2QVBCd1ZVM2dycFREZTg5VXBGdXJOakk9IiwiZXAiOjE3NzgyNDI0ODIyMjl9; _ON_EXT_DVIDN=eCy#AAMLX4x4meI0zlZX9vwmfrjxZtxXVYTObHxHk60GOYBZ77jj8V3NZI60PDjPcGeySE8=; _qk_bx_ck_v1=eyJkZXZpY2VJZCI6ImVDeSNBQU1MWDR4NG1lSTB6bFpYOXZ3bWZyanhadHhYVllUT2JIeEhrNjBHT1lCWjc3amo4VjNOWkk2MFBEalBjR2V5U0U4PSIsImRldmljZUZpbmdlcnByaW50IjoiM2Q4ZWY2NmU4ZDQ2YjZiMGUxMjZmZTI4NzgwMTViZTIifQ==; isg=BG5urc9qi6Tyw__ATdhRTZI7v8QwbzJpb6zYxZg3unEsewzVAv1Re3Y9M-eXoyqB; tfstk=gNYSlg1Bp827Rgl-p8l41f52Ip_QNjuawW1psBUz9aQ8pJdO3_RrqByLRK62zTRPy9NBLCBJzv4dMSpNwUyR26IAM_59zbmnKoIAtd5p8uCRHiCwLkpBtbfdpppCL3oq7QAl-wHNRVuwZGXDlyp7yMBx911CpjS8Lavq7wHZQ2Z4MgDPJQoqT2jvMtfQyyIJpsQAstC8ezpdHiCO_8QdJphfk_f727BdereA9tBdJwppMj1FH_QdJpdxG6cVXR1xVtRStPoE830FYQBbJyL--gX12kzU8E15VedRhs52l_s5BMZp5_8J3BLyrimu4wA2fptpKcrcPBKRy1RoPr_9wn8CgelUATd2lM8fcqM6Ge65XUIb9f75k6pdAnD_7__ycGTWqX2vwdWWXaAU1YRffnsGMiFQ2a-w_ej9y4wG3GfBUtJtWr_Avg537OtgtkNfjy1fQjGbxkfnpwD2lBlE4gCciqljGlrh2sffQjGbxkjRi_drGjw5z',
'theme-mode=light; XSRF-TOKEN=78deb4db-ab58-429b-9be3-2db565000749; XSRF-TOKEN=78deb4db-ab58-429b-9be3-2db565000749; _samesite_flag_=true; UM_distinctid=19e065178931fa-0c79be7e7ce26-26061f51-d4800-19e065178948c4; cna=g3OEIldJYQ4BASQOA6KP1d5f; xlly_s=1; _ON_EXT_DVIDN=eCy#AAO2BPhSfK4/HfD8s0vpjEtJFGjpkfbT9ZDc9qGwqjqa+ofStQiPQcoXrDovGPW0muM=; _qk_bx_ck_v1=eyJkZXZpY2VJZCI6ImVDeSNBQU8yQlBoU2ZLNC9IZkQ4czB2cGpFdEpGR2pwa2ZiVDlaRGM5cUd3cWpxYStvZlN0UWlQUWNvWHJEb3ZHUFcwbXVNPSIsImRldmljZUZpbmdlcnByaW50IjoiNmIyZjA0ZWUxYzNmNzI5NzY5MmJjYmUyZWRjZWRlMDcifQ==; _qw_bx_timeout_v1=1000; tongyi_sso_ticket=_8Gn1gsBy1ogROHqapzX0Ccdoyj0B$NXIf9BxZBOrxHsxYkf6X5boxt2Wo1lmjGAX0EH2beRzpfz0; tongyi_sso_ticket_hash=tytk_hash:d9bcbac97df3f73b3730f44b45b33882; _qk_bx_um_v1=eyJ1ZCI6IlQyZ0EyZy1ZajVVRUpFR0tXSXZUSEI1cEY2TVhfUWc4SEVHNEVzcEExeUFrTUFYWVotMG5xVEQyYWctSlVGakhOUGs9IiwiZXAiOjE3NzgyNDI3NjY0NDR9; isg=BBsbM7--9l-esAqreAnXhL95qn-F8C_yApvNLg1YUpoa7DnOl8KFQFEqhkziTIfq; tfstk=g5VjluNutnxbZxbAXn7yRw5yFuc1ca5ekFgT-Pd2WjhvXhUK4qzVnP-91uizgmzqMcT_bynY3KpxyVgsSqpOjt0-y2uHkhBGIfOsolvvkimv2_3tWEE_SZ0tXlEsb-WPTr4msfIUf65UoeomaVEjkIURW2g6Bakx4-9aUfIFY19yyxjq6rWzNGk8y006MCHYX43-S03vkcEt2Y3K8nht6lQSeVupDh3tXUC-o0nt6fETyagZ2qht6lURPVcXtHgRh0zfSBWumJO3prnW6CFAsxmBB03oP7iohDH-7C3zNqMjvrFKPZd-y7PSLY8NAbU3Uo3SO1O-GvwYc4UlfBiYLyc-2lKf442Yc7H_aNX0P5ijpSHW5B4r1VEtC8jBTqG4FvNbnNx8kkobpj4wRizSd8MnyYL6HjyU85DLMstn4v0_A2ZXcgl6TDw1jdTSKCgSYa_WId0GXfjPBQfZgx3or_75PpJiH40SYa_WIdDxrqUVPatjg'
]
from threading import Thread
T = []
a = 1
for ck in cks:
A = Thread(target=Start(ck).run, args=(a,))
T.append(A)
A.start()
time.sleep(2)
a += 1
for a in T:
a.join()
# Start().run()