main
Ken Stevan 2025-04-15 10:23:39 +08:00
commit 3436a1e38f
3 changed files with 1495 additions and 0 deletions

1038
ab_19.js Normal file

File diff suppressed because it is too large Load Diff

29
main.py Normal file
View File

@ -0,0 +1,29 @@
from jose import JWTError, jwt
from fastapi import HTTPException
from datetime import datetime, timedelta
from jose import ExpiredSignatureError
SECRET_KEY = "Bv8Z1&xG$Aq7!s9PfL@t#QwE2rY%Nk*mCjH^Rb6DuXpZ+3VoBO"
ALGORITHM = "HS256"
ACCESS_TOKEN_EXPIRE_MINUTES = 30
# === 创建 Token ===
def create_access_token(data: dict, expires_delta: timedelta = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)):
to_encode = data.copy()
expire = datetime.utcnow() + expires_delta
to_encode.update({"exp": expire})
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
return encoded_jwt
def verify_token(token: str):
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
if payload["role"] != "admin":
return None
return payload
except ExpiredSignatureError:
raise HTTPException(status_code=401, detail="Token已过期")
except JWTError:
raise HTTPException(status_code=401, detail="无效的Token")

428
web.py Normal file
View File

@ -0,0 +1,428 @@
import json
import subprocess
import time
import uuid
from functools import partial # 用来固定某个参数的固定值
import uvicorn
from pydantic import BaseModel
from fastapi import FastAPI,Request
app = FastAPI()
subprocess.Popen = partial(subprocess.Popen, encoding='utf-8')
import execjs
from fastapi import FastAPI, Depends, Header, HTTPException
from typing import Dict, Optional
from pydantic import BaseModel
from jose import JWTError, jwt
from datetime import datetime, timedelta
from cryptography.fernet import Fernet
import urllib.parse
import requests
from auth import verify_token,create_access_token
class LoginRequest(BaseModel):
user_id: str
role: str
fp: int
@app.post("/login")
async def login(data : LoginRequest):
token = create_access_token(dict(data))
return {"access_token": token, "token_type": "bearer"}
async def check_jwt(authorization: str = Header(...)):
if not authorization.startswith("Bearer "):
raise HTTPException(status_code=401, detail="Token格式错误")
token = authorization.replace("Bearer ", "")
user_data = verify_token(token)
if user_data is None:
raise HTTPException(status_code=401, detail="无效的Token")
return user_data
ctx=execjs.compile(open('ab_19.js', encoding='utf-8').read())
requests.packages.urllib3.disable_warnings()
# cookies = {
# 'BUYIN_SASID': 'SID2_7492380176849060132',
# 'SASID':'SID2_7492380176849060132'
# }
def common_encrypt1(json_data,params,ua):
da = json.dumps(json_data).replace(' ', '')
pa = urllib.parse.urlencode(params)
ab = ctx.call('enc', pa, da, ua)
params['a_bogus'] = ab
data = json.dumps(json_data, separators=(',', ':'))
return data
def common_encrypt2(ua,params):
pa = urllib.parse.urlencode(params)
ab = ctx.call('encryptAbogus', ua, pa)
params['a_bogus'] = ab
# return data
@app.post("/get_yellow_car_products")
async def get_yellow_car(data:Dict,room_id:str,auth=Depends(check_jwt)):
cookies = data
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
'cache-control': 'no-cache',
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
'origin': 'https://live.douyin.com',
'pragma': 'no-cache',
'priority': 'u=1, i',
'referer': 'https://live.douyin.com/996935408475',
'sec-ch-ua': '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'uifid': '29d6bea3e5a6c157a08a212e1912b5e8a78666ece26be56100fa19e58a63a45bbf6ac0f2718fca29c4fa2fb5f45bfcaea6a8e560cad35459acf3bec074e26bd507cc878d629deea5d98525276c6c930e2871de6184fcd505c418ad8d62495640d5aef399e4fea7c04b933c919eeffb316d26046e16c46999a152ead37d61379966833aae53a414fc3a0c9ac4a382b31616161535518766374c9afe940933fe48',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
'x-secsdk-csrf-token': '000100000001366a5d3aafc5da2b7fb7a8f9bbd2183e77e6bf0c1be7e91cccd6a288ad38fcd118360d9cc34524df',
}
params = {
'device_platform': 'webapp',
'aid': '6383',
'channel': 'channel_pc_web',
'room_id': f'{room_id}',
'author_id': '4498836619270612',
'offset': '0',
'limit': '20',
'pc_client_type': '1',
'pc_libra_divert': 'Windows',
'update_version_code': '170400',
'support_h265': '1',
'support_dash': '0',
'version_code': '320100',
'version_name': '32.1.0',
'cookie_enabled': 'true',
'screen_width': '1536',
'screen_height': '864',
'browser_language': 'zh-CN',
'browser_platform': 'Win32',
'browser_name': 'Chrome',
'browser_version': '125.0.0.0',
'browser_online': 'true',
'engine_name': 'Blink',
'engine_version': '125.0.0.0',
'os_name': 'Windows',
'os_version': '10',
'cpu_core_num': '16',
'device_memory': '8',
'platform': 'PC',
'downlink': '10',
'effective_type': '4g',
'round_trip_time': '250',
'webid': '7446819597804946956',
'uifid': '29d6bea3e5a6c157a08a212e1912b5e8a78666ece26be56100fa19e58a63a45bbf6ac0f2718fca29c4fa2fb5f45bfcaea6a8e560cad35459acf3bec074e26bd507cc878d629deea5d98525276c6c930e2871de6184fcd505c418ad8d62495640d5aef399e4fea7c04b933c919eeffb316d26046e16c46999a152ead37d61379966833aae53a414fc3a0c9ac4a382b31616161535518766374c9afe940933fe48',
'msToken': '8w0DCcNbCsn5heG_fBkCx7SKtL-Bgv_awvNokCdqa9lboNSq-bYWMmjVA0YRS4RmwKJvI9CBtEdVTM2toasygEyun9PPQMROMAdV4mgZosBDcVJ7xCitwNJJQWhLH9ByYaC3DlxbG6Tz7WmNRZr01N68Ykz9uuweGFuo6eXIq9k=',
}
response = requests.post('https://live.douyin.com/live/promotions/page/', params=params, cookies=cookies,headers=headers)
pa = urllib.parse.urlencode(params)
ab = ctx.call('encryptAbogus', headers['user-agent'], pa)
params['a_bogus'] = ab
return {
"msg": "认证成功",
# "user_data": auth,
"data": response.json()
}
def pack_detail(cookies):
json_data = {
"scene_info": {
"request_page": 2
},
"biz_id": "3717234303709610080",
"biz_id_type": 2,
"enter_from": "pc.selection_square.recommend_main",
"data_module": "pc-non-core",
"extra": {
"use_kol_product": "1"
}
}
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
'content-type': 'application/json',
'origin': 'https://buyin.jinritemai.com',
'priority': 'u=1, i',
'referer': 'https://buyin.jinritemai.com/dashboard/merch-picking-library/merch-promoting?commodity_id=3728500413717215016&commodity_location=3&id=3728500413717215016&activity_id=&pick_first_source=%E7%99%BE%E5%BA%94&pick_second_source=%E9%80%89%E5%93%81%E5%B9%BF%E5%9C%BA&pick_third_source=category_recommend&pick_source_id=&product_id=3728498815368560693&shop_id=193158700&search_id=2240ef2d8a855155c5a83bb0482ffccf197cd99dd99017347d914442b8d79bf1ccddd1f0f915ee2c660a28217e6bd5dd66590b94a7ba696647dc643b6fba1d47bf7e7d0612c3783b823e660d70df3343&log_pb=20250408191218566CCF37AF1B90242B12&session_id=2240ef2d8a855155c5a83bb0482ffccf197cd99dd99017347d914442b8d79bf1ccddd1f0f915ee2c660a28217e6bd5dd66590b94a7ba696647dc643b6fba1d47bf7e7d0612c3783b823e660d70df3343&recommend_reason_type=&recommend_reason_text=&is_outside_log=1&only_query_params=1&universal_append=1&pre_universal_unit_params=%257B%2522product_id%2522%253A%25223728498815368560693%2522%252C%2522commodity_id%2522%253A%25223728500413717215016%2522%252C%2522commodity_location%2522%253A3%252C%2522search_id%2522%253A%25222240ef2d8a855155c5a83bb0482ffccf197cd99dd99017347d914442b8d79bf1ccddd1f0f915ee2c660a28217e6bd5dd66590b94a7ba696647dc643b6fba1d47bf7e7d0612c3783b823e660d70df3343%2522%252C%2522log_pb%2522%253A%252220250408191218566CCF37AF1B90242B12%2522%257D&decision_enter_from=pc.selection_square.recommend_main&btm_ppre=a10091.b089178.c809509.d0&btm_pre=a10091.b24215.c644093.d595042_i2&btm_show_id=f578c8cf-e338-4822-b77f-045d94285562&pre_universal_page_params_id=583b872b-f9dd-412e-9587-4694833a881e&universal_page_params_id=3f180795-28e0-4fff-b6fb-b20bfd586d84',
'sec-ch-ua': '"Not A(Brand";v="8", "Chromium";v="132", "Google Chrome";v="132"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36',
'x-secsdk-csrf-token': '0001000000012482d40eaccfa7a5784bb075513bb1699468b8c87670bc4d5c07922d2be496c218345b0b21308ee7'
}
params = {
'verifyFp': 'verify_m7szifjz_EqImAMTD_IDRv_4sWD_9bo7_sXGFbOtgRlYn',
'fp': 'verify_m7szifjz_EqImAMTD_IDRv_4sWD_9bo7_sXGFbOtgRlYn',
'msToken': 'I7uZRuIOIeku3Jsem5HNw5evwejIpkl9ETCeGQwB1Z-uhEuQR_xTwWc7j-xvUHeqTH7pupZ_5b6f78C_WVa5c2d0e4EQ4X-t8Nk8becYknydU08zj-_sAebX64TPtqqv6NJN7rhiP6F7hMu7uW3K_KIzgUlRzYxv4ikgoMS1M3riQZPlNjlycJA=',
}
data=common_encrypt1(json_data=json_data,params=params,ua=headers['user-agent'])
response = requests.post(
'https://buyin.jinritemai.com/pc/selection/decision/pack_detail',
params=params,
cookies=cookies,
headers=headers,
data=data,
)
return response.json()
def get_material_list(cookies):
# json_data = {
# "scene_info": {
# "request_page": 2
# },
# "biz_id": "3717234303709610080",
# "biz_id_type": 2,
# "enter_from": "pc.selection_square.recommend_main",
# "data_module": "pc-non-core",
# "extra": {
# "use_kol_product": "1"
# }
# }
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
'content-type': 'application/json',
'origin': 'https://buyin.jinritemai.com',
'pragma': 'no-cache',
'priority': 'u=1, i',
'referer': 'https://buyin.jinritemai.com/dashboard/merch-picking-library?btm_ppre=a0.b0.c0.d0&btm_pre=a10091.b089178.c809509.d0&btm_show_id=11f0284e-a2dd-403d-baab-29a262eb52e1&pre_universal_page_params_id=&universal_page_params_id=2809881b-6321-4d1c-8605-8709c77848e6',
'sec-ch-ua': '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
'x-secsdk-csrf-token': '00010000000194bc30606cc99d766875509daaa72ac141261bac200065eaf3fe8dab9ac361a4182679de3f0cf9d1',
}
params = {
'verifyFp': 'verify_m9dzx9j1_utaEOIfT_m3VQ_4JoY_Bov0_E6EtRx86WJVG',#这两个可以随便乱写
'fp': 'verify_m9dzx9j1_utaEOIfT_m3VQ_4JoY_Bov0_E6EtRx86WJVG',
'msToken': 'I7uZRuIOIeku3Jsem5HNw5evwejIpkl9ETCeGQwB1Z-uhEuQR_xTwWc7j-xvUHeqTH7pupZ_5b6f78C_WVa5c2d0e4EQ4X-t8Nk8becYknydU08zj-_sAebX64TPtqqv6NJN7rhiP6F7hMu7uW3K_KIzgUlRzYxv4ikgoMS1M3riQZPlNjlycJA=',
}
data = {
'scene': 'PCSquareFeed',
'size': 30,
'search_text': '',
'cursor': 0,
'extra': {
'new_session_strategy': '1',
'search_id': '',
'session_id': '',
'use_kol_product': '0',
},
'filters': {},
}
data = common_encrypt1(json_data=data, params=params, ua=headers['user-agent'])
response = requests.post(
'https://buyin.jinritemai.com/pc/selection/common/material_list',
params=params,
cookies=cookies,
headers=headers,
data=data,
verify=False
)
return response.json()
@app.post("/get_products")
async def get_products(data: Dict,auth=Depends(check_jwt)):#todo 橱窗商品查询接口
cookies=data
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
'cache-control': 'no-cache',
'pragma': 'no-cache',
'priority': 'u=1, i',
'referer': 'https://buyin.jinritemai.com/dashboard/shopwindow/goods-list?pre_universal_page_params_id=&universal_page_params_id=50b10430-f2bf-4c4d-9d12-f07ade860f5c',
'sec-ch-ua': '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
}
params = {
'product_type': '0',
'page': '1',
'page_size': '20',
'filter': 'false',
'verifyFp': 'verify_m9fc66zp_hfTxtn1L_FDNH_4kRV_8fsT_u6RPpdK6oQxH',
'fp': 'verify_m9fc66zp_hfTxtn1L_FDNH_4kRV_8fsT_u6RPpdK6oQxH',
'msToken': 'O4i0W-LNj0RKjbWRfh8OBs8sMjJ8xZoDJxmo9Nb-0x9RLllln5uMzsuL8gjfVH2MGukd1T8PdTEB8HSq8xIc6qTJW_dgUPLbg827a5IIKGWRiDKtO5yoZNKV0KXlSWncKA3N6TIdiAdx8_fZaFJTNipYmcd-Me9NrXZjp_3IeUVa',
}
data = common_encrypt1(json_data='', params=params, ua=headers['user-agent'])
response = requests.get('https://buyin.jinritemai.com/api/author/shop/products', params=params, cookies=cookies,
headers=headers)
return {
"msg": "认证成功",
# "user_data": auth,
"data": response.json()
}
@app.post("/identify_products")
def identify_products(data: Dict,urls:str,auth=Depends(check_jwt)):#识别商品
cookies=data
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
'cache-control': 'no-cache',
'pragma': 'no-cache',
'priority': 'u=1, i',
'referer': 'https://buyin.jinritemai.com/dashboard/shopwindow/goods-list?pre_universal_page_params_id=&universal_page_params_id=bf3635b2-a64a-42c3-9f7f-6eb9096cc96f',
'sec-ch-ua': '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',
}
params = {
# 'urls': 'https://haohuo.jinritemai.com/ecommerce/trade/detail/index.html?id=3702192299720179773&origin_type=2631,https://haohuo.jinritemai.com/views/product/item2?id=3741702496180109752',
'urls': f'{urls}',
'scene': '3',
'verifyFp': 'verify_m9fc66zp_hfTxtn1L_FDNH_4kRV_8fsT_u6RPpdK6oQxH',
'fp': 'verify_m9fc66zp_hfTxtn1L_FDNH_4kRV_8fsT_u6RPpdK6oQxH',
'msToken': 'O4i0W-LNj0RKjbWRfh8OBs8sMjJ8xZoDJxmo9Nb-0x9RLllln5uMzsuL8gjfVH2MGukd1T8PdTEB8HSq8xIc6qTJW_dgUPLbg827a5IIKGWRiDKtO5yoZNKV0KXlSWncKA3N6TIdiAdx8_fZaFJTNipYmcd-Me9NrXZjp_3IeUVa',
}
common_encrypt2(ua=headers['user-agent'],params=params)
response = requests.get(
'https://buyin.jinritemai.com/pc/selection_tool/batch_link',
params=params,
cookies=cookies,
headers=headers,
)
return {
"msg": "认证成功",
"data": response.json()
}
@app.post("/add_products")
def add_products(data:Dict,link_url:str,promotion_ids:str,auth=Depends(check_jwt)):#todo 添加商品
cookies=data
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'cache-control': 'no-cache',
'content-type': 'application/json',
'origin': 'https://buyin.jinritemai.com',
'pragma': 'no-cache',
'priority': 'u=1, i',
'referer': 'https://buyin.jinritemai.com/dashboard/shopwindow/goods-list?universal_page_params_id=4695b182-8959-4fb8-b029-c4fd66004fcf',
'sec-ch-ua': '"Microsoft Edge";v="135", "Not-A.Brand";v="8", "Chromium";v="135"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0',
'x-secsdk-csrf-token': '000100000001c09f45d66c9f65f6d44d52a5e8f643275f46f7e4f97ef1e5507165c9c2d20aab1834e2fed2495e14',
}
params = {
'verifyFp': 'verify_m9ayab85_7PGRhlEt_WsSw_4Zxz_AMSa_CGNDBbiWKxfm',
'fp': 'verify_m9ayab85_7PGRhlEt_WsSw_4Zxz_AMSa_CGNDBbiWKxfm',
'msToken': 'RmS7vcjWRyT-H1E2l7_Gts5Q4nGHCBsdSwuWjThr8pTeeSDbcBI6SpaVhQX9ml_z3OMIFp1EX1NVFHGsPTggO7dWBL1IoIbkNn2jLRcgqpyR3rHG5-v8vdB-x93lsNgr_TQn0SPzatZk3c1DDqL5x74X8SH-CsBJaLExWecM7yYVD1cA1x-ccg==',
}
pre_data_list = []
for id,url in promotion_ids.split(","),link_url.split(","):
pre_data_list.append({
'promotion_id': f'{id}',
'bind_source': '0',
'link_url': f'{url}',
})
common_encrypt2(ua=headers['user-agent'],params=params)
json_data = {
'pmts': pre_data_list,
'hide_status': 2,
}
# json_data = {
# 'pmts': [
# {
# 'promotion_id': '3702193318256605699',
# 'bind_source': '0',
# 'link_url': 'https://haohuo.jinritemai.com/ecommerce/trade/detail/index.html?id=3702192299720179773&origin_type=2631',
# },
# {
# 'promotion_id': '3743576749200507019',
# 'bind_source': '0',
# 'link_url': 'https://haohuo.jinritemai.com/views/product/item2?id=3741702496180109752',
# },
# ],
# 'hide_status': 2,
# }
response = requests.post(
'https://buyin.jinritemai.com/api/shop/bind/',
params=params,
cookies=cookies,
headers=headers,
json=json_data,
)
return {
"msg": "认证成功",
"data": response.json()
}
@app.post("/del_unbind")
def del_unbind(data:Dict,promotion_id:str):
cookies=data
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'cache-control': 'no-cache',
'content-type': 'application/json',
'origin': 'https://buyin.jinritemai.com',
'pragma': 'no-cache',
'priority': 'u=1, i',
'referer': 'https://buyin.jinritemai.com/dashboard/shopwindow/goods-list?universal_page_params_id=4695b182-8959-4fb8-b029-c4fd66004fcf',
'sec-ch-ua': '"Microsoft Edge";v="135", "Not-A.Brand";v="8", "Chromium";v="135"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0',
'x-secsdk-csrf-token': '000100000001c09f45d66c9f65f6d44d52a5e8f643275f46f7e4f97ef1e5507165c9c2d20aab1834e2fed2495e14',
}
params = {
'verifyFp': 'verify_m9ayab85_7PGRhlEt_WsSw_4Zxz_AMSa_CGNDBbiWKxfm',
'fp': 'verify_m9ayab85_7PGRhlEt_WsSw_4Zxz_AMSa_CGNDBbiWKxfm',
'msToken': 'RmS7vcjWRyT-H1E2l7_Gts5Q4nGHCBsdSwuWjThr8pTeeSDbcBI6SpaVhQX9ml_z3OMIFp1EX1NVFHGsPTggO7dWBL1IoIbkNn2jLRcgqpyR3rHG5-v8vdB-x93lsNgr_TQn0SPzatZk3c1DDqL5x74X8SH-CsBJaLExWecM7yYVD1cA1x-ccg==',
}
common_encrypt2(headers['user-agent'],params=params)
json_data = {
'promotion_id': f'{promotion_id}',
}
response = requests.post(
'https://buyin.jinritemai.com/api/anchor/shop/unbind',
params=params,
cookies=cookies,
headers=headers,
json=json_data,
)
return {
"msg": "认证成功",
"data": response.json()
}
if __name__ == "__main__":
uvicorn.run(app,host="0.0.0.0",port=8000)
# get_material_list()
# pack_detail()
# get_products()
# identify_products()
# add_products()