From a0d874c03461735ef532bcb3f16afaacda0fe955 Mon Sep 17 00:00:00 2001 From: Yuukiy <76897913+Yuukiy@users.noreply.github.com> Date: Sun, 19 Nov 2023 20:37:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E8=BF=9BCookies=E6=8F=90=E5=8F=96?= =?UTF-8?q?=E5=8A=9F=E8=83=BD:=20=E5=8D=B3=E4=BD=BF=E9=81=87=E5=88=B0?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E4=B9=9F=E5=B0=9D=E8=AF=95=E5=AE=8C=E6=89=80?= =?UTF-8?q?=E6=9C=89=E7=9A=84=E6=B5=8F=E8=A7=88=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/chromium.py | 29 ++++++++++++++++++++++------- core/config.ini | 2 +- core/file.py | 2 +- web/javdb.py | 6 ++---- 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/core/chromium.py b/core/chromium.py index 3bae1fa97..5903a70bc 100644 --- a/core/chromium.py +++ b/core/chromium.py @@ -1,17 +1,24 @@ """解析Chromium系浏览器Cookies的相关函数""" import os +import sys import json import base64 import sqlite3 +import logging from glob import glob from shutil import copyfile from datetime import datetime +__all__ = ['get_browsers_cookies'] + + import win32crypt from Crypto.Cipher import AES +sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) +import core.config # to init the logging module -__all__ = ['get_browsers_cookies'] +logger = logging.getLogger(__name__) class Decrypter(): @@ -39,6 +46,7 @@ def get_browsers_cookies(): } LocalAppDataDir = os.getenv('LOCALAPPDATA') all_browser_cookies = [] + exceptions = [] for brw, path in user_data_dirs.items(): user_dir = LocalAppDataDir + path cookies_files = glob(user_dir+'/*/Cookies') + glob(user_dir+'/*/Network/Cookies') @@ -48,12 +56,19 @@ def get_browsers_cookies(): decrypter = Decrypter(key) for file in cookies_files: profile = brw + ": " + file.split('User Data')[1].split(os.sep)[1] - records = get_cookies(file, decrypter) - if records: - # 将records转换为便于使用的格式 - for site, cookies in records.items(): - entry = {'profile': profile, 'site': site, 'cookies': cookies} - all_browser_cookies.append(entry) + file = os.path.normpath(file) + try: + records = get_cookies(file, decrypter) + if records: + # 将records转换为便于使用的格式 + for site, cookies in records.items(): + entry = {'profile': profile, 'site': site, 'cookies': cookies} + all_browser_cookies.append(entry) + except Exception as e: + exceptions.append(e) + logger.debug(f"无法解析Cookies文件({e}): {file}", exc_info=True) + if len(all_browser_cookies) == 0 and len(exceptions) > 0: + raise exceptions[0] return all_browser_cookies diff --git a/core/config.ini b/core/config.ini index bac32bee5..ce43c51b8 100644 --- a/core/config.ini +++ b/core/config.ini @@ -26,7 +26,7 @@ retry = 3 timeout = 10 # 要使用的爬虫列表(汇总数据时从前到后进行) -# airav avsox fanza fc2 fc2fan javbus javdb javlib javmenu jav321 mgstage prestige +# airav avsox avwiki fanza fc2 fc2fan javbus javdb javlib javmenu jav321 msin mgstage prestige [CrawlerSelect] normal = airav,avsox,javbus,javdb,javlib,jav321,mgstage,prestige fc2 = fc2,fc2fan,javdb,msin,javmenu diff --git a/core/file.py b/core/file.py index 364cb3f76..2a7205bf4 100644 --- a/core/file.py +++ b/core/file.py @@ -164,7 +164,7 @@ def get_remaining_path_len(path): # Windows: If the length exceeds ~256 characters, you will be able to see the path/files via Windows/File Explorer, but may not be able to delete/move/rename these paths/files if cfg.NamingRule.calc_path_len_by_byte == 'auto': is_remote = is_remote_drive(path) - logger.debug(f"目标路径{['是', '不是'][is_remote]}远程文件系统") + logger.debug(f"目标路径{['不是', '是'][is_remote]}远程文件系统") cfg.NamingRule.calc_path_len_by_byte = is_remote length = len(fullpath.encode('utf-8')) if cfg.NamingRule.calc_path_len_by_byte else len(fullpath) remaining = cfg.NamingRule.max_path_len - length diff --git a/web/javdb.py b/web/javdb.py index 3828e790a..60d0002cd 100644 --- a/web/javdb.py +++ b/web/javdb.py @@ -39,12 +39,10 @@ def get_html_wrapper(url): try: cookies_pool = get_browsers_cookies() except (PermissionError, OSError) as e: - logger.warning('无法从浏览器Cookies文件获取JavDB的登录凭据(可能是安全软件在保护浏览器Cookies文件)') - logger.debug(e, exc_info=True) + logger.warning(f"无法从浏览器Cookies文件获取JavDB的登录凭据({e}),可能是安全软件在保护浏览器Cookies文件", exc_info=True) cookies_pool = [] except Exception as e: - logger.warning('获取JavDB的登录凭据时出错,你可能使用的是国内定制版等非官方Chrome系浏览器') - logger.debug(e, exc_info=True) + logger.warning(f"获取JavDB的登录凭据时出错({e}),你可能使用的是国内定制版等非官方Chrome系浏览器", exc_info=True) cookies_pool = [] if len(cookies_pool) > 0: item = cookies_pool.pop()