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$"> <content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" /> <excludeFolder url="file://$MODULE_DIR$/venv" />
</content> </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" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>
<component name="PyDocumentationSettings"> <component name="PyDocumentationSettings">

2
.idea/misc.xml generated
View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <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> </project>

Binary file not shown.

Binary file not shown.

View File

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

View File

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

View File

@ -7,4 +7,4 @@ Gzip=0
WndName=Ths_UserBehavior_test WndName=Ths_UserBehavior_test
acct_bind=085006032667|073000003859|080000027181|073000004902|073000004916|073000003698|073000004092|073000003868|073000003921|073000004065|073000003769|073000004318|073000003702|085006040636|073000004495|073000004116| acct_bind=085006032667|073000003859|080000027181|073000004902|073000004916|073000003698|073000004092|073000003868|073000003921|073000004065|073000003769|073000004318|073000003702|085006040636|073000004495|073000004116|
device_bind=1 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 52243433=2024-4-10
52243828=2024-2-7 52243828=2024-2-7
52244086=2024-3-12 52244086=2024-3-12
52243961=2025-6-6 52243961=2025-6-20
52260726=2023-9-15 52260726=2023-9-15
54354761=2023-10-10 54354761=2023-10-10
52260860=2023-5-15 52260860=2023-5-15

View File

@ -53,3 +53,32 @@
[2025-06-19 17:57:14:240][0x000409B2] 自动重连未开启 [2025-06-19 17:57:14:240][0x000409B2] 自动重连未开启
[2025-06-19 18:04:54:474][0x000E0946] 系统断线 [2025-06-19 18:04:54:474][0x000E0946] 系统断线
[2025-06-19 18:04:54:477][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_455F8DD9A874134E00B9194AFCCABAB8=294tem0S2k==
WT_FLOATCACHE_55771B174AC04E1CF16DA528C8F81948=294tem0S2k== WT_FLOATCACHE_55771B174AC04E1CF16DA528C8F81948=294tem0S2k==
WT_FLOATCACHE_A316D7EB89C9C6D7D0DF5EAAEA184C87=294tem0S2k== WT_FLOATCACHE_A316D7EB89C9C6D7D0DF5EAAEA184C87=294tem0S2k==
WT_FLOATCACHE_A7746BCB2D0919A6926DA76998D1F065=294tem0S2k==
WT_FLOATCACHE_C0C62A1620BA88BB7B2462A5CEC22A04=294tem0S2k== WT_FLOATCACHE_C0C62A1620BA88BB7B2462A5CEC22A04=294tem0S2k==
WT_FONTSIZE=0 WT_FONTSIZE=0
WT_HEIGHT=764 WT_HEIGHT=764
@ -97,13 +98,13 @@ WT_INVALIDPWD_LIMIT=0
WT_LEFTWIDTH=229 WT_LEFTWIDTH=229
WT_LINKFAST=0 WT_LINKFAST=0
WT_MASKACCOUNT=0 WT_MASKACCOUNT=0
WT_MINSIZEX=-1 WT_MINSIZEX=1
WT_MINSIZEY=-1 WT_MINSIZEY=999
WT_MODE_GPYK=0 WT_MODE_GPYK=0
WT_NEWLI_MNLEFT=0 WT_NEWLI_MNLEFT=0
WT_NEWLI_MNTOP=0 WT_NEWLI_MNTOP=0
WT_POSITION_LEFT=26 WT_POSITION_LEFT=78
WT_POSITION_TOP=26 WT_POSITION_TOP=78
WT_SAVEACCOUNT=0 WT_SAVEACCOUNT=0
WT_SOUND_ALARM=1 WT_SOUND_ALARM=1
WT_TONGXUN=0 WT_TONGXUN=0

View File

@ -1,3 +1,4 @@
DATE=20141016
[CHANGE_TIP] [CHANGE_TIP]
GUI_CHEDAN_CONFIRM=27;no;您取消了撤单前确认提示功能。|您确定理解该项设置的用法,并愿意承担误操作的风险吗? GUI_CHEDAN_CONFIRM=27;no;您取消了撤单前确认提示功能。|您确定理解该项设置的用法,并愿意承担误操作的风险吗?
@ -202,7 +203,7 @@ JJ_UNABLEKKZQ=1
NEED_APPROPRIATENESS_MANAGE=161 NEED_APPROPRIATENESS_MANAGE=161
TJD_STAGGING_CD_TIP=<font size=16>\n撤销后该笔条件单将失效并被删除。\n确定撤销本条件单?\n</font> TJD_STAGGING_CD_TIP=<font size=16>\n撤销后该笔条件单将失效并被删除。\n确定撤销本条件单?\n</font>
WT_2016_NOTSEND_RZRQ_CX_RQFZDDMX=1 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_449_RQFZRZFZ_SUP_CHECK=0
WT_450_RQFZRZFZ_SUP_CHECK=1 WT_450_RQFZRZFZ_SUP_CHECK=1
WT_452_RQFZRZFZ_SUP_CHECK=1 WT_452_RQFZRZFZ_SUP_CHECK=1
@ -241,6 +242,7 @@ WT_DEFAULT_RZRQ_CHECK=1
WT_DISPUNITMASK=1000:780* WT_DISPUNITMASK=1000:780*
WT_DOCKHEIGHT=265 WT_DOCKHEIGHT=265
WT_DOCKRIGHT=0 WT_DOCKRIGHT=0
WT_DOCKWIDTH=
WT_DOWNDEPT=1 WT_DOWNDEPT=1
WT_DPI=1 WT_DPI=1
WT_DZDMODE=0 WT_DZDMODE=0
@ -267,9 +269,9 @@ WT_KSWTDEFAULTID=1574
WT_LASTATYPE=48 WT_LASTATYPE=48
WT_LASTCRYPTID=1110 WT_LASTCRYPTID=1110
WT_LASTLOGINTYPE=0 WT_LASTLOGINTYPE=0
WT_LASTNOTIDATE=20250619 WT_LASTNOTIDATE=20250623
WT_LASTNOTIID=578273CEA86FD408CF2FC56271B2C09B WT_LASTNOTIID=578273CEA86FD408CF2FC56271B2C09B
WT_LASTREQ_XGSGPKG_DATE=20250619 WT_LASTREQ_XGSGPKG_DATE=20250623
WT_LEFTWIDTH=229 WT_LEFTWIDTH=229
WT_LIMITINVALIDPWD=0 WT_LIMITINVALIDPWD=0
WT_LINKFAST=0 WT_LINKFAST=0
@ -279,8 +281,8 @@ WT_MAICHU_PLCL=1
WT_MAIRU_PLCL=0 WT_MAIRU_PLCL=0
WT_MASKACCOUNT=0 WT_MASKACCOUNT=0
WT_MINIWTNEW=0 WT_MINIWTNEW=0
WT_MINSIZEX=-1 WT_MINSIZEX=1
WT_MINSIZEY=-1 WT_MINSIZEY=999
WT_MODE_GPYK=0 WT_MODE_GPYK=0
WT_NEWLI_MNLEFT=0 WT_NEWLI_MNLEFT=0
WT_NEWLI_MNTOP=0 WT_NEWLI_MNTOP=0
@ -291,10 +293,11 @@ WT_NO_ZZDETAIL=1
WT_ONLINEMODE=1 WT_ONLINEMODE=1
WT_OTC_YXMR_FXXYS=1 WT_OTC_YXMR_FXXYS=1
WT_POSITION=4 WT_POSITION=4
WT_POSITION_LEFT=26 WT_POSITION_LEFT=78
WT_POSITION_TOP=26 WT_POSITION_TOP=78
WT_PROPERTY_WIDTH=204 WT_PROPERTY_WIDTH=204
WT_PTDLRZRQCHECK=0 WT_PTDLRZRQCHECK=0
WT_QQ_NEWQUICKWTMODE=
WT_QUERYREFRESH=0 WT_QUERYREFRESH=0
WT_REFRESHTIME=0 WT_REFRESHTIME=0
WT_RZRQSAVEACCOUNT=0 WT_RZRQSAVEACCOUNT=0
@ -309,6 +312,7 @@ WT_SHOWBINDINFO=2
WT_SHOWPINCERTQUESTION=首次使用SSL加密方式登录或更换登录设备的用户需要先设置证书密码。请点击?)按钮查看具体操作说明。 WT_SHOWPINCERTQUESTION=首次使用SSL加密方式登录或更换登录设备的用户需要先设置证书密码。请点击?)按钮查看具体操作说明。
WT_SHOWPINCERTQUESTION_URL=0|http://jrzd.dwstock.com:8066/policy/index.html?code=guomi WT_SHOWPINCERTQUESTION_URL=0|http://jrzd.dwstock.com:8066/policy/index.html?code=guomi
WT_SHOWPWDPROMPT=1 WT_SHOWPWDPROMPT=1
WT_SIMPLEMODE=
WT_SOUND_ALARM=1 WT_SOUND_ALARM=1
WT_SPEEDTEST_TIMEOUT=1000 WT_SPEEDTEST_TIMEOUT=1000
WT_STAGGING_TIMELIMIT=09:30|14:40 WT_STAGGING_TIMELIMIT=09:30|14:40
@ -322,7 +326,7 @@ WT_TJD_STAGGING_TIP4=
WT_TONGXUN=0 WT_TONGXUN=0
WT_UPGRADEADDR= WT_UPGRADEADDR=
WT_UPGRADEPORT=0 WT_UPGRADEPORT=0
WT_UPGRADEURL=http://xiucai-client.oss-cn-shanghai.aliyuncs.com/xiadan.exe WT_UPGRADEURL=
WT_USESPRITE=0 WT_USESPRITE=0
WT_WIDTH=1494 WT_WIDTH=1494
WT_XDATA_ACCOUNT_ENCODE=1 WT_XDATA_ACCOUNT_ENCODE=1
@ -333,7 +337,7 @@ WT_YYBIDS=0100|ʨɽ·Ӫҵ
WT_ZCSX_ENABLE=1 WT_ZCSX_ENABLE=1
WT_ZCSX_INTERVAL=1000 WT_ZCSX_INTERVAL=1000
WT_ZCSX_WT_INTERVAL=10 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_ZJHQ_FILTERBYZQDM=1
WT_ZXHQCHANGELSH_UPDATEYHSL=1 WT_ZXHQCHANGELSH_UPDATEYHSL=1
WT_ZXHQDQHY_LISTCHECK=1 WT_ZXHQDQHY_LISTCHECK=1
@ -430,6 +434,7 @@ WT_FLOATCACHE_24CFF3CF218A73AF5B8E03E92AF583D6=294tem0S2k==
WT_FLOATCACHE_455F8DD9A874134E00B9194AFCCABAB8=294tem0S2k== WT_FLOATCACHE_455F8DD9A874134E00B9194AFCCABAB8=294tem0S2k==
WT_FLOATCACHE_55771B174AC04E1CF16DA528C8F81948=294tem0S2k== WT_FLOATCACHE_55771B174AC04E1CF16DA528C8F81948=294tem0S2k==
WT_FLOATCACHE_A316D7EB89C9C6D7D0DF5EAAEA184C87=294tem0S2k== WT_FLOATCACHE_A316D7EB89C9C6D7D0DF5EAAEA184C87=294tem0S2k==
WT_FLOATCACHE_A7746BCB2D0919A6926DA76998D1F065=294tem0S2k==
WT_FLOATCACHE_C0C62A1620BA88BB7B2462A5CEC22A04=294tem0S2k== WT_FLOATCACHE_C0C62A1620BA88BB7B2462A5CEC22A04=294tem0S2k==
WT_FONTSIZE=0 WT_FONTSIZE=0
WT_HEIGHT=764 WT_HEIGHT=764
@ -438,13 +443,13 @@ WT_INVALIDPWD_LIMIT=0
WT_LEFTWIDTH=229 WT_LEFTWIDTH=229
WT_LINKFAST=0 WT_LINKFAST=0
WT_MASKACCOUNT=0 WT_MASKACCOUNT=0
WT_MINSIZEX=-1 WT_MINSIZEX=1
WT_MINSIZEY=-1 WT_MINSIZEY=999
WT_MODE_GPYK=0 WT_MODE_GPYK=0
WT_NEWLI_MNLEFT=0 WT_NEWLI_MNLEFT=0
WT_NEWLI_MNTOP=0 WT_NEWLI_MNTOP=0
WT_POSITION_LEFT=26 WT_POSITION_LEFT=78
WT_POSITION_TOP=26 WT_POSITION_TOP=78
WT_SAVEACCOUNT=0 WT_SAVEACCOUNT=0
WT_SOUND_ALARM=1 WT_SOUND_ALARM=1
WT_TONGXUN=0 WT_TONGXUN=0
@ -458,7 +463,8 @@ USERBEHAVIOR=1
WNDNAME=Ths_UserBehavior_test WNDNAME=Ths_UserBehavior_test
[WT_SERVER] [WT_SERVER]
TCP/IP_ACCOUNTTYPE0= LASTUPDATE=20141016
TCP/IP_ACCOUNTTYPE6=
TCP/IP_ADDRESS0=wtssl.dwstock.com TCP/IP_ADDRESS0=wtssl.dwstock.com
TCP/IP_ADDRESS1=58.240.173.150 TCP/IP_ADDRESS1=58.240.173.150
TCP/IP_ADDRESS2=114.94.49.59 TCP/IP_ADDRESS2=114.94.49.59
@ -487,7 +493,7 @@ TCP/IP_CRYPTPROTOCOL3=SSL
TCP/IP_CRYPTPROTOCOL4=SSL TCP/IP_CRYPTPROTOCOL4=SSL
TCP/IP_CRYPTPROTOCOL5=SSL TCP/IP_CRYPTPROTOCOL5=SSL
TCP/IP_CRYPTPROTOCOL6=SSL TCP/IP_CRYPTPROTOCOL6=SSL
TCP/IP_CUR_SERVER=0 TCP/IP_CUR_SERVER=6
TCP/IP_DEPTID0=0100 TCP/IP_DEPTID0=0100
TCP/IP_DEPTID1=0100 TCP/IP_DEPTID1=0100
TCP/IP_DEPTID2=0100 TCP/IP_DEPTID2=0100
@ -495,7 +501,7 @@ TCP/IP_DEPTID3=0100
TCP/IP_DEPTID4=0100 TCP/IP_DEPTID4=0100
TCP/IP_DEPTID5=0100 TCP/IP_DEPTID5=0100
TCP/IP_DEPTID6=0100 TCP/IP_DEPTID6=0100
TCP/IP_DEPTLIST0= TCP/IP_DEPTLIST6=
TCP/IP_DEPTNAME0=狮山路营业部 TCP/IP_DEPTNAME0=狮山路营业部
TCP/IP_DEPTNAME1=狮山路营业部 TCP/IP_DEPTNAME1=狮山路营业部
TCP/IP_DEPTNAME10=狮山路营业部 TCP/IP_DEPTNAME10=狮山路营业部
@ -559,7 +565,7 @@ TCP/IP_POWER9=0
TCP/IP_PROXYPORT=0 TCP/IP_PROXYPORT=0
TCP/IP_PROXYTYPE=0 TCP/IP_PROXYTYPE=0
TCP/IP_SERVER_NUM=7 TCP/IP_SERVER_NUM=7
TCP/IP_SITEID0= TCP/IP_SITEID6=
TCP/IP_SSLCERT_PORT0=2235 TCP/IP_SSLCERT_PORT0=2235
TCP/IP_SSLCERT_PORT1=2235 TCP/IP_SSLCERT_PORT1=2235
TCP/IP_SSLCERT_PORT10=2235 TCP/IP_SSLCERT_PORT10=2235
@ -597,7 +603,7 @@ TCP/IP_USEPROXY=0
USEDIAL=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 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=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=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 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] [CHANGE_TIP]
GUI_CHEDAN_CONFIRM=27;no;您取消了撤单前确认提示功能。|您确定理解该项设置的用法,并愿意承担误操作的风险吗? GUI_CHEDAN_CONFIRM=27;no;您取消了撤单前确认提示功能。|您确定理解该项设置的用法,并愿意承担误操作的风险吗?
@ -267,9 +268,9 @@ WT_KSWTDEFAULTID=1574
WT_LASTATYPE=48 WT_LASTATYPE=48
WT_LASTCRYPTID=1110 WT_LASTCRYPTID=1110
WT_LASTLOGINTYPE=0 WT_LASTLOGINTYPE=0
WT_LASTNOTIDATE=20250619 WT_LASTNOTIDATE=20250623
WT_LASTNOTIID=578273CEA86FD408CF2FC56271B2C09B WT_LASTNOTIID=578273CEA86FD408CF2FC56271B2C09B
WT_LASTREQ_XGSGPKG_DATE=20250619 WT_LASTREQ_XGSGPKG_DATE=20250623
WT_LEFTWIDTH=229 WT_LEFTWIDTH=229
WT_LIMITINVALIDPWD=0 WT_LIMITINVALIDPWD=0
WT_LINKFAST=0 WT_LINKFAST=0
@ -279,8 +280,8 @@ WT_MAICHU_PLCL=1
WT_MAIRU_PLCL=0 WT_MAIRU_PLCL=0
WT_MASKACCOUNT=0 WT_MASKACCOUNT=0
WT_MINIWTNEW=0 WT_MINIWTNEW=0
WT_MINSIZEX=-1 WT_MINSIZEX=1
WT_MINSIZEY=-1 WT_MINSIZEY=999
WT_MODE_GPYK=0 WT_MODE_GPYK=0
WT_NEWLI_MNLEFT=0 WT_NEWLI_MNLEFT=0
WT_NEWLI_MNTOP=0 WT_NEWLI_MNTOP=0
@ -291,8 +292,8 @@ WT_NO_ZZDETAIL=1
WT_ONLINEMODE=1 WT_ONLINEMODE=1
WT_OTC_YXMR_FXXYS=1 WT_OTC_YXMR_FXXYS=1
WT_POSITION=4 WT_POSITION=4
WT_POSITION_LEFT=26 WT_POSITION_LEFT=78
WT_POSITION_TOP=26 WT_POSITION_TOP=78
WT_PROPERTY_WIDTH=204 WT_PROPERTY_WIDTH=204
WT_PTDLRZRQCHECK=0 WT_PTDLRZRQCHECK=0
WT_QUERYREFRESH=0 WT_QUERYREFRESH=0
@ -429,6 +430,7 @@ WT_FLOATCACHE_24CFF3CF218A73AF5B8E03E92AF583D6=294tem0S2k==
WT_FLOATCACHE_455F8DD9A874134E00B9194AFCCABAB8=294tem0S2k== WT_FLOATCACHE_455F8DD9A874134E00B9194AFCCABAB8=294tem0S2k==
WT_FLOATCACHE_55771B174AC04E1CF16DA528C8F81948=294tem0S2k== WT_FLOATCACHE_55771B174AC04E1CF16DA528C8F81948=294tem0S2k==
WT_FLOATCACHE_A316D7EB89C9C6D7D0DF5EAAEA184C87=294tem0S2k== WT_FLOATCACHE_A316D7EB89C9C6D7D0DF5EAAEA184C87=294tem0S2k==
WT_FLOATCACHE_A7746BCB2D0919A6926DA76998D1F065=294tem0S2k==
WT_FLOATCACHE_C0C62A1620BA88BB7B2462A5CEC22A04=294tem0S2k== WT_FLOATCACHE_C0C62A1620BA88BB7B2462A5CEC22A04=294tem0S2k==
WT_FONTSIZE=0 WT_FONTSIZE=0
WT_HEIGHT=764 WT_HEIGHT=764
@ -437,13 +439,13 @@ WT_INVALIDPWD_LIMIT=0
WT_LEFTWIDTH=229 WT_LEFTWIDTH=229
WT_LINKFAST=0 WT_LINKFAST=0
WT_MASKACCOUNT=0 WT_MASKACCOUNT=0
WT_MINSIZEX=-1 WT_MINSIZEX=1
WT_MINSIZEY=-1 WT_MINSIZEY=999
WT_MODE_GPYK=0 WT_MODE_GPYK=0
WT_NEWLI_MNLEFT=0 WT_NEWLI_MNLEFT=0
WT_NEWLI_MNTOP=0 WT_NEWLI_MNTOP=0
WT_POSITION_LEFT=26 WT_POSITION_LEFT=78
WT_POSITION_TOP=26 WT_POSITION_TOP=78
WT_SAVEACCOUNT=0 WT_SAVEACCOUNT=0
WT_SOUND_ALARM=1 WT_SOUND_ALARM=1
WT_TONGXUN=0 WT_TONGXUN=0
@ -457,6 +459,7 @@ USERBEHAVIOR=1
WNDNAME=Ths_UserBehavior_test WNDNAME=Ths_UserBehavior_test
[WT_SERVER] [WT_SERVER]
LASTUPDATE=20141016
TCP/IP_ADDRESS0=wtssl.dwstock.com TCP/IP_ADDRESS0=wtssl.dwstock.com
TCP/IP_ADDRESS1=58.240.173.150 TCP/IP_ADDRESS1=58.240.173.150
TCP/IP_ADDRESS2=114.94.49.59 TCP/IP_ADDRESS2=114.94.49.59
@ -485,7 +488,7 @@ TCP/IP_CRYPTPROTOCOL3=SSL
TCP/IP_CRYPTPROTOCOL4=SSL TCP/IP_CRYPTPROTOCOL4=SSL
TCP/IP_CRYPTPROTOCOL5=SSL TCP/IP_CRYPTPROTOCOL5=SSL
TCP/IP_CRYPTPROTOCOL6=SSL TCP/IP_CRYPTPROTOCOL6=SSL
TCP/IP_CUR_SERVER=0 TCP/IP_CUR_SERVER=6
TCP/IP_DEPTID0=0100 TCP/IP_DEPTID0=0100
TCP/IP_DEPTID1=0100 TCP/IP_DEPTID1=0100
TCP/IP_DEPTID2=0100 TCP/IP_DEPTID2=0100
@ -593,7 +596,7 @@ TCP/IP_USEPROXY=0
USEDIAL=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 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=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=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 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: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: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-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 from hashlib import md5
import pywinauto import pywinauto
import pyautogui import pyautogui
import requests
from sqlalchemy import create_engine from sqlalchemy import create_engine
import pandas as pd
import logging import logging
import time
import sys
import smtplib import smtplib
from email.mime.text import MIMEText from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication from email.mime.application import MIMEApplication
import os
import uuid import uuid
import redis import redis
import ctypes import ctypes
import platform import platform
import re import re
import subprocess
import winreg import winreg
import random import random
import sys import sys
@ -26,20 +20,17 @@ import datetime
import pandas as pd import pandas as pd
import os import os
from openpyxl import load_workbook
import subprocess
import time
import requests
import requests import requests
import subprocess import subprocess
import time import time
import logging
from pathlib import Path from pathlib import Path
root_path = Path(__file__).parent root_path = Path(__file__).parent
# 初始化日志
logger = logging.getLogger(__name__)
def is_admin() -> bool: def is_admin() -> bool:
@ -192,7 +183,7 @@ def connect_wifi(ssid: str = 'MaxEntropy', password: str = 'cskj12345678') -> bo
try: try:
os.remove(profile_path) os.remove(profile_path)
except Exception as e: 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: except Exception:
pass pass
#启动软件进程,输入账号密码
print('Start login')
app = pywinauto.Application().start(proxifier_path,timeout=3) 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: try:
# Alt键 - 激活菜单栏 # Alt键 - 激活菜单栏
pyautogui.keyDown('alt') pyautogui.keyDown('alt')
pyautogui.keyUp('alt') pyautogui.keyUp('alt')
# Tab键 - 第一次
pyautogui.press('tab') pyautogui.press('tab')
pyautogui.press('enter') # Enter键 - 第一次打开Profile菜单
# Enter键 - 第一次打开Profile菜单
pyautogui.press('enter') pyautogui.press('enter')
pyautogui.press('enter') # Enter键 - 第三次打开Proxy Servers菜单
# # Tab键 - 第二次
pyautogui.press('enter')
# Enter键 - 第三次打开Proxy Servers菜单
pyautogui.press('enter')
except Exception as e: except Exception as e:
print(f"操作出错: {e}") logger.error(f"操作出错: {e}")
print("请手动检查窗口状态后重试") logger.error("请手动检查窗口状态后重试")
# 输入ip和端口 # 输入ip和端口
try: try:
time.sleep(0.1) time.sleep(0.1)
print('Start input ip and port')
pyautogui.typewrite(proxy_ip) pyautogui.typewrite(proxy_ip)
pyautogui.press('tab') pyautogui.press('tab')
time.sleep(0.1) time.sleep(0.1)
pyautogui.typewrite(proxy_port) pyautogui.typewrite(str(proxy_port))
pyautogui.press('enter') pyautogui.press('enter')
pyautogui.press('tab') pyautogui.press('tab')
pyautogui.press('tab') pyautogui.press('tab')
@ -262,7 +236,7 @@ def set_proxy(proxy_ip: str, proxy_port: int):
pyautogui.press('tab') pyautogui.press('tab')
pyautogui.press('enter') pyautogui.press('enter')
except Exception as e: 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') 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): 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.WIN_REGISTRY_PATH = r"SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"
self.logger = logging.getLogger(__name__)
def is_admin(self): def is_admin(self):
""" """
@ -777,20 +742,20 @@ class SetMac(object):
:return: :return:
""" """
if ctypes.windll.shell32.IsUserAnAdmin() == 0: 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() sys.exit()
else: else:
print('admin') self.logger.info('admin')
def get_macinfos(self): def get_macinfos(self):
""" """
查看所有mac信息 查看所有mac信息
:return: :return:
""" """
print('=' * 50) self.logger.info('=' * 50)
mac_info = subprocess.check_output('GETMAC /v /FO list', stderr=subprocess.STDOUT) mac_info = subprocess.check_output('GETMAC /v /FO list', stderr=subprocess.STDOUT)
mac_info = mac_info.decode('gbk') 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" 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 = subprocess.check_output('GETMAC /v /FO list', stderr=subprocess.STDOUT)
mac_info = mac_info.decode('gbk') mac_info = mac_info.decode('gbk')
print(mac_info)
search = re.search(r'(WLAN)\s+网络适配器: (.+)\s+物理地址:', 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 ('', '') target_name, target_device = (search.group(1), search.group(2).strip()) if search else ('', '')
if not all([target_name, target_device]): if not all([target_name, target_device]):
print('Cannot find the target device') self.logger.error('Cannot find the target device')
sys.exit() sys.exit()
print(target_name, target_device) self.logger.info(target_name, target_device)
return target_device return target_device
def get_network_adapter_info(self): def get_network_adapter_info(self):
@ -849,10 +813,10 @@ class SetMac(object):
result[index] = name result[index] = name
return result return result
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print(f"命令执行失败,错误代码: {e.returncode}") self.logger.error(f"命令执行失败,错误代码: {e.returncode}")
print(e.output) self.logger.error(e.output)
except Exception as e: except Exception as e:
print(f"发生异常: {e}") self.logger.error(f"发生异常: {e}")
return [] return []
def set_mac_address(self, target_device, new_mac): 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): 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 return
# Locate adapter's registry and update network address (mac) # Locate adapter's registry and update network address (mac)
@ -905,7 +869,7 @@ class SetMac(object):
raise err raise err
if adapter_path is None: if adapter_path is None:
print('Device not found.') self.logger.error('Device not found.')
winreg.CloseKey(key) winreg.CloseKey(key)
winreg.CloseKey(reg_hdl) winreg.CloseKey(reg_hdl)
return return
@ -918,8 +882,6 @@ class SetMac(object):
winreg.CloseKey(key) winreg.CloseKey(key)
winreg.CloseKey(reg_hdl) 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) self.restart_adapter(target_index, target_device)
def restart_adapter(self, 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: if one_mac not in used_mac:
r.rpush('Mac', one_mac) r.rpush('Mac', one_mac)
break break
print('1111111', one_mac) self.logger.info('random mac:', one_mac)
return one_mac return one_mac

View File

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