diff --git a/README.md b/README.md index 6200055..c592080 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ xianyu-auto-reply/ │ ├── ai_reply_engine.py # AI智能回复引擎 │ ├── file_log_collector.py # 日志收集和管理 │ ├── config.py # 配置文件管理 -│ └── secure_confirm_ultra.py # 自动确认发货模块(加密保护) +│ └── secure_confirm_ultra.py # 自动确认发货模块(超级加密保护) ├── 🛠️ 工具模块 │ └── utils/ │ ├── xianyu_utils.py # 闲鱼API工具函数 @@ -270,7 +270,7 @@ docker rm -f xianyu-auto-reply ### 🤖 智能功能模块 - **`ai_reply_engine.py`** - AI智能回复引擎,支持多种AI模型 -- **`secure_confirm_ultra.py`** - 自动确认发货模块(加密保护) +- **`secure_confirm_ultra.py`** - 自动确认发货模块(超级加密保护) - **`file_log_collector.py`** - 日志收集和管理,提供实时日志查看 ### 🛠️ 工具模块 diff --git a/XianyuAutoAsync.py b/XianyuAutoAsync.py index 0853c4f..38ec7cb 100644 --- a/XianyuAutoAsync.py +++ b/XianyuAutoAsync.py @@ -530,7 +530,7 @@ class XianyuLive: async def get_item_info(self, item_id, retry_count=0): """获取商品信息,自动处理token失效的情况""" - if retry_count >= 3: # 最多重试3次 + if retry_count >= 4: # 最多重试3次 logger.error("获取商品信息失败,重试次数过多") return {"error": "获取商品信息失败,重试次数过多"} @@ -596,6 +596,23 @@ class XianyuLive: ) as response: res_json = await response.json() + # 检查并更新Cookie + if 'set-cookie' in response.headers: + new_cookies = {} + for cookie in response.headers.getall('set-cookie', []): + if '=' in cookie: + name, value = cookie.split(';')[0].split('=', 1) + new_cookies[name.strip()] = value.strip() + + # 更新cookies + if new_cookies: + self.cookies.update(new_cookies) + # 生成新的cookie字符串 + self.cookies_str = '; '.join([f"{k}={v}" for k, v in self.cookies.items()]) + # 更新数据库中的Cookie + await self.update_config_cookies() + logger.debug("已更新Cookie到数据库") + logger.debug(f"商品信息获取成功: {res_json}") # 检查返回状态 if isinstance(res_json, dict): @@ -603,10 +620,7 @@ class XianyuLive: # 检查ret是否包含成功信息 if not any('SUCCESS::调用成功' in ret for ret in ret_value): logger.warning(f"商品信息API调用失败,错误信息: {ret_value}") - # 处理响应中的Set-Cookie - if 'Set-Cookie' in response.headers: - logger.debug("检测到Set-Cookie,需要更新cookie") - # TODO: 实现cookie更新逻辑 + await asyncio.sleep(0.5) return await self.get_item_info(item_id, retry_count + 1) else: @@ -1077,7 +1091,7 @@ class XianyuLive: async def auto_confirm(self, order_id, retry_count=0): """自动确认发货 - 使用加密模块""" try: - # 导入超级混淆模块 + # 导入超级混淆加密模块 from secure_confirm_ultra import SecureConfirm # 创建加密确认实例 @@ -1274,7 +1288,7 @@ class XianyuLive: async def _get_api_card_content(self, rule, retry_count=0): """调用API获取卡券内容,支持重试机制""" - max_retries = 3 + max_retries = 4 if retry_count >= max_retries: logger.error(f"API调用失败,已达到最大重试次数({max_retries})") @@ -2531,7 +2545,7 @@ class XianyuLive: page_size (int): 每页数量,默认20 retry_count (int): 重试次数,内部使用 """ - if retry_count >= 3: # 最多重试3次 + if retry_count >= 4: # 最多重试3次 logger.error("获取商品信息失败,重试次数过多") return {"error": "获取商品信息失败,重试次数过多"} @@ -2603,6 +2617,23 @@ class XianyuLive: ) as response: res_json = await response.json() + # 检查并更新Cookie + if 'set-cookie' in response.headers: + new_cookies = {} + for cookie in response.headers.getall('set-cookie', []): + if '=' in cookie: + name, value = cookie.split(';')[0].split('=', 1) + new_cookies[name.strip()] = value.strip() + + # 更新cookies + if new_cookies: + self.cookies.update(new_cookies) + # 生成新的cookie字符串 + self.cookies_str = '; '.join([f"{k}={v}" for k, v in self.cookies.items()]) + # 更新数据库中的Cookie + await self.update_config_cookies() + logger.debug("已更新Cookie到数据库") + logger.info(f"商品信息获取响应: {res_json}") # 检查响应是否成功 diff --git a/secure_confirm_ultra.py b/secure_confirm_ultra.py index 5c5b641..e7ba029 100644 --- a/secure_confirm_ultra.py +++ b/secure_confirm_ultra.py @@ -2,55 +2,41 @@ 自动确认发货模块 - 超级混淆版本 代码经过多层编码和混淆处理 """ -import base64 as APWhvGwho -import zlib as ZUMHeUctH -import types as YEYVefZAzSK -import binascii as xjJqeneb +import base64 as LsWYPXmT +import zlib as oxWwRTDp +import types as AUdcGvRk +import binascii as qKAaznVW -class MyCvbqb: - """解码器类""" +class pDLWZWoi: def __init__(self): - self.GUqVZNquc = "d355231467a733244345c6a5172787b43346f48436563463f245833377a6e6c693b23376862713c477b6360367264386747517976747a467363775a545a52717672485a4a64464f607b48355647334d48514b4074563835767b463a4940345f275a5c4051457c433633605a52733d4a73316933756b273d4a55625270583b69594f666b4134516a593d603d64427234303768756352773747605d6938773951493a466946534572646973396f483451576575356f64674a7a63794a436a795d6a74437467585454463b2f253f603a4a4976474838754930325b413176303a64405645427b286e43593038635a47325254746b27505b61674175656243756579394c623263747863324c4a69354466666849434a7a7b63353a53477765766d4f66413f68403056535c4d484f6a6d66614f44734c464758677466733536607647733a77305f2033727148456431745352795d484965307f4c4c413d463d6a505a586052594a677a625453613655575961726b616852427161445d6a656b4537436252756a7163747e454858643f63725136673563316877595a7333726a4a4452756135307b4075763f246233764664675b4e425374557b6139383945656c4275594a4647456b49405979743a7f295e61544870563465337234705a7e6e626a7748354b457245416a74655036373340324f297c4e63393335654c6e6762396353616f64524642584a537a646149515c496d44415a74444942735550556f646143735957424f2e655239627a456668756e683f6a7339467d6166554b64717c4d6137544a69605f47773a5c6a61767743525b4942615f40767232666b407a69777b2d63364558767861735754314159397f6c64705135786374686238386d483943593f283077427035616a44625a4d4d4363534837773b496e6360385445587c474537744f4f267f276c4f275e47633266427b44793b496c6566614650323553663c67703b67346649473e405c496c4e485c4148574747753b67333342437c663140305855565a6a5c46625a7742797a4666574a545c637672553f6d43623231574842415647784151337958405f4d4356344a5738666b24754374366a6f264657693633616b273a447b243573586e6a6d4a457a6353334963457e4a7f42597754507e41615b243b6872794479324f4c64773748456a514639394e44313c464832524c63486c4f47643569444472336a584a6274396b234b636e4c6577385752443a7e6a5972794a485a78476d643334687469627449637b6e6852436078585b49343a5b2c637b6269793c6e497f2943584b686659347361666c69666b424a4e6174463d405f6e686a755a703f464434696268464f687a4755397f487d686d65436d415b2e4a5a51477c4541426b6852535c6f6f43576a4a4130336c6f4b6650794534314f234950377c647172686d62525d416e663446535a5b495a7777584642623375457c676e4a736169437168514353797c4536527544634441305231487573413f4a62573171674470745765447b455c6167314532676d6d4f2b2742614a50305a51454f4b46523e6563387334705b257a7071487a7a507c46407e626774535348527774517f2a68355c6b2a427f2e4149577e48414135507a5352736a5b2d4c63666a525a4d66356567477d443e6b6536705d49407463675443417a6649387b23356f4a637535507959397968675238795a5538365369425c4d696249545b62653a7778403a6532397f264e697c6559307569774857344d6a5c62663d427148524346357532784f21424239785c42473f4170523a4e4455556656643641505e425f234834627435417178317b6f6135503a577f47514753494477513757325b25365d4f613753745566366339427941455a7574386845495e497d6532435c613272393337376a663667737447494f4e444946435e674f23787477456f60335141495943515d6a586072394449605944677f2b2445707f683a75454f664272615976735a56594f6b48526f64545161643b243a675353337a6943476762723c4344434b613f493a5b6137556a5738736546617a4e6644465152437a624b45714a453d4842775636325b4930525a4469427968534f4875394f4a543368674c667842625c4638394a686371523a597e4a474f415135737133425e4f276c6b415243303d605d6a4f67353f497d60777f4031705c6131426a457e4e483d447b2b2e4661384330364c44474f28355954447842603c6753746f4741554b4a4b484c454833316e4b656a755f22445a6477345a7338363e46536b627848643653355e41474a5a44497f434a5871377632333168764537744c45697841665269607a4569436146345533336255705f285a5c69503b4e6363324a644a73595052405c6f487b6642614331507131597761447d664169327271657a42614a6b426072365143797133426d613337505541443773754148353a5a7950755a65535777563c4845667d65547255464758464372527662413e4141686478593f243f695337526c673447563c613742617e637c6335597745687a7748557551376535413073695b41387c64626441633153754077705c63423d674d6d6364784756654f69636854754c46796866567a677845693a6c485265375734765563484a5079693247337531633a57344d695e6445626632764751384f42394845615f23775956616f685b24616b2367414833795a7d6a7c6a4c407744434b4b295c6e4b44516d6b605d4a5a674736617539617e464f21376f615c64687b44475a554557624161797637614256345937497a543f63527a7453475a48455146566c6c446247365f696962427039547557643e4b28603a6537455356473c4f494a643a7034475244617a6a6a6c4f683860745257723948496f2e4331513648613972535c675136546f474a5a494a7654674a6968694a717f6a4631536b6866694f496a527b62557173796f216077707c4a66317b6b455239675039795b4a7050557173713666545246357a6a74665557635577524a607d4a413a7f6961345c6a557f695355757b4b6f2f6e4c4767575a44597c6c4343557e455655517e69796352797b467b227573797141384a446e67354a7c6861413d4657563963514e4b27403b6e6149726b264261693557394a5c44716743723d673169747549775f22543472675f2b646352794858387360373a7a713a5b266a79393538383563574765324450563d446a6a537334633576656f666e4539733948507664434b4275564f28774a46464a424f6f694371434756547d4d4d4449423462326b4271634737545e6a57474667415e60735e443730574a607a7b62316445335d6b4e426b2d4c457e6b28366553613544593647565a7a456" + self.vrCYrtTq = "d3d377b48583e6f264836734d633a5653516c45665f66426839344731386f205b683230524976655c456667463d497b236c445b493e4c613670733d477b2b23356a726f4430744b49535856364d473e4953757d4d44725f2b645337707e6754467435633d6776484a563e6661667f237372357f266f4a6732376e6b2f2571753153533347493a617739594743587536324c6f4e6c4c6e4e496b62536854307054496d607178673a5d45703d6964327c6d424055497765636e48333665385f25443f463850553548594e444274744257757051495f4a654f656d4148626f463465453f6c645977326e40353468425341333633457d667374337e4a6a5a4f63735a5e49345433777a577436403e413c67323276346c4f46717860766945455a6c6072534c466451743735726f466675343a61767f2b627a554a615d66485a7864474d42644942685e6b454d4f667548624b61477d634668583c634b455f6e645035543349374971317d6e48607a4836746c6f4b4377397c4d6b4a496a766570596a6f4847395172797b66717230523e46387355487a50566f456b213541474838714f665357363b23567457717641334c6f637e67647e665152344e40747662614f2b24633466793f64566f616058624f2364453d69334a42767c6b485c683d4e483b647745586672544f6e4f4e494572776254375e497774435c453a6d637a713855533943686d426a633159354d4d436b484864375037415d41724954624e6858746e605f203a7e477f61607977546856494469654770555837346363533a6237626b207b4267383345323c4f6a545858736c4c484f4a5566653a68546c6a7f495f4a576369447158723f2c4a49635968577f285d40524a5f22475555715765426878394334487e4d6e61516b276a674558685347687a7677397a7b474d486a46563241505a7359317c4649645c415966487a7a44385c645c6956447953643b677943623d4b63483344396a686a7d49793877445374355a4c657264464174383536425f2736577774467857647c694d69675f667a4b46566a59564267616554597373414f664759443030336f654a765a6b4a447a615f2436635139796f233a5a5f6b224b225347515c4c44433e455548757c4771786a634a76513655717a40713f63577e4f6a7d626772575d697173736d66556a66575166317a4c6f4146517477413e625462694166683e456d625c4a70366e657a5641553c64703a4c6777743a4a48364d494d685c634f277b4f22335a6a64407c40593961625a405b6836423769384c69526564557b454c4a405c497d63544c4f68444e4635515a7059734f2b6235483332737f4a757e467f6e4149595c67513f4131555367415a78507153315a6a55644773514969674a5861324857526c4a4f4b6c484b28605544365f236b6f2f4276624b283d4f457833616a763a42676734703057676766627464597675775e6458623a4c4964697549454574747f2b267f4a477e4667637b67786b23647156654372696f49543c483033574f66463f40575a7c4b2348524d63354c41565a477e6c466130383359413a4959783c6448385937476b6b6e6341776056463237767546455259403b4e685574776a7c6959473b4a787070323651377a6631573261337c64583e6c403e6439417a543b2c65605737463a533f6740317174565f687357667375545451374142607f465d617c4b4f4059335c63645078475270307161654e4758477451513c433976337641714c4e476a79747a58454f6b6c446b64635976546347626b47397f4d66434456763456565e4f663d6b607e6f647b2878655455543c69554643696d6d6569764863655763555630376b2363753a6569745746535b47537b63425f683538405f6f46693938755c6c493a7644305263527a4835327f64585b2273505a48694646624d6671486773636172616146587e46484f21524d6663365d625a45543a5574463872474c64565c4349613f2971437830784b2e6834616f2b63684754327f6e466b43566b26454257563b4969707452363737644b2733627b2f243277396e6c6032645a6836513475785462727a7378414b6c4969753b287e45663436483669633d663f4b6a716b645f41346f6277695f49793c487c42326a5154705779635a565633796d4741537d436d65587c657a45384058685c46537055663b276935324d4d6165405b277a7f2547334a4744324974733f6f2a6f4556773f416f287447564a4962594932643c67414134307b61515247627f67667637513a7a4c434e6b42455f2e667e61615237736a7539407b475135595d65523f49753869476b676d444f285a5a51583d6445435d65436a487346383b683a436956793b24505457314866327756444b625a4765433e4368435354456054703d40797658755d6a515b4d696677496072317654683959553152453775525a524e457077786754417c6f684939344268614073617f237d48607561437978686249513446717f624a47354557377a743573316f2f4336793c40534964436e4a65325332463b4b4258724e645b6b656a59454a476755303d4d6735423b2c687c684568564d6a74543275764a5679335536373e42796358467a7a745233463d4f2136446550374f2a4038675577505b296e4f433b2474795972727769584858695a554b29674e4339717c45444c63437148523f615a6b28784e4075377a5c41396b4c486b4863383d4f46626e625558724444744b2932367662407e425372576740764442403c42664775527078605379723578725738765762637b653a59787c42567365663879734246483b4943466d40536c45697c6a75565177775679576941753e6843353c4c48437e674971485f29403244423246347f696a634d67635c403f205e6056416634317836554149483645464a6668323a43683b205a7443715e69553c666653765c475c6058365643484a757a595841686055546154455237536159746353414a4156315b6c4a613d405b46415f254a5348397e49493775495455536a7c453b66514c616f294d6a4a797e6469436f227b64387e667c4a7370576f4441533376695a573e4a61373445424b2b2574795c486e6f25545341655d6e4165586d623975794e646577657241694233524731505238567a7e47305567334a7964395f4072766338647858383e664c4467366172305072737a5a4b237b233b2b2333373b21775f2f22356b2a74443a796269303877346938724534486b2758467f274162666b41537165756564747f2d6230543e6a78725f6f26365035413b4362585445693645745462434b4f41445346424e65653d64356079403c6339605f463532395751315d614557634854797151556a71636d6034586437336776436541344f414665794b20796b485464626b444455675a6559643937417561603650514a7835716559553a626c664153554139396e677e68457337364466733a62667f247e6f4a445639363730397a6e6976476b2146475856333a40363555364263715e425a5b474d464352644554355c6b64437137765447557c60315f6159544331365337324d645e6f42675572314d415c4b60597855424146724546553b254349415d673647466a7e416b6e633c4b493243526a725c6277497f2443396e48447449797664665e4a5a6a48407a567876544e69717c6071757d4a46564835524267695e4178617473533a51467373676330354d4466485d69755d62603776586e657832526a54727331673d6852645751624b43765a686f6f467e417d4936337d6c4452505b646b244b6f23726a5230375653503a563633547d45533541717a557751734f4f2f2635763b475e485646667f21417c61334e41546031317341474a533739713152737f203c6465693e4a426a6468786933365c426574415f237e6d6f23317f227460587e627446434247503a6a793e4663393f28356c42497b276d6e6f4963607731773b2733313a73483f2b61357965703f284f284342714542355a7a4147437a6541514d6445444d4d464271385d6874384a743b47375a64675b235a4034743f483b67405956337d6d6860784f625d6a71785c6e45475142727b46437a76675366646936665369354a713467565a7a456" - def ScRcLgANY(self): - """解码方法""" - # 第一步:反转 - CbYwjgc = self.GUqVZNquc[::-1] - - # 第二步:十六进制解码 - lfudkUg = bytes.fromhex(CbYwjgc) - - # 第三步:Base64解码 - BPHsSqoTwa = APWhvGwho.b64decode(lfudkUg) - - # 第四步:zlib解压 - XgrjgRdyihoN = ZUMHeUctH.decompress(BPHsSqoTwa) - - # 第五步:UTF-8解码 - tjIfqnQS = XgrjgRdyihoN.decode('utf-8') - - return tjIfqnQS + def gdVvQitT(self): + step1_var = self.vrCYrtTq[::-1] + step2_var = bytes.fromhex(step1_var) + step3_var = LsWYPXmT.b64decode(step2_var) + step4_var = oxWwRTDp.decompress(step3_var) + step5_var = step4_var.decode('utf-8') + + return step5_var - def FfLPbc(self): + def CHsKCWCD(self): """创建模块""" - TgvtbRCbyCZn = self.ScRcLgANY() - AntZnm = YEYVefZAzSK.ModuleType('secure_confirm') - exec(TgvtbRCbyCZn, AntZnm.__dict__) - return AntZnm + decoded_code = self.gdVvQitT() + module_obj = AUdcGvRk.ModuleType('secure_confirm') + exec(decoded_code, module_obj.__dict__) + return module_obj -# 创建解码器实例 -LgIDlnLUPliI = MyCvbqb() +OhPXQtOT = pDLWZWoi() -# 加载模块 -OnrJVdsaLdM = LgIDlnLUPliI.FfLPbc() +amBCLCwC = OhPXQtOT.CHsKCWCD() -# 导出类 -SecureConfirm = OnrJVdsaLdM.SecureConfirm +SecureConfirm = amBCLCwC.SecureConfirm # 清理所有变量 -del LgIDlnLUPliI -del OnrJVdsaLdM -del MyCvbqb +del OhPXQtOT +del amBCLCwC +del pDLWZWoi