diff --git a/.idea/auto_trade_20230130.iml b/.idea/auto_trade_20230130.iml
index 3ff576c..d4428af 100644
--- a/.idea/auto_trade_20230130.iml
+++ b/.idea/auto_trade_20230130.iml
@@ -4,7 +4,7 @@
-
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index b294604..b6da70f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/__pycache__/config.cpython-36.pyc b/__pycache__/config.cpython-36.pyc
index 277d9e5..942d5cd 100644
Binary files a/__pycache__/config.cpython-36.pyc and b/__pycache__/config.cpython-36.pyc differ
diff --git a/__pycache__/tools.cpython-36.pyc b/__pycache__/tools.cpython-36.pyc
index 20d2fff..1e5e27d 100644
Binary files a/__pycache__/tools.cpython-36.pyc and b/__pycache__/tools.cpython-36.pyc differ
diff --git a/autobasic/dw_clienttrader.py b/autobasic/dw_clienttrader.py
index 3bdc217..d3ce9a4 100644
--- a/autobasic/dw_clienttrader.py
+++ b/autobasic/dw_clienttrader.py
@@ -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)
diff --git a/autobasic/hualong_clienttrader.py b/autobasic/hualong_clienttrader.py
index a3decb4..22e7281 100644
--- a/autobasic/hualong_clienttrader.py
+++ b/autobasic/hualong_clienttrader.py
@@ -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,11 +37,14 @@ 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}'"
df_count = download_data_from_db(sql, 'ai_strategy_update_iddb')
@@ -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
@@ -520,6 +519,11 @@ class HLClientTrader:
skiprows=3, error_bad_lines=False).applymap(
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",
@@ -553,8 +557,13 @@ 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:
diff --git a/broker_xiadan/hualong/T0002/wt_cache/TcApi_Cache/HOST-115.85.254.36(443)-2.TCS b/broker_xiadan/hualong/T0002/wt_cache/TcApi_Cache/HOST-115.85.254.36(443)-2.TCS
index 49b9ae9..d763d40 100644
Binary files a/broker_xiadan/hualong/T0002/wt_cache/TcApi_Cache/HOST-115.85.254.36(443)-2.TCS and b/broker_xiadan/hualong/T0002/wt_cache/TcApi_Cache/HOST-115.85.254.36(443)-2.TCS differ
diff --git a/broker_xiadan/东吴证券金融终端独立下单/UserBehavior/CBASLog/logec308451c1d095c528cfa3c009ea7235.cbas b/broker_xiadan/东吴证券金融终端独立下单/UserBehavior/CBASLog/logec308451c1d095c528cfa3c009ea7235.cbas
new file mode 100644
index 0000000..c8147e7
Binary files /dev/null and b/broker_xiadan/东吴证券金融终端独立下单/UserBehavior/CBASLog/logec308451c1d095c528cfa3c009ea7235.cbas differ
diff --git a/broker_xiadan/东吴证券金融终端独立下单/UserBehavior/UserBehavior.ini b/broker_xiadan/东吴证券金融终端独立下单/UserBehavior/UserBehavior.ini
index ada00af..b5cb000 100644
--- a/broker_xiadan/东吴证券金融终端独立下单/UserBehavior/UserBehavior.ini
+++ b/broker_xiadan/东吴证券金融终端独立下单/UserBehavior/UserBehavior.ini
@@ -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
diff --git a/broker_xiadan/东吴证券金融终端独立下单/Xiadan_DailyAct.ini b/broker_xiadan/东吴证券金融终端独立下单/Xiadan_DailyAct.ini
index c83ff8c..ed6783e 100644
--- a/broker_xiadan/东吴证券金融终端独立下单/Xiadan_DailyAct.ini
+++ b/broker_xiadan/东吴证券金融终端独立下单/Xiadan_DailyAct.ini
@@ -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
diff --git a/broker_xiadan/东吴证券金融终端独立下单/disconnect.log b/broker_xiadan/东吴证券金融终端独立下单/disconnect.log
index 937ea84..aec70cd 100644
--- a/broker_xiadan/东吴证券金融终端独立下单/disconnect.log
+++ b/broker_xiadan/东吴证券金融终端独立下单/disconnect.log
@@ -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] Զδ
diff --git a/broker_xiadan/东吴证券金融终端独立下单/user.dat b/broker_xiadan/东吴证券金融终端独立下单/user.dat
index c4c0b82..a3aff35 100644
Binary files a/broker_xiadan/东吴证券金融终端独立下单/user.dat and b/broker_xiadan/东吴证券金融终端独立下单/user.dat differ
diff --git a/broker_xiadan/东吴证券金融终端独立下单/user.ini b/broker_xiadan/东吴证券金融终端独立下单/user.ini
index c442ff1..c776fd0 100644
--- a/broker_xiadan/东吴证券金融终端独立下单/user.ini
+++ b/broker_xiadan/东吴证券金融终端独立下单/user.ini
@@ -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
diff --git a/broker_xiadan/东吴证券金融终端独立下单/xiadan.ini b/broker_xiadan/东吴证券金融终端独立下单/xiadan.ini
index 98f4e0f..a034686 100644
--- a/broker_xiadan/东吴证券金融终端独立下单/xiadan.ini
+++ b/broker_xiadan/东吴证券金融终端独立下单/xiadan.ini
@@ -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=\nñʧЧɾ\nȷ?\n
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
diff --git a/broker_xiadan/东吴证券金融终端独立下单/xiadan.ini_bak b/broker_xiadan/东吴证券金融终端独立下单/xiadan.ini_bak
index aa3b3bb..5cc49f4 100644
--- a/broker_xiadan/东吴证券金融终端独立下单/xiadan.ini_bak
+++ b/broker_xiadan/东吴证券金融终端独立下单/xiadan.ini_bak
@@ -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
diff --git a/broker_xiadan/东吴证券金融终端独立下单/xml.log b/broker_xiadan/东吴证券金融终端独立下单/xml.log
index f83644c..d1ca6b4 100644
--- a/broker_xiadan/东吴证券金融终端独立下单/xml.log
+++ b/broker_xiadan/东吴证券金融终端独立下单/xml.log
@@ -730,3 +730,4639 @@
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+-
+
+
+
+ -
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/imgs/temp123.png b/imgs/temp123.png
index 8a62180..c1ba285 100644
Binary files a/imgs/temp123.png and b/imgs/temp123.png differ
diff --git a/imgs/temp1231.png b/imgs/temp1231.png
index 5d86462..0eb0edc 100644
Binary files a/imgs/temp1231.png and b/imgs/temp1231.png differ
diff --git a/init_proxy.py b/init_proxy.py
deleted file mode 100644
index 3b2aec9..0000000
--- a/init_proxy.py
+++ /dev/null
@@ -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, "")
- 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()
\ No newline at end of file
diff --git a/logs/13401019175.log b/logs/13401019175.log
new file mode 100644
index 0000000..10b9e0c
--- /dev/null
+++ b/logs/13401019175.log
@@ -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] 全局代理设置成功
diff --git a/logs/13593501968.log b/logs/13593501968.log
new file mode 100644
index 0000000..c8e4341
--- /dev/null
+++ b/logs/13593501968.log
@@ -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(': 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(': 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(': 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(': 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] 全局代理设置成功
diff --git a/logs/18242094506.log b/logs/18242094506.log
index 78364d2..9a5274b 100644
--- a/logs/18242094506.log
+++ b/logs/18242094506.log
@@ -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
diff --git a/mysql_table/ip_tracking.xlsx b/mysql_table/ip_tracking.xlsx
index 0c1f6a5..85b7474 100644
Binary files a/mysql_table/ip_tracking.xlsx and b/mysql_table/ip_tracking.xlsx differ
diff --git a/mysql_table/~$ip_tracking.xlsx b/mysql_table/~$ip_tracking.xlsx
new file mode 100644
index 0000000..175c166
Binary files /dev/null and b/mysql_table/~$ip_tracking.xlsx differ
diff --git a/tools.py b/tools.py
index 09011f0..aa66203 100644
--- a/tools.py
+++ b/tools.py
@@ -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')
-
- # Enter键 - 第一次(打开Profile菜单)
- pyautogui.press('enter')
+ pyautogui.press('enter') # Enter键 - 第一次(打开Profile菜单)
- # # 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
diff --git a/trade_logic.py b/trade_logic.py
index bb7e4df..56fa728 100644
--- a/trade_logic.py
+++ b/trade_logic.py
@@ -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