This commit is contained in:
maxinxin 2025-06-23 17:41:40 +08:00
parent 0010be1b6b
commit 905bca662e
26 changed files with 4977 additions and 199 deletions

View File

@ -4,7 +4,7 @@
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="jdk" jdkName="Python 3.6 (auto_trade_20230130)" jdkType="Python SDK" />
<orderEntry type="jdk" jdkName="Python 3.6 (zhitou_trade)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PyDocumentationSettings">

2
.idea/misc.xml generated
View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6 (auto_trade_20230130)" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6 (zhitou_trade)" project-jdk-type="Python SDK" />
</project>

Binary file not shown.

Binary file not shown.

View File

@ -150,7 +150,7 @@ class DongWuClientTrader:
#设置全局代理
proxy_ip = item['ip']
proxy_port = str(item['port'])
proxy_port = item['port']
set_proxy(proxy_ip,proxy_port)
# exit_ip = get_proxy_ip(proxy_ip,proxy_port)

View File

@ -16,7 +16,9 @@ import pytesseract
import warnings
import datetime
import os
import logging
from tools import *
from config import ssid,password
warnings.filterwarnings('ignore')
from pathlib import Path
@ -35,10 +37,13 @@ class HLClientTrader:
def __init__(self, account_name, exe_path=path):
self.path = exe_path
self.account_name = account_name
self.log = Logger(f'{root_path}/logs',self.account_name)
# 加载WiFi配置文件
self.wifi_configs = self._load_wifi_config()
# 确保logs目录存在
logs_dir = root_path / 'logs'
logs_dir.mkdir(exist_ok=True)
# 初始化日志系统
self._setup_logging()
# 用户券商信息
sql = f"select * from ainvest_usercount where username='{account_name}'"
@ -47,27 +52,39 @@ class HLClientTrader:
self.securities_password = str(df_count['securities_password'].tolist()[0])
self.communication_password = str(df_count['communication_password'].tolist()[0])
def _load_wifi_config(self):
"""加载WiFi配置文件"""
config_path = os.path.join(root_path, 'wifi_config.txt')
try:
with open(config_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
wifi_configs = []
for line in lines:
line = line.strip()
if line and not line.startswith('#'):
parts = line.split(',')
if len(parts) == 2:
wifi_configs.append({'ssid': parts[0].strip(), 'password': parts[1].strip()})
self.log.info(f"WiFi配置加载成功{len(wifi_configs)}个配置")
return wifi_configs
except FileNotFoundError:
self.log.warn(f"WiFi配置文件 {config_path} 不存在,使用默认配置")
return [{'ssid': 'ZTE_A5DA76', 'password': '1234567890'}]
except Exception as e:
self.log.error(f"WiFi配置文件读取错误: {e}")
return [{'ssid': 'ZTE_A5DA76', 'password': '1234567890'}]
def _setup_logging(self):
"""设置日志系统"""
# 获取当前模块的logger
self.logger = logging.getLogger(__name__)
# 为当前账户添加文件处理器记录到logs目录
logs_file = os.path.join(root_path, 'logs', f'{self.account_name}.log')
# 检查是否已经有针对这个账户的处理器,避免重复添加
account_handler_exists = False
for handler in self.logger.handlers:
if hasattr(handler, 'baseFilename') and handler.baseFilename == os.path.abspath(logs_file):
account_handler_exists = True
break
if not account_handler_exists:
formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
file_handler = logging.FileHandler(logs_file, encoding='utf-8')
file_handler.setFormatter(formatter)
file_handler.setLevel(logging.DEBUG)
self.logger.addHandler(file_handler)
# 如果根logger没有处理器单独运行时添加控制台处理器
root_logger = logging.getLogger()
if not root_logger.handlers:
console_handler = logging.StreamHandler()
console_handler.setFormatter(logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S'))
console_handler.setLevel(logging.INFO)
self.logger.addHandler(console_handler)
# 设置logger级别
self.logger.setLevel(logging.DEBUG)
def exit(self):
'''
@ -104,62 +121,44 @@ class HLClientTrader:
path=self.path, timeout=1
)
self.exit()
self.log.warn('There are running programs, and there are processes in retreat')
self.logger.warning('There are running programs, and there are processes in retreat')
except Exception:
pass
# 启动软件进程,输入账号密码
self.log.info('Start login')
self.logger.info('Start login')
start_time = time.time()
reset_proxy_to_default() # 初始化proxy信息
# 重置mac
set_mac = SetMac()
set_mac.run()
# 尝试连接WiFi
connected = False
for i, wifi_config in enumerate(self.wifi_configs):
wifi_ssid = wifi_config['ssid']
wifi_password = wifi_config['password']
if i == 0:
self.log.info(f"尝试连接主WiFi: {wifi_ssid}")
else:
self.log.info(f"尝试连接备用WiFi: {wifi_ssid}")
if connect_wifi(wifi_ssid, wifi_password):
self.log.info(f"网络已就绪WiFi: {wifi_ssid}")
connected = True
break
if not connected:
self.log.error("无法建立网络连接,请检查配置")
connect_wifi(ssid,password)
get_ip_times = 0
writer = ExcelDataWriter() # 初始化ip_records 表格
used_ip = writer.get_unavailable_ips(broker, account_name)
while get_ip_times < 3:
while get_ip_times < 10:
try:
item = get_ip_data() # 获取动态IP
if item['ip'] in used_ip:
get_ip_times += 1
self.logger.warning(f'代理IP重复重新获取IP')
else:
self.log.info(f'代理IP已经获取{item}')
self.logger.info(f'代理IP已经获取{item}')
break
except Exception as e:
self.log.error(f'获取IP失败请检查网络连接{e}')
self.logger.error(f'获取IP失败请检查网络连接{e}')
time.sleep(5)
# raise ConnectionError(f"获取IP失败请检查网络连接。错误详情: {e}")
# 设置全局代理
proxy_ip = item['ip']
proxy_port = item['port']
set_global_proxy(proxy_ip, proxy_port, enable=True)
set_proxy(proxy_ip, proxy_port)
# exit_ip = get_proxy_ip(proxy_ip,proxy_port)
time_with_change_proxy = time.time() - start_time
self.log.info('全局代理设置成功')
self.logger.info('全局代理设置成功')
insert_data = {'as_of_date': datetime.datetime.fromtimestamp(start_time).strftime('%Y-%m-%d %H:%M:%S.%f'),
'broker': broker,
@ -171,17 +170,16 @@ class HLClientTrader:
'ip_cross_check_result': '一致',
'ip_switch_time': time_with_change_proxy,
# 'ip_expire_time':item['expire']
'ip_survival_time': '3min'
'ip_survival_time': '5min'
}
# 写入数据表
writer = ExcelDataWriter() # 初始化ip_records 表格
writer.write_data(insert_data)
time.sleep(2)
#启动软件进程,输入账号密码
self.log.info('Start login')
self._app = pywinauto.Application().start(self.path)
time.sleep(1)
while True:
try:
self._app.window(title_re='华龙证券网上交易.*').wait("ready")
@ -220,10 +218,10 @@ class HLClientTrader:
result_idcode = self.result_text()
time.sleep(1)
print('(((((((((',result_idcode)
self.log.softInfo(result_idcode)
self.logger.info(result_idcode)
if '验证码' in result_idcode:
# print('111')
self.log.warn('Verification code error')
self.logger.warning('Verification code error')
self._app.window(title_re='华龙证券网上交易.*').window(control_id=0x458, class_name='Edit').click()
time.sleep(0.5)
else:
@ -354,7 +352,7 @@ class HLClientTrader:
one_text = self._app.window(control_id=0x0, class_name='#32770',found_index = 0).window(control_id=0x3EC, class_name='Static',found_index = 0).window_text()
# print(one_text)
# 摘取合同信息
self.log.info(one_text.replace('/n', ' '))
self.logger.info(one_text.replace('/n', ' '))
time.sleep(0.2)
#确认申购委托
# self._app.window(control_id=0x0, class_name="#32770", found_index=0).window(control_id=0x2,class_name='Button').click()
@ -395,7 +393,7 @@ class HLClientTrader:
#获取弹窗信息
result = self._app.top_window().window(control_id=0x3EC, class_name='Static').window_text()
self.log.info(result)
self.logger.info(result)
pywinauto.keyboard.send_keys("{ENTER}")
time.sleep(0.2)
pywinauto.keyboard.send_keys("{ESC}")
@ -437,7 +435,8 @@ class HLClientTrader:
self._copy_data()
one_df =self._data_to_df()
if len(one_df) == 0:
pass
self.logger.info('--------------------------------------无未成交委托--------------------------------------')
return pd.DataFrame()
else:
one_df['证券代码'] = one_df['证券代码'].apply(lambda x: tranTicker(x.strip('=').strip('"')))
return one_df
@ -521,6 +520,11 @@ class HLClientTrader:
lambda x: x.replace('"', '').replace('=', '') if isinstance(x, str) else x)
position.columns = [i.replace('"', '').replace('=', '') for i in list(position.columns)]
# 检查是否有持仓数据
if len(position) == 0 or position.empty:
self.logger.info('--------------------------------------无当日持仓--------------------------------------')
return pd.DataFrame()
position.rename(columns={'证券代码': "Ticker",
'证券名称': "Ticker_name",
"库存数量": "Number_transactions",
@ -554,7 +558,12 @@ class HLClientTrader:
self.left_wnd.select(['查询[F4]','当日委托'])
self._copy_data()
return self._data_to_df()
df = self._data_to_df()
if len(df) == 0:
self.logger.info('--------------------------------------无当日委托--------------------------------------')
return pd.DataFrame()
return df
def get_today_trades(self):
'''
@ -578,6 +587,12 @@ class HLClientTrader:
error_bad_lines=False).applymap(
lambda x: x.replace('"', '').replace('=', '') if isinstance(x, str) else x)
trades.columns = [i.replace('"', '').replace('=', '') for i in list(trades.columns)]
# 检查是否有成交数据
if len(trades) == 0 or trades.empty:
self.logger.info('--------------------------------------无当日成交--------------------------------------')
return pd.DataFrame()
trades = trades[['成交时间', '证券代码', '证券名称', '买卖标志', '成交数量', '成交价格']]
trades['Account_Name'] = self.account_name
trades['As_Of_Date'] = datetime.date.today()
@ -634,8 +649,8 @@ class HLClientTrader:
one_text = self._app.window(control_id=0x0, class_name='#32770',found_index = 0).window_text()
if '委托价格的小数部分应该为2位' in one_text:
# 点击“否”
self.log.warn(one_text.replace('/n',' '))
# 点击"否"
self.logger.warning(one_text.replace('/n',' '))
self._app.top_window().window(control_id=0x7, class_name='Button').click()
# 保留两位小数截断
price = str(price)[:-1]
@ -649,7 +664,7 @@ class HLClientTrader:
one_text = self._app.top_window().window(control_id=0x410, class_name='Static').window_text()
else:
# 摘取合同信息
self.log.info(one_text.replace('/n',' '))
self.logger.info(one_text.replace('/n',' '))
time.sleep(0.2)
# 确认买入
@ -660,12 +675,12 @@ class HLClientTrader:
# # 摘取合同信息2
# one_text2 = self._app['提示'].window(control_id=0x0, class_name='#32770').window_text()
# print(one_text2)
# self.log.info(one_text2.replace('/n', ' '))
# self.logger.info(one_text2.replace('/n', ' '))
# ImageGrab.grab(bbox=(859, 800, 1307, 836)).save(f'{root_path}/imgs/temp1231.png')
#
# image_path = f'{root_path}/imgs/temp1231.png'
# text = ocr_image(image_path)
# self.log.info(text.replace('/n', ' '))
# self.logger.info(text.replace('/n', ' '))
# 确认合同
pywinauto.keyboard.send_keys("{ENTER}")
@ -694,9 +709,9 @@ class HLClientTrader:
try:
self._app.top_window().set_focus()
result_idcode = self._app.top_window().window(control_id=0x966, class_name='Static').window_text()
self.log.softInfo(result_idcode)
self.logger.info(result_idcode)
if '验证码错误' in result_idcode:
self.log.warn('Verification code error')
self.logger.warning('Verification code error')
self._app.top_window().window(control_id=0x2, class_name="Button").click()
time.sleep(0.5)
else:

View File

@ -7,4 +7,4 @@ Gzip=0
WndName=Ths_UserBehavior_test
acct_bind=085006032667|073000003859|080000027181|073000004902|073000004916|073000003698|073000004092|073000003868|073000003921|073000004065|073000003769|073000004318|073000003702|085006040636|073000004495|073000004116|
device_bind=1
Xiadan_UB_test=125-5-19
Xiadan_UB_test=125-5-23

View File

@ -35,7 +35,7 @@
52243433=2024-4-10
52243828=2024-2-7
52244086=2024-3-12
52243961=2025-6-6
52243961=2025-6-20
52260726=2023-9-15
54354761=2023-10-10
52260860=2023-5-15

View File

@ -53,3 +53,32 @@
[2025-06-19 17:57:14:240][0x000409B2] 自动重连未开启
[2025-06-19 18:04:54:474][0x000E0946] 系统断线
[2025-06-19 18:04:54:477][0x000E0946] 自动重连未开启
[2025-06-20 16:34:45:165][0x00040E3A] 系统断线
[2025-06-20 16:34:45:167][0x00040E3A] 自动重连未开启
[2025-06-20 16:44:09:331][0x00080D58] 系统断线
[2025-06-20 16:44:09:333][0x00080D58] 自动重连未开启
[2025-06-20 16:55:02:515][0x000600A2] 系统断线
[2025-06-20 16:55:02:515][0x000600A2] 自动重连未开启
[2025-06-20 17:10:00:532][0x00120436] 系统断线
[2025-06-20 17:10:00:535][0x00120436] 自动重连未开启
[2025-06-20 17:20:11:356][0x001002FA] 系统断线
[2025-06-20 17:20:11:359][0x001002FA] 自动重连未开启
[2025-06-20 17:22:46:838][0x00170F7C] 系统断线
[2025-06-20 17:22:46:843][0x00170F7C] 自动重连未开启
[2025-06-20 17:31:15:664][0x00270A06] 系统断线
[2025-06-20 17:31:15:668][0x00270A06] 自动重连未开启
[2025-06-20 17:34:22:188][0x001506CA] 系统断线
[2025-06-20 17:34:22:191][0x001506CA] 自动重连未开启
[2025-06-20 18:02:21:639][0x00330720] 系统断线
[2025-06-20 18:02:21:641][0x00330720] 自动重连未开启
[2025-06-20 18:25:09:878][0x000C0516] 系统断线
[2025-06-20 18:25:09:882][0x000C0516] 自动重连未开启
[2025-06-20 18:31:39:710][0x00090BA4] 系统断线
[2025-06-20 18:31:39:712][0x00090BA4] 自动重连未开启
[2025-06-23 11:17:50:024][0x001B1188] 系统断线
[2025-06-23 11:17:50:040][0x001B1188] 自动重连未开启
[2025-06-23 11:22:10:885][0x001C1188] 系统断线
[2025-06-23 14:52:07:516][0x000F0908] 系统断线
[2025-06-23 14:52:07:516][0x000F0908] 自动重连未开启
[2025-06-23 15:03:23:604][0x00081870] 系统断线
[2025-06-23 15:03:23:604][0x00081870] 自动重连未开启

View File

@ -89,6 +89,7 @@ WT_FLOATCACHE_24CFF3CF218A73AF5B8E03E92AF583D6=294tem0S2k==
WT_FLOATCACHE_455F8DD9A874134E00B9194AFCCABAB8=294tem0S2k==
WT_FLOATCACHE_55771B174AC04E1CF16DA528C8F81948=294tem0S2k==
WT_FLOATCACHE_A316D7EB89C9C6D7D0DF5EAAEA184C87=294tem0S2k==
WT_FLOATCACHE_A7746BCB2D0919A6926DA76998D1F065=294tem0S2k==
WT_FLOATCACHE_C0C62A1620BA88BB7B2462A5CEC22A04=294tem0S2k==
WT_FONTSIZE=0
WT_HEIGHT=764
@ -97,13 +98,13 @@ WT_INVALIDPWD_LIMIT=0
WT_LEFTWIDTH=229
WT_LINKFAST=0
WT_MASKACCOUNT=0
WT_MINSIZEX=-1
WT_MINSIZEY=-1
WT_MINSIZEX=1
WT_MINSIZEY=999
WT_MODE_GPYK=0
WT_NEWLI_MNLEFT=0
WT_NEWLI_MNTOP=0
WT_POSITION_LEFT=26
WT_POSITION_TOP=26
WT_POSITION_LEFT=78
WT_POSITION_TOP=78
WT_SAVEACCOUNT=0
WT_SOUND_ALARM=1
WT_TONGXUN=0

View File

@ -1,3 +1,4 @@
DATE=20141016
[CHANGE_TIP]
GUI_CHEDAN_CONFIRM=27;no;您取消了撤单前确认提示功能。|您确定理解该项设置的用法,并愿意承担误操作的风险吗?
@ -202,7 +203,7 @@ JJ_UNABLEKKZQ=1
NEED_APPROPRIATENESS_MANAGE=161
TJD_STAGGING_CD_TIP=<font size=16>\n撤销后该笔条件单将失效并被删除。\n确定撤销本条件单?\n</font>
WT_2016_NOTSEND_RZRQ_CX_RQFZDDMX=1
WT_3MASK=50*;2*;51*;58*;03*;18:9*;42*;56*;706080;009*;01*;02*;09*;100*;101*;102*;103*;104*;105*;106*;107*;108*;109*;11*;12*;131*;130*;133*;134*;135*;136*;137*;138*;139*;14*;15*;16*;17*;18*;19*;404*;81*;821*;35:5*;
WT_3MASK=50*;2*;51*;58*;52*;03*;18:9*;42*;56*;706080;009*;01*;02*;09*;100*;101*;102*;103*;104*;105*;106*;107*;108*;109*;11*;12*;131*;130*;133*;134*;135*;136*;137*;138*;139*;14*;15*;16*;17*;18*;19*;404*;81*;821*;35:5*;
WT_449_RQFZRZFZ_SUP_CHECK=0
WT_450_RQFZRZFZ_SUP_CHECK=1
WT_452_RQFZRZFZ_SUP_CHECK=1
@ -241,6 +242,7 @@ WT_DEFAULT_RZRQ_CHECK=1
WT_DISPUNITMASK=1000:780*
WT_DOCKHEIGHT=265
WT_DOCKRIGHT=0
WT_DOCKWIDTH=
WT_DOWNDEPT=1
WT_DPI=1
WT_DZDMODE=0
@ -267,9 +269,9 @@ WT_KSWTDEFAULTID=1574
WT_LASTATYPE=48
WT_LASTCRYPTID=1110
WT_LASTLOGINTYPE=0
WT_LASTNOTIDATE=20250619
WT_LASTNOTIDATE=20250623
WT_LASTNOTIID=578273CEA86FD408CF2FC56271B2C09B
WT_LASTREQ_XGSGPKG_DATE=20250619
WT_LASTREQ_XGSGPKG_DATE=20250623
WT_LEFTWIDTH=229
WT_LIMITINVALIDPWD=0
WT_LINKFAST=0
@ -279,8 +281,8 @@ WT_MAICHU_PLCL=1
WT_MAIRU_PLCL=0
WT_MASKACCOUNT=0
WT_MINIWTNEW=0
WT_MINSIZEX=-1
WT_MINSIZEY=-1
WT_MINSIZEX=1
WT_MINSIZEY=999
WT_MODE_GPYK=0
WT_NEWLI_MNLEFT=0
WT_NEWLI_MNTOP=0
@ -291,10 +293,11 @@ WT_NO_ZZDETAIL=1
WT_ONLINEMODE=1
WT_OTC_YXMR_FXXYS=1
WT_POSITION=4
WT_POSITION_LEFT=26
WT_POSITION_TOP=26
WT_POSITION_LEFT=78
WT_POSITION_TOP=78
WT_PROPERTY_WIDTH=204
WT_PTDLRZRQCHECK=0
WT_QQ_NEWQUICKWTMODE=
WT_QUERYREFRESH=0
WT_REFRESHTIME=0
WT_RZRQSAVEACCOUNT=0
@ -309,6 +312,7 @@ WT_SHOWBINDINFO=2
WT_SHOWPINCERTQUESTION=首次使用SSL加密方式登录或更换登录设备的用户需要先设置证书密码。请点击?)按钮查看具体操作说明。
WT_SHOWPINCERTQUESTION_URL=0|http://jrzd.dwstock.com:8066/policy/index.html?code=guomi
WT_SHOWPWDPROMPT=1
WT_SIMPLEMODE=
WT_SOUND_ALARM=1
WT_SPEEDTEST_TIMEOUT=1000
WT_STAGGING_TIMELIMIT=09:30|14:40
@ -322,7 +326,7 @@ WT_TJD_STAGGING_TIP4=
WT_TONGXUN=0
WT_UPGRADEADDR=
WT_UPGRADEPORT=0
WT_UPGRADEURL=http://xiucai-client.oss-cn-shanghai.aliyuncs.com/xiadan.exe
WT_UPGRADEURL=
WT_USESPRITE=0
WT_WIDTH=1494
WT_XDATA_ACCOUNT_ENCODE=1
@ -333,7 +337,7 @@ WT_YYBIDS=0100|ʨɽ·Ӫҵ
WT_ZCSX_ENABLE=1
WT_ZCSX_INTERVAL=1000
WT_ZCSX_WT_INTERVAL=10
WT_ZHANGMASK=11*;12*;13*;10*;181*;12*;0707*;35:10*;35:11*;35:12*;35:13*;35:143*;35:144*;35:146*;35:149*;35:19*;19:009*;19:01*;19:02*;19:09*;19:101*;19:102*;19:103*;19:104*;19:105*;19:106*;19:107*;19:108*;19:12*;19:13*;19:14*;19:15*;19:16*;19:17*;19:18*;19:19*;19:2*;404*;81*;
WT_ZHANGMASK=11*;12*;13*;10*;181*;12*;0707*;35:10*;35:11*;35:12*;35:13*;35:143*;35:144*;35:146*;35:149*;35:19*;19:009*;19:01*;19:02*;19:09*;19:101*;19:102*;19:103*;19:104*;19:105*;19:106*;19:107*;19:108*;19:12*;19:13*;19:14*;19:15*;19:16*;19:17*;19:18*;19:19*;19:2*;404*;81*;821*;35:5*;
WT_ZJHQ_FILTERBYZQDM=1
WT_ZXHQCHANGELSH_UPDATEYHSL=1
WT_ZXHQDQHY_LISTCHECK=1
@ -430,6 +434,7 @@ WT_FLOATCACHE_24CFF3CF218A73AF5B8E03E92AF583D6=294tem0S2k==
WT_FLOATCACHE_455F8DD9A874134E00B9194AFCCABAB8=294tem0S2k==
WT_FLOATCACHE_55771B174AC04E1CF16DA528C8F81948=294tem0S2k==
WT_FLOATCACHE_A316D7EB89C9C6D7D0DF5EAAEA184C87=294tem0S2k==
WT_FLOATCACHE_A7746BCB2D0919A6926DA76998D1F065=294tem0S2k==
WT_FLOATCACHE_C0C62A1620BA88BB7B2462A5CEC22A04=294tem0S2k==
WT_FONTSIZE=0
WT_HEIGHT=764
@ -438,13 +443,13 @@ WT_INVALIDPWD_LIMIT=0
WT_LEFTWIDTH=229
WT_LINKFAST=0
WT_MASKACCOUNT=0
WT_MINSIZEX=-1
WT_MINSIZEY=-1
WT_MINSIZEX=1
WT_MINSIZEY=999
WT_MODE_GPYK=0
WT_NEWLI_MNLEFT=0
WT_NEWLI_MNTOP=0
WT_POSITION_LEFT=26
WT_POSITION_TOP=26
WT_POSITION_LEFT=78
WT_POSITION_TOP=78
WT_SAVEACCOUNT=0
WT_SOUND_ALARM=1
WT_TONGXUN=0
@ -458,7 +463,8 @@ USERBEHAVIOR=1
WNDNAME=Ths_UserBehavior_test
[WT_SERVER]
TCP/IP_ACCOUNTTYPE0=
LASTUPDATE=20141016
TCP/IP_ACCOUNTTYPE6=
TCP/IP_ADDRESS0=wtssl.dwstock.com
TCP/IP_ADDRESS1=58.240.173.150
TCP/IP_ADDRESS2=114.94.49.59
@ -487,7 +493,7 @@ TCP/IP_CRYPTPROTOCOL3=SSL
TCP/IP_CRYPTPROTOCOL4=SSL
TCP/IP_CRYPTPROTOCOL5=SSL
TCP/IP_CRYPTPROTOCOL6=SSL
TCP/IP_CUR_SERVER=0
TCP/IP_CUR_SERVER=6
TCP/IP_DEPTID0=0100
TCP/IP_DEPTID1=0100
TCP/IP_DEPTID2=0100
@ -495,7 +501,7 @@ TCP/IP_DEPTID3=0100
TCP/IP_DEPTID4=0100
TCP/IP_DEPTID5=0100
TCP/IP_DEPTID6=0100
TCP/IP_DEPTLIST0=
TCP/IP_DEPTLIST6=
TCP/IP_DEPTNAME0=狮山路营业部
TCP/IP_DEPTNAME1=狮山路营业部
TCP/IP_DEPTNAME10=狮山路营业部
@ -559,7 +565,7 @@ TCP/IP_POWER9=0
TCP/IP_PROXYPORT=0
TCP/IP_PROXYTYPE=0
TCP/IP_SERVER_NUM=7
TCP/IP_SITEID0=
TCP/IP_SITEID6=
TCP/IP_SSLCERT_PORT0=2235
TCP/IP_SSLCERT_PORT1=2235
TCP/IP_SSLCERT_PORT10=2235
@ -597,7 +603,7 @@ TCP/IP_USEPROXY=0
USEDIAL=0
[东吴证券电信入口二]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8009|58.211.31.245:8009|#HH:1
TCP/IP_DYNAMICADDRESSWT_SERVER=58.211.31.245:18002|#H:1
[东吴证券电信入口三]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8002|58.211.31.245:8002|222.92.150.138:8002|58.211.94.45:8002|#HHHH:1
@ -612,13 +618,13 @@ TCP/IP_DYNAMICADDRESSWT_SERVER=58.211.94.45:8002|222.92.150.138:8002|222.92.132.
TCP/IP_DYNAMICADDRESSWT_SERVER=61.132.116.211:8002|58.211.94.45:8002|221.6.67.124:8002|58.211.31.245:8002|222.92.132.238:8002|#HHHH:1
[东吴证券网通入口二]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8009|58.211.31.245:8009|#HH:1
TCP/IP_DYNAMICADDRESSWT_SERVER=58.211.94.45:8002|222.92.150.138:8002|222.92.132.238:8002|58.211.31.245:8002|#HHHH:1
[东吴证券网通入口一]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8002|58.211.31.245:8002|222.92.150.138:8002|58.211.94.45:8002|#HHHH:1
[东吴证券移动入口一]
TCP/IP_DYNAMICADDRESSWT_SERVER=58.211.94.45:8002|222.92.150.138:8002|222.92.132.238:8002|58.211.31.245:8002|#HHHH:1
TCP/IP_DYNAMICADDRESSWT_SERVER=58.211.94.45:8008|222.92.150.138:8002|#HH:1
[东吴证券总交易入口]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8009|58.211.31.245:8009|#HH:1

View File

@ -1,3 +1,4 @@
DATE=20141016
[CHANGE_TIP]
GUI_CHEDAN_CONFIRM=27;no;您取消了撤单前确认提示功能。|您确定理解该项设置的用法,并愿意承担误操作的风险吗?
@ -267,9 +268,9 @@ WT_KSWTDEFAULTID=1574
WT_LASTATYPE=48
WT_LASTCRYPTID=1110
WT_LASTLOGINTYPE=0
WT_LASTNOTIDATE=20250619
WT_LASTNOTIDATE=20250623
WT_LASTNOTIID=578273CEA86FD408CF2FC56271B2C09B
WT_LASTREQ_XGSGPKG_DATE=20250619
WT_LASTREQ_XGSGPKG_DATE=20250623
WT_LEFTWIDTH=229
WT_LIMITINVALIDPWD=0
WT_LINKFAST=0
@ -279,8 +280,8 @@ WT_MAICHU_PLCL=1
WT_MAIRU_PLCL=0
WT_MASKACCOUNT=0
WT_MINIWTNEW=0
WT_MINSIZEX=-1
WT_MINSIZEY=-1
WT_MINSIZEX=1
WT_MINSIZEY=999
WT_MODE_GPYK=0
WT_NEWLI_MNLEFT=0
WT_NEWLI_MNTOP=0
@ -291,8 +292,8 @@ WT_NO_ZZDETAIL=1
WT_ONLINEMODE=1
WT_OTC_YXMR_FXXYS=1
WT_POSITION=4
WT_POSITION_LEFT=26
WT_POSITION_TOP=26
WT_POSITION_LEFT=78
WT_POSITION_TOP=78
WT_PROPERTY_WIDTH=204
WT_PTDLRZRQCHECK=0
WT_QUERYREFRESH=0
@ -429,6 +430,7 @@ WT_FLOATCACHE_24CFF3CF218A73AF5B8E03E92AF583D6=294tem0S2k==
WT_FLOATCACHE_455F8DD9A874134E00B9194AFCCABAB8=294tem0S2k==
WT_FLOATCACHE_55771B174AC04E1CF16DA528C8F81948=294tem0S2k==
WT_FLOATCACHE_A316D7EB89C9C6D7D0DF5EAAEA184C87=294tem0S2k==
WT_FLOATCACHE_A7746BCB2D0919A6926DA76998D1F065=294tem0S2k==
WT_FLOATCACHE_C0C62A1620BA88BB7B2462A5CEC22A04=294tem0S2k==
WT_FONTSIZE=0
WT_HEIGHT=764
@ -437,13 +439,13 @@ WT_INVALIDPWD_LIMIT=0
WT_LEFTWIDTH=229
WT_LINKFAST=0
WT_MASKACCOUNT=0
WT_MINSIZEX=-1
WT_MINSIZEY=-1
WT_MINSIZEX=1
WT_MINSIZEY=999
WT_MODE_GPYK=0
WT_NEWLI_MNLEFT=0
WT_NEWLI_MNTOP=0
WT_POSITION_LEFT=26
WT_POSITION_TOP=26
WT_POSITION_LEFT=78
WT_POSITION_TOP=78
WT_SAVEACCOUNT=0
WT_SOUND_ALARM=1
WT_TONGXUN=0
@ -457,6 +459,7 @@ USERBEHAVIOR=1
WNDNAME=Ths_UserBehavior_test
[WT_SERVER]
LASTUPDATE=20141016
TCP/IP_ADDRESS0=wtssl.dwstock.com
TCP/IP_ADDRESS1=58.240.173.150
TCP/IP_ADDRESS2=114.94.49.59
@ -485,7 +488,7 @@ TCP/IP_CRYPTPROTOCOL3=SSL
TCP/IP_CRYPTPROTOCOL4=SSL
TCP/IP_CRYPTPROTOCOL5=SSL
TCP/IP_CRYPTPROTOCOL6=SSL
TCP/IP_CUR_SERVER=0
TCP/IP_CUR_SERVER=6
TCP/IP_DEPTID0=0100
TCP/IP_DEPTID1=0100
TCP/IP_DEPTID2=0100
@ -593,7 +596,7 @@ TCP/IP_USEPROXY=0
USEDIAL=0
[东吴证券电信入口二]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8009|58.211.31.245:8009|#HH:1
TCP/IP_DYNAMICADDRESSWT_SERVER=58.211.31.245:18002|#H:1
[东吴证券电信入口三]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8002|58.211.31.245:8002|222.92.150.138:8002|58.211.94.45:8002|#HHHH:1
@ -608,16 +611,16 @@ TCP/IP_DYNAMICADDRESSWT_SERVER=58.211.94.45:8002|222.92.150.138:8002|222.92.132.
TCP/IP_DYNAMICADDRESSWT_SERVER=61.132.116.211:8002|58.211.94.45:8002|221.6.67.124:8002|58.211.31.245:8002|222.92.132.238:8002|#HHHH:1
[东吴证券网通入口二]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8009|58.211.31.245:8009|#HH:1
TCP/IP_DYNAMICADDRESSWT_SERVER=58.211.94.45:8002|222.92.150.138:8002|222.92.132.238:8002|58.211.31.245:8002|#HHHH:1
[东吴证券网通入口一]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8002|58.211.31.245:8002|222.92.150.138:8002|58.211.94.45:8002|#HHHH:1
[东吴证券移动入口一]
TCP/IP_DYNAMICADDRESSWT_SERVER=58.211.94.45:8002|222.92.150.138:8002|222.92.132.238:8002|58.211.31.245:8002|#HHHH:1
TCP/IP_DYNAMICADDRESSWT_SERVER=58.211.94.45:8008|222.92.150.138:8002|#HH:1
[东吴证券总交易入口]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8002|58.211.31.245:8002|222.92.150.138:8002|58.211.94.45:8002|#HHHH:1
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8009|58.211.31.245:8009|#HH:1
[东吴证券总入口]
TCP/IP_DYNAMICADDRESSWT_SERVER=222.92.132.238:8002|222.92.150.138:8002|#HH:1

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 832 B

After

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 907 B

After

Width:  |  Height:  |  Size: 951 B

View File

@ -1,22 +0,0 @@
# 此脚本调试时非常常用,不可删除
import winreg
import ctypes
def reset_proxy_to_default():
"""恢复系统代理为默认(关闭)"""
key = winreg.OpenKey(
winreg.HKEY_CURRENT_USER,
r"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings",
0, winreg.KEY_WRITE
)
try:
winreg.SetValueEx(key, "ProxyEnable", 0, winreg.REG_DWORD, 0)
winreg.SetValueEx(key, "ProxyServer", 0, winreg.REG_SZ, "")
winreg.SetValueEx(key, "ProxyOverride", 0, winreg.REG_SZ, "<local>")
finally:
winreg.CloseKey(key)
internet_set_option = ctypes.windll.Wininet.InternetSetOptionW
internet_set_option(0, 37, 0, 0)
internet_set_option(0, 39, 0, 0)
reset_proxy_to_default()

69
logs/13401019175.log Normal file
View File

@ -0,0 +1,69 @@
[2025-06-20 16:32:31] [INFO] Start login
[2025-06-20 16:32:49] [INFO] 代理IP已经获取{'ip': '180.120.6.234', 'port': 40027, 'prov': '江苏', 'city': '南通', 'isp': '电信', 'expire': '2025-06-20 16:37:51'}
[2025-06-20 16:32:51] [INFO] 全局代理设置成功
[2025-06-20 16:33:57] [INFO] Start login
[2025-06-20 16:34:13] [INFO] 代理IP已经获取{'ip': '121.226.92.111', 'port': 40041, 'prov': '江苏', 'city': '南通', 'isp': '电信', 'expire': '2025-06-20 16:39:15'}
[2025-06-20 16:34:14] [INFO] 全局代理设置成功
[2025-06-20 16:37:37] [INFO] Start login
[2025-06-20 16:37:54] [INFO] 代理IP已经获取{'ip': '110.90.14.178', 'port': 40001, 'prov': '福建', 'city': '福州', 'isp': '电信', 'expire': '2025-06-20 16:42:56'}
[2025-06-20 16:37:55] [INFO] 全局代理设置成功
[2025-06-20 16:51:33] [INFO] Start login
[2025-06-20 16:51:51] [INFO] 代理IP已经获取{'ip': '121.225.78.72', 'port': 40033, 'prov': '江苏', 'city': '南京', 'isp': '电信', 'expire': '2025-06-20 16:56:53'}
[2025-06-20 16:51:53] [INFO] 全局代理设置成功
[2025-06-20 16:54:01] [WARNING] There are running programs, and there are processes in retreat
[2025-06-20 16:54:01] [INFO] Start login
[2025-06-20 16:54:18] [INFO] 代理IP已经获取{'ip': '114.225.124.157', 'port': 40013, 'prov': '江苏', 'city': '无锡', 'isp': '电信', 'expire': '2025-06-20 16:59:20'}
[2025-06-20 16:54:19] [INFO] 全局代理设置成功
[2025-06-20 16:55:51] [INFO] Start login
[2025-06-20 16:56:09] [INFO] 代理IP已经获取{'ip': '117.86.187.5', 'port': 40012, 'prov': '江苏', 'city': '南通', 'isp': '电信', 'expire': '2025-06-20 17:01:11'}
[2025-06-20 16:56:10] [INFO] 全局代理设置成功
[2025-06-20 16:59:15] [WARNING] There are running programs, and there are processes in retreat
[2025-06-20 16:59:15] [INFO] Start login
[2025-06-20 16:59:33] [INFO] 代理IP已经获取{'ip': '115.239.71.5', 'port': 40015, 'prov': '浙江', 'city': '嘉兴', 'isp': '电信', 'expire': '2025-06-20 17:04:35'}
[2025-06-20 16:59:34] [INFO] 全局代理设置成功
[2025-06-20 17:01:40] [WARNING] There are running programs, and there are processes in retreat
[2025-06-20 17:01:40] [INFO] Start login
[2025-06-20 17:01:58] [INFO] 代理IP已经获取{'ip': '120.41.89.137', 'port': 40005, 'prov': '福建', 'city': '厦门', 'isp': '电信', 'expire': '2025-06-20 17:07:00'}
[2025-06-20 17:01:59] [INFO] 全局代理设置成功
[2025-06-20 17:03:41] [WARNING] There are running programs, and there are processes in retreat
[2025-06-20 17:03:41] [INFO] Start login
[2025-06-20 17:03:58] [INFO] 代理IP已经获取{'ip': '49.88.138.165', 'port': 40032, 'prov': '江苏', 'city': '连云港', 'isp': '电信', 'expire': '2025-06-20 17:09:00'}
[2025-06-20 17:03:59] [INFO] 全局代理设置成功
[2025-06-20 17:16:00] [INFO] Start login
[2025-06-20 17:16:22] [INFO] 代理IP已经获取{'ip': '113.242.237.157', 'port': 40018, 'prov': '湖南', 'city': '益阳', 'isp': '电信', 'expire': '2025-06-20 17:21:24'}
[2025-06-20 17:16:24] [INFO] 全局代理设置成功
[2025-06-20 17:18:33] [WARNING] There are running programs, and there are processes in retreat
[2025-06-20 17:18:33] [INFO] Start login
[2025-06-20 17:18:52] [INFO] 代理IP已经获取{'ip': '49.70.97.222', 'port': 40050, 'prov': '江苏', 'city': '宿迁', 'isp': '电信', 'expire': '2025-06-20 17:23:54'}
[2025-06-20 17:18:53] [INFO] 全局代理设置成功
[2025-06-20 17:20:18] [INFO] Start login
[2025-06-20 17:20:37] [INFO] 代理IP已经获取{'ip': '119.132.114.109', 'port': 40006, 'prov': '广东', 'city': '珠海', 'isp': '电信', 'expire': '2025-06-20 17:25:39'}
[2025-06-20 17:20:39] [INFO] 全局代理设置成功
[2025-06-20 17:23:10] [INFO] Start login
[2025-06-20 17:23:30] [INFO] 代理IP已经获取{'ip': '121.61.195.41', 'port': 40030, 'prov': '湖北', 'city': '荆门', 'isp': '电信', 'expire': '2025-06-20 17:28:33'}
[2025-06-20 17:23:32] [INFO] 全局代理设置成功
[2025-06-20 17:31:57] [INFO] Start login
[2025-06-20 17:32:19] [INFO] 代理IP已经获取{'ip': '110.184.178.94', 'port': 40013, 'prov': '四川', 'city': '成都', 'isp': '电信', 'expire': '2025-06-20 17:37:22'}
[2025-06-20 17:32:21] [INFO] 全局代理设置成功
[2025-06-20 18:00:20] [INFO] Start login
[2025-06-20 18:00:39] [INFO] 代理IP已经获取{'ip': '117.26.131.222', 'port': 40032, 'prov': '福建', 'city': '宁德', 'isp': '电信', 'expire': '2025-06-20 18:05:41'}
[2025-06-20 18:00:41] [INFO] 全局代理设置成功
[2025-06-20 18:10:32] [INFO] Start login
[2025-06-20 18:10:53] [INFO] 代理IP已经获取{'ip': '49.67.191.218', 'port': 40016, 'prov': '江苏', 'city': '南通', 'isp': '电信', 'expire': '2025-06-20 18:15:55'}
[2025-06-20 18:10:54] [INFO] 全局代理设置成功
[2025-06-20 18:27:31] [INFO] Start login
[2025-06-20 18:27:50] [INFO] 代理IP已经获取{'ip': '27.156.199.206', 'port': 40010, 'prov': '福建', 'city': '宁德', 'isp': '电信', 'expire': '2025-06-20 18:32:52'}
[2025-06-20 18:27:51] [INFO] 全局代理设置成功
[2025-06-23 11:17:20] [INFO] Start login
[2025-06-23 11:17:32] [INFO] 代理IP已经获取{'ip': '49.69.44.205', 'port': 40029, 'prov': '江苏', 'city': '盐城', 'isp': '电信', 'expire': '2025-06-23 11:22:33'}
[2025-06-23 11:17:32] [INFO] 全局代理设置成功
[2025-06-23 11:21:52] [INFO] Start login
[2025-06-23 11:22:02] [INFO] 代理IP已经获取{'ip': '121.235.17.23', 'port': 40050, 'prov': '江苏', 'city': '无锡', 'isp': '电信', 'expire': '2025-06-23 11:27:03'}
[2025-06-23 11:22:02] [INFO] 全局代理设置成功
[2025-06-23 13:42:01] [INFO] Start login
[2025-06-23 14:51:24] [INFO] Start login
[2025-06-23 14:51:41] [INFO] 代理IP已经获取{'ip': '111.224.75.104', 'port': 40012, 'prov': '河北', 'city': '石家庄', 'isp': '电信', 'expire': '2025-06-23 14:56:42'}
[2025-06-23 14:51:42] [INFO] 全局代理设置成功
[2025-06-23 15:02:25] [INFO] Start login
[2025-06-23 15:02:44] [INFO] 代理IP已经获取{'ip': '121.230.8.13', 'port': 40029, 'prov': '江苏', 'city': '泰州', 'isp': '电信', 'expire': '2025-06-23 15:07:44'}
[2025-06-23 15:02:45] [INFO] 全局代理设置成功

23
logs/13593501968.log Normal file
View File

@ -0,0 +1,23 @@
[2025-06-23 14:47:48] [INFO] Start login
[2025-06-23 14:48:51] [INFO] Start login
[2025-06-23 14:49:06] [INFO] 代理IP已经获取{'ip': '223.247.41.128', 'port': 40003, 'prov': '安徽', 'city': '池州', 'isp': '电信', 'expire': '2025-06-23 14:54:06'}
[2025-06-23 14:49:07] [INFO] 全局代理设置成功
[2025-06-23 14:49:53] [INFO] Start login
[2025-06-23 14:50:06] [INFO] 代理IP已经获取{'ip': '115.199.227.55', 'port': 40004, 'prov': '浙江', 'city': '杭州', 'isp': '电信', 'expire': '2025-06-23 14:55:06'}
[2025-06-23 14:50:07] [INFO] 全局代理设置成功
[2025-06-23 14:50:34] [INFO] Start login
[2025-06-23 14:50:46] [ERROR] 获取IP失败请检查网络连接HTTPConnectionPool(host='api.tianqiip.com', port=80): Max retries exceeded with url: /getip?secret=d8wqfdf0qhrnxgne&num=1&yys=%E7%94%B5%E4%BF%A1&type=json&lb=%0A&port=3&time=5&ts=1&ys=1&cs=1&sign=386ff88188185bc6070ec011266745b3&mr=1 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000020057DB6898>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',))
[2025-06-23 14:50:51] [INFO] 代理IP已经获取{'ip': '114.232.0.16', 'port': 40030, 'prov': '江苏', 'city': '南通', 'isp': '电信', 'expire': '2025-06-23 14:55:51'}
[2025-06-23 14:50:52] [INFO] 全局代理设置成功
[2025-06-23 14:52:19] [INFO] Start login
[2025-06-23 14:52:32] [ERROR] 获取IP失败请检查网络连接HTTPConnectionPool(host='api.tianqiip.com', port=80): Max retries exceeded with url: /getip?secret=d8wqfdf0qhrnxgne&num=1&yys=%E7%94%B5%E4%BF%A1&type=json&lb=%0A&port=3&time=5&ts=1&ys=1&cs=1&sign=386ff88188185bc6070ec011266745b3&mr=1 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000002ACD2921128>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',))
[2025-06-23 14:52:38] [INFO] 代理IP已经获取{'ip': '171.110.88.163', 'port': 40037, 'prov': '广西', 'city': '桂林', 'isp': '电信', 'expire': '2025-06-23 14:57:38'}
[2025-06-23 14:52:39] [INFO] 全局代理设置成功
[2025-06-23 14:54:05] [INFO] Start login
[2025-06-23 14:54:18] [ERROR] 获取IP失败请检查网络连接HTTPConnectionPool(host='api.tianqiip.com', port=80): Max retries exceeded with url: /getip?secret=d8wqfdf0qhrnxgne&num=1&yys=%E7%94%B5%E4%BF%A1&type=json&lb=%0A&port=3&time=5&ts=1&ys=1&cs=1&sign=386ff88188185bc6070ec011266745b3&mr=1 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001C2D25720F0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',))
[2025-06-23 14:54:23] [INFO] 代理IP已经获取{'ip': '125.109.82.134', 'port': 40045, 'prov': '浙江', 'city': '温州', 'isp': '电信', 'expire': '2025-06-23 14:59:24'}
[2025-06-23 14:54:24] [INFO] 全局代理设置成功
[2025-06-23 14:55:16] [INFO] Start login
[2025-06-23 14:55:29] [ERROR] 获取IP失败请检查网络连接HTTPConnectionPool(host='api.tianqiip.com', port=80): Max retries exceeded with url: /getip?secret=d8wqfdf0qhrnxgne&num=1&yys=%E7%94%B5%E4%BF%A1&type=json&lb=%0A&port=3&time=5&ts=1&ys=1&cs=1&sign=386ff88188185bc6070ec011266745b3&mr=1 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x00000230D37E2080>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',))
[2025-06-23 14:55:34] [INFO] 代理IP已经获取{'ip': '106.119.250.146', 'port': 40011, 'prov': '河北', 'city': '唐山', 'isp': '电信', 'expire': '2025-06-23 15:00:35'}
[2025-06-23 14:55:35] [INFO] 全局代理设置成功

View File

@ -22,3 +22,58 @@
[2025-06-19 18:20:53] [WARNING] MAC 重置之后:02-6D-59-EF-79-B5
[2025-06-19 18:24:31] [WARNING] MAC 重置之前:02-6D-59-EF-79-B5
[2025-06-19 18:24:38] [WARNING] MAC 重置之后:02-13-45-57-C3-1E
[2025-06-20 16:32:31] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 16:32:43] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 16:33:57] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 16:34:09] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 16:37:37] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 16:37:48] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 16:51:33] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 16:51:45] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 16:54:02] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 16:54:14] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 16:55:52] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 16:56:03] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 16:59:16] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 16:59:28] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 17:01:41] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 17:01:53] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 17:03:42] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 17:03:54] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 17:16:01] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 17:16:13] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 17:18:33] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 17:18:46] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 17:20:18] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 17:20:30] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 17:23:11] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 17:23:23] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 17:31:58] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 17:32:10] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 18:00:21] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 18:00:33] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 18:10:33] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 18:10:46] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-20 18:27:31] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-20 18:27:44] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-23 11:17:20] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-23 11:17:30] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-23 11:21:53] [WARNING] MAC 重置之前:34-4B-50-00-00-00
[2025-06-23 11:22:01] [WARNING] MAC 重置之后:34-4B-50-00-00-00
[2025-06-23 13:42:02] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-23 14:48:53] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-23 14:49:06] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-23 14:49:53] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-23 14:50:06] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-23 14:50:34] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-23 14:50:46] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-23 14:51:25] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-23 14:51:37] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-23 14:52:20] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-23 14:52:32] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-23 14:54:05] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-23 14:54:18] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-23 14:55:17] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-23 14:55:29] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41
[2025-06-23 15:02:25] [WARNING] MAC 重置之前:D0-39-57-B1-E5-41
[2025-06-23 15:02:37] [WARNING] MAC 重置之后:D0-39-57-B1-E5-41

Binary file not shown.

Binary file not shown.

View File

@ -2,23 +2,17 @@ import warnings
from hashlib import md5
import pywinauto
import pyautogui
import requests
from sqlalchemy import create_engine
import pandas as pd
import logging
import time
import sys
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import os
import uuid
import redis
import ctypes
import platform
import re
import subprocess
import winreg
import random
import sys
@ -26,20 +20,17 @@ import datetime
import pandas as pd
import os
from openpyxl import load_workbook
import subprocess
import time
import requests
import requests
import subprocess
import time
import logging
from pathlib import Path
root_path = Path(__file__).parent
# 初始化日志
logger = logging.getLogger(__name__)
def is_admin() -> bool:
@ -192,7 +183,7 @@ def connect_wifi(ssid: str = 'MaxEntropy', password: str = 'cskj12345678') -> bo
try:
os.remove(profile_path)
except Exception as e:
print(f"清理临时文件失败: {str(e)}")
print(f"清理wifi连接的临时文件失败: {str(e)}")
# 设置代理
@ -209,50 +200,33 @@ def set_proxy(proxy_ip: str, proxy_port: int):
except Exception:
pass
#启动软件进程,输入账号密码
print('Start login')
app = pywinauto.Application().start(proxifier_path,timeout=3)
pyautogui.PAUSE = 0.001
pyautogui.PAUSE = 0.01
# 设置主菜单窗口
# 步骤1等待Proxifier窗口激活确保窗口处于活动状态
print("确保Proxifier窗口在前台按Alt+Tab切换...")
# 步骤2执行完整的按键序列
print("开始执行按键序列...")
try:
# Alt键 - 激活菜单栏
pyautogui.keyDown('alt')
pyautogui.keyUp('alt')
# Tab键 - 第一次
pyautogui.press('tab')
pyautogui.press('enter') # Enter键 - 第一次打开Profile菜单
# Enter键 - 第一次打开Profile菜单
pyautogui.press('enter')
# # Tab键 - 第二次
pyautogui.press('enter')
# Enter键 - 第三次打开Proxy Servers菜单
pyautogui.press('enter')
pyautogui.press('enter') # Enter键 - 第三次打开Proxy Servers菜单
except Exception as e:
print(f"操作出错: {e}")
print("请手动检查窗口状态后重试")
logger.error(f"操作出错: {e}")
logger.error("请手动检查窗口状态后重试")
# 输入ip和端口
try:
time.sleep(0.1)
print('Start input ip and port')
pyautogui.typewrite(proxy_ip)
pyautogui.press('tab')
time.sleep(0.1)
pyautogui.typewrite(proxy_port)
pyautogui.typewrite(str(proxy_port))
pyautogui.press('enter')
pyautogui.press('tab')
pyautogui.press('tab')
@ -262,7 +236,7 @@ def set_proxy(proxy_ip: str, proxy_port: int):
pyautogui.press('tab')
pyautogui.press('enter')
except Exception as e:
print(e)
logger.error(e)
@ -651,17 +625,7 @@ class Logger():
# 设置格式
fmt = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
# 文件处理器
fh = logging.FileHandler(self.fileName, encoding='utf-8')
fh.setFormatter(fmt)
fh.setLevel(Flevel)
self.logger.addHandler(fh)
# 控制台处理器
ch = logging.StreamHandler()
ch.setFormatter(fmt)
ch.setLevel(logging.INFO)
self.logger.addHandler(ch)
def debug(self, message):
"""
@ -770,6 +734,7 @@ class SetMac(object):
self.WIN_REGISTRY_PATH = r"SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"
self.logger = logging.getLogger(__name__)
def is_admin(self):
"""
@ -777,20 +742,20 @@ class SetMac(object):
:return:
"""
if ctypes.windll.shell32.IsUserAnAdmin() == 0:
print('Sorry! You should run this with administrative privileges if you want to change your MAC address.')
self.logger.error('Sorry! You should run this with administrative privileges if you want to change your MAC address.')
sys.exit()
else:
print('admin')
self.logger.info('admin')
def get_macinfos(self):
"""
查看所有mac信息
:return:
"""
print('=' * 50)
self.logger.info('=' * 50)
mac_info = subprocess.check_output('GETMAC /v /FO list', stderr=subprocess.STDOUT)
mac_info = mac_info.decode('gbk')
print('Your MAC address:\n', mac_info)
self.logger.info('Your MAC address:\n', mac_info)
# 想要匹配的连接名
target_connection_name = "WLAN"
@ -809,16 +774,15 @@ class SetMac(object):
"""
mac_info = subprocess.check_output('GETMAC /v /FO list', stderr=subprocess.STDOUT)
mac_info = mac_info.decode('gbk')
print(mac_info)
search = re.search(r'(WLAN)\s+网络适配器: (.+)\s+物理地址:', mac_info)
print(search)
self.logger.info(search)
target_name, target_device = (search.group(1), search.group(2).strip()) if search else ('', '')
if not all([target_name, target_device]):
print('Cannot find the target device')
self.logger.error('Cannot find the target device')
sys.exit()
print(target_name, target_device)
self.logger.info(target_name, target_device)
return target_device
def get_network_adapter_info(self):
@ -849,10 +813,10 @@ class SetMac(object):
result[index] = name
return result
except subprocess.CalledProcessError as e:
print(f"命令执行失败,错误代码: {e.returncode}")
print(e.output)
self.logger.error(f"命令执行失败,错误代码: {e.returncode}")
self.logger.error(e.output)
except Exception as e:
print(f"发生异常: {e}")
self.logger.error(f"发生异常: {e}")
return []
def set_mac_address(self, target_device, new_mac):
@ -864,7 +828,7 @@ class SetMac(object):
"""
if not self.MAC_ADDRESS_RE.match(new_mac):
print('Please input a correct MAC address')
self.logger.error('Please input a correct MAC address')
return
# Locate adapter's registry and update network address (mac)
@ -905,7 +869,7 @@ class SetMac(object):
raise err
if adapter_path is None:
print('Device not found.')
self.logger.error('Device not found.')
winreg.CloseKey(key)
winreg.CloseKey(reg_hdl)
return
@ -918,8 +882,6 @@ class SetMac(object):
winreg.CloseKey(key)
winreg.CloseKey(reg_hdl)
# Adapter must be restarted in order for change to take affect
# print 'Now you should restart your netsh'
self.restart_adapter(target_index, target_device)
def restart_adapter(self, target_index, target_device):
@ -974,7 +936,7 @@ class SetMac(object):
if one_mac not in used_mac:
r.rpush('Mac', one_mac)
break
print('1111111', one_mac)
self.logger.info('random mac:', one_mac)
return one_mac

View File

@ -26,6 +26,7 @@ class Trade:
# 初始化 获取用户券商信息
def __init__(self, user, op,order_id):
self.log = Logger(f'{root_path}/logs','trade_logic')
self.user = str(user)
self.op = op
self.order_id = order_id