import json
import requests
import time
from decimal import Decimal
from bs4 import BeautifulSoup
from datetime import datetime
def get_cookies(username,password,index=0):
origin=['https://www.erp321.com','https://w.erp321.com']
referer=['https://www.erp321.com','https://w.erp321.com']
headers={
'accept': 'application/json, text/javascript, */*; q=0.01',
'accept-language': 'zh-CN,zh;q=0.9',
'content-type': 'application/json',
'jst-appkey': 'web_login',
'jst-pv': '1.0.1',
'jst-screen': '1080;1920',
'jst-sdkv': '1.0.0',
'jst-static':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
'jst-timestamp': str(Decimal(int(time.time() * 1000))),
'origin': origin[index],
'priority': 'u=1, i',
'referer': referer[index],
'sec-ch-ua': '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
}
cookie=requests.post('https://api.erp321.com/erp/webapi/UserApi/WebLogin/Passport',headers=headers
,json={
'data': {
'account': username,
'password': password,
},
'ipAddress': '',
}).json()['cookie']
cookie['u_exp']=str(cookie['u_exp'])
if cookie.get('_gi'):
cookie['_gi']=str(cookie['_gi'])
return cookie
def get_viewstate(cookies,index=0):
url=['https://www.erp321.com/app/order/order/list.aspx?_c=jst-epaas','https://w.erp321.com/app/order/order/list.aspx?_c=jst-epaas']
referer=['https://www.erp321.com/?m=n&_c=jst-epaas&epaas=true','https://w.erp321.com/?m=n&_c=jst-epaas&epaas=true']
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'accept-language': 'zh-CN,zh;q=0.9',
'priority': 'u=0, i',
'referer': referer[index],
'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'iframe',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'same-origin',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
}
response=requests.post(url[index],cookies=cookies,headers=headers).text
bs=BeautifulSoup(response,'html.parser')
viewstate=bs.find(attrs={'id':'__VIEWSTATE'}).attrs['value']
return viewstate
def get_o_id(cookies,viewstate,start_time,end_time,index=0):
url=['https://www.erp321.com/app/order/order/list.aspx','https://w.erp321.com/app/order/order/list.aspx']
referer=['https://www.erp321.com/app/order/order/list.aspx?_c=jst-epaas','https://w.erp321.com/app/order/order/list.aspx?_c=jst-epaas']
params = {
'_c': 'jst-epaas',
'ts___': str(Decimal(int(time.time() * 1000))),
'am___': 'LoadDataToJSON',
}
CALLBACKPARAM='{"Method":"LoadDataToJSON","Args":["1","[{\\"k\\":\\"item_name\\",\\"v\\":\\"补收差价专用商品\\",\\"c\\":\\"like\\"},{\\"k\\":\\"order_date\\",\\"v\\":\\"%s\\",\\"c\\":\\">=\\",\\"t\\":\\"date\\"},{\\"k\\":\\"order_date\\",\\"v\\":\\"%s 23:59:59.998\\",\\"c\\":\\"<=\\",\\"t\\":\\"date\\"}]","{}"]}'%(start_time,end_time)
data = {
'__VIEWSTATE': viewstate,
'__VIEWSTATEGENERATOR': 'C8154B07',
'insurePrice': '',
'_jt_page_count_enabled': '',
'_jt_page_increament_enabled': 'true',
'_jt_page_increament_page_mode': '',
'_jt_page_increament_key_value': '',
'_jt_page_increament_business_values': '',
'_jt_page_increament_key_name': 'o_id',
'_jt_page_size': '50',
'_jt_page_action': '1',
'fe_node_desc': '',
'receiver_state': '',
'receiver_city': '',
'receiver_district': '',
'receiver_address': '',
'receiver_name': '',
'receiver_phone': '',
'receiver_mobile': '',
'check_name': '',
'check_address': '',
'fe_remark_type': 'single',
'node_type': '',
'fe_flag': '',
'fe_is_append_remark': '',
'feedback': '',
'__CALLBACKID': 'JTable1',
'__CALLBACKPARAM': CALLBACKPARAM
}
headers = {
'accept': '*/*',
'accept-language': 'zh-CN,zh;q=0.9',
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
'origin': 'https://www.erp321.com',
'priority': 'u=1, i',
'referer': referer[index],
'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
'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/131.0.0.0 Safari/537.36",
'x-requested-with': 'XMLHttpRequest',
}
response = requests.post(
url=url[index],
params=params,
cookies=cookies,
headers=headers,
data=data,
)
data=json.loads(response.text.replace('0|',''))
o_id_list=[]
if not json.loads(data['ReturnValue'])['datas']:
print('无订单')
return False
for i in json.loads(data['ReturnValue'])['datas']:
o_id=i['o_id']
o_id_list.append(o_id)
return o_id_list
def set_marking(cookies,viewstate,o_id_list,index=0):
referer=['https://www.erp321.com/app/order/order/list.aspx?_c=jst-epaas','https://w.erp321.com/app/order/order/list.aspx?_c=jst-epaas']
origin=['https://www.erp321.com','https://w.erp321.com']
url=['https://www.erp321.com/app/order/order/list.aspx','https://w.erp321.com/app/order/order/list.aspx']
if not o_id_list:
return False
print(o_id_list)
if len(o_id_list)==1:
o_id=o_id_list[0]
else:
o_id=','.join([str(i) for i in o_id_list])
params = {
'_c': 'jst-epaas',
'ts___': str(Decimal(int(time.time() * 1000))),
'am___': 'SetLabels',
}
data = {
'__VIEWSTATE': viewstate,
'__VIEWSTATEGENERATOR': 'C8154B07',
'insurePrice': '',
'_jt_page_count_enabled': '',
'_jt_page_increament_enabled': 'true',
'_jt_page_increament_page_mode': '',
'_jt_page_increament_key_value': '',
'_jt_page_increament_business_values': '',
'_jt_page_increament_key_name': 'o_id',
'_jt_page_size': '50',
'fe_node_desc': '',
'receiver_state': '',
'receiver_city': '',
'receiver_district': '',
'receiver_address': '',
'receiver_name': '',
'receiver_phone': '',
'receiver_mobile': '',
'check_name': '',
'check_address': '',
'fe_remark_type': 'single',
'node_type': '',
'fe_flag': '',
'fe_is_append_remark': '',
'feedback': '',
'__CALLBACKID': 'JTable1',
'__CALLBACKPARAM': '{"Method":"SetLabels","Args":["{\\"filter_type\\":\\"checked\\",\\"set_type\\":\\"add\\",\\"labels\\":\\"小额打款\\",\\"o_ids\\":\\"%s\\"}"],"CallControl":"{page}"}'%o_id,
}
headers = {
'accept': '*/*',
'accept-language': 'zh-CN,zh;q=0.9',
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
'origin': origin[index],
'priority': 'u=1, i',
'referer': referer[index],
'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
'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/131.0.0.0 Safari/537.36",
'x-requested-with': 'XMLHttpRequest',
}
response = requests.post(
url=url[index],
params=params,
cookies=cookies,
headers=headers,
data=data,
)
print(response.text)
# 账号列表
usernames=[]
#密码列表
password=[]
now_time=datetime.now().strftime('%Y-%m-%d')
# now_time='2024-12-28'
print(now_time)
for i, username in enumerate(usernames):
try:
print('www版本')
print(username)
cookies=get_cookies(username,password[i])
viewstate=get_viewstate(cookies)
print(viewstate)
oid_list=get_o_id(cookies,viewstate,now_time,now_time)
set_marking(cookies,viewstate,oid_list)
except Exception as e:
print('w版本')
print(username)
cookies=get_cookies(username,password[i],index=1)
print(cookies)
viewstate=get_viewstate(cookies,index=1)
print(viewstate)
oid_list=get_o_id(cookies,viewstate,now_time,now_time,index=1)
set_marking(cookies,viewstate,oid_list,index=1)有需要的自取,在聚水潭进行小额打款打标