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

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")

431
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 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
from cryptography.fernet import Fernet
import urllib.parse
import requests
from auth import verify_token,create_access_token
# === 创建 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
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,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',
}
def verify_token(token: str):
try:
payload = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
if payload["role"] != "admin":
return None
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()
return payload
except ExpiredSignatureError:
raise HTTPException(status_code=401, detail="Token已过期")
except JWTError:
raise HTTPException(status_code=401, detail="无效的Token")
@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()