修改删除商品接口,增加测试方法

main
Ken Stevan 2025-04-15 20:34:53 +08:00
parent 3436a1e38f
commit 7f1a5b5e67
5 changed files with 534 additions and 450 deletions

29
auth.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")

437
main.py
View File

@ -1,29 +1,416 @@
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 jose import JWTError, jwt
from fastapi import HTTPException
from datetime import datetime, timedelta from datetime import datetime, timedelta
from jose import ExpiredSignatureError from cryptography.fernet import Fernet
SECRET_KEY = "Bv8Z1&xG$Aq7!s9PfL@t#QwE2rY%Nk*mCjH^Rb6DuXpZ+3VoBO" import urllib.parse
ALGORITHM = "HS256" import requests
ACCESS_TOKEN_EXPIRE_MINUTES = 30 from auth import verify_token,create_access_token
# === 创建 Token === class LoginRequest(BaseModel):
def create_access_token(data: dict, expires_delta: timedelta = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)): user_id: str
to_encode = data.copy() role: str
expire = datetime.utcnow() + expires_delta fp: int
to_encode.update({"exp": expire}) @app.post("/login")
encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM) async def login(data : LoginRequest):
return encoded_jwt token = create_access_token(dict(data))
return {"access_token": token, "token_type": "bearer"}
async def check_jwt(authorization: str = Header(...)):
def verify_token(token: str): if not authorization.startswith("Bearer "):
try: raise HTTPException(status_code=401, detail="Token格式错误")
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM]) token = authorization.replace("Bearer ", "")
if payload["role"] != "admin": user_data = verify_token(token)
return None if user_data is None:
return payload
except ExpiredSignatureError:
raise HTTPException(status_code=401, detail="Token已过期")
except JWTError:
raise HTTPException(status_code=401, detail="无效的Token") 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,author_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': f'{author_id}',
'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,
}
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_ids: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)
promotion_ids_list=[]
for i in promotion_ids.split(","):promotion_ids_list.append(i)
json_data = {
'promotion_ids': promotion_ids_list,
}
print(json_data)
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=8080)
# get_material_list()
# pack_detail()
# get_products()
# identify_products()
# add_products()

7
requirements.txt Normal file
View File

@ -0,0 +1,7 @@
cryptography==44.0.2
fastapi==0.115.12
pydantic==2.11.3
PyExecJS==1.5.1
python_jose==3.4.0
Requests==2.32.3
uvicorn==0.34.1

89
test77.py Normal file
View File

@ -0,0 +1,89 @@
import requests
import uuid
import time
# from auth import create_access_token
data={
"user_id": str(uuid.UUID),
"role": "admin",
"fp":int(time.time()),
}
jwt=requests.post("http://localhost:8080/login",json=data).json()['access_token']
#TODO 这里是巨量百应的ck
data2 = {
'BUYIN_SASID': 'SID2_7492981858080112935',
'SASID':'SID2_7492981858080112935'
}
#TODO 这里是抖音的ck
data1 = {
'ttwid': '1%7CUVB51cDI7GY0yyiCBtrU5IoTdHixuxTrNykHrPzbRCk%7C1744392589%7Cb0ed96d039d373f75e9f86983304ad70532dd23a4df1af69f1b0828103c1b6e5',
'n_mh': 'geOcP6qU-laruJUx6JHMEUZkPwLFtVmTFaO3fJ46gMI',
'sid_guard': '9e24a6486603b34cc5c60a16712a9fb3%7C1744596869%7C5184000%7CFri%2C+13-Jun-2025+02%3A14%3A29+GMT',
'uid_tt': 'adb3fcdab0d4ed5626f9a3c5c4a5bf47',
'uid_tt_ss': 'adb3fcdab0d4ed5626f9a3c5c4a5bf47',
'sid_tt': '9e24a6486603b34cc5c60a16712a9fb3',
'sessionid': '9e24a6486603b34cc5c60a16712a9fb3',
'sessionid_ss': '9e24a6486603b34cc5c60a16712a9fb3',
'is_staff_user': 'false',
'sid_ucp_v1': '1.0.0-KDk3OTIzZTIxZDJmZDMxYWIyOTVlODU5NmQyMDhhOTQ2OGQ2MTYzMDcKIQjNiNDHsIz1BxCF3_G_BhjvMSAMMMafwpEGOAdA9AdIBBoCbHEiIDllMjRhNjQ4NjYwM2IzNGNjNWM2MGExNjcxMmE5ZmIz',
'ssid_ucp_v1': '1.0.0-KDk3OTIzZTIxZDJmZDMxYWIyOTVlODU5NmQyMDhhOTQ2OGQ2MTYzMDcKIQjNiNDHsIz1BxCF3_G_BhjvMSAMMMafwpEGOAdA9AdIBBoCbHEiIDllMjRhNjQ4NjYwM2IzNGNjNWM2MGExNjcxMmE5ZmIz',
'login_time': '1744596869897',
'IsDouyinActive': 'true',
'publish_badge_show_info': '%220%2C0%2C0%2C1744596872958%22',
'xg_device_score': '7.523030082041696',
'SelfTabRedDotControl': '%5B%5D',
'_bd_ticket_crypt_cookie': '15005b8d8b6ad1f68d33b050cfdf481e',
'__security_mc_1_s_sdk_sign_data_key_web_protect': '82669e23-4437-b1c5',
'__security_mc_1_s_sdk_cert_key': 'f4c89aed-4e94-bacb',
'__security_server_data_status': '1',
'bd_ticket_guard_client_data': 'eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCUE8wVmY0bGZmSGlldGhPblN1MFNVM1pHR3Vwbk9CUlE2UElUTlY0WGphWko2V2EvMmkrMVhVN0hUQWM2VFpsSXRkTnA4Q1JqRHZzdXh5SEpRZGlES2c9IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoyfQ%3D%3D',
'passport_fe_beating_status': 'true',
'odin_tt': '7281e3ee93766f632e95b0ad354335ee955ebc379555617fbc680eb18d393f054d84e37c9cec7f01214eddd9a5749c55596ae87f5995403c92e7a268f5fafed7',
'live_can_add_dy_2_desktop': '%221%22',
'volume_info': '%7B%22isMute%22%3Afalse%2C%22isUserMute%22%3Afalse%2C%22volume%22%3A0.6%7D',
'download_guide': '%223%2F20250414%2F0%22',
}
headers = {
"Authorization": f"Bearer {jwt}"
}
import unittest
class MyTestCase(unittest.TestCase):
'''
测试识别
'''
def test_identify_products(self):
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"
}
result=requests.post("http://localhost:8080/identify_products",json=data2,params=params,headers=headers)
print(f"result.json()---->{result.json()}")
'''
测试增加商品
'''
def test_add_products(self):
params = {#请注意这里url要与id对应顺序对应
"link_url":"https://haohuo.jinritemai.com/ecommerce/trade/detail/index.html?id=3702192299720179773&origin_type=2631,https://haohuo.jinritemai.com/views/product/item2?id=3741702496180109752",
"promotion_ids":"3702192299720179773,3741702496180109752"
}
result=requests.post("http://localhost:8080/add_products",json=data2,params=params,headers=headers)
print(f"result.json()---->{result.json()}")
'''
测试删除
'''
def test_del_unbind(self):
params = {
"promotion_ids": "3723494051140468845,3568029813883172377"
}
result=requests.post("http://localhost:8080/del_unbind",json=data2,params=params,headers=headers)
print(f"result.json()---->{result.json()}")
'''
测试小黄车
'''
def test_get_yellow_car(self):
params={"room_id":"7493339316282723123",
"author_id":"1626907841411991"
}
result = requests.post("http://localhost:8080/get_yellow_car_products", json=data1, params=params, headers=headers)
print(f"result.json()---->{result.json()}")

428
web.py
View File

@ -1,428 +0,0 @@
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()