修改通知时间为晚上10点,添加cookie保存功能,按用户和域名区分保存
This commit is contained in:
+73
-49
@@ -4,7 +4,7 @@ from tkinter import ttk, messagebox
|
||||
import json
|
||||
import os
|
||||
import logging
|
||||
from DrissionPage import Chromium, ChromiumOptions
|
||||
from DrissionPage import ChromiumPage, ChromiumOptions
|
||||
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
@@ -25,8 +25,7 @@ class CookieExtractorApp:
|
||||
self.root.geometry("600x250")
|
||||
self.root.resizable(True, True)
|
||||
|
||||
self.browser = None
|
||||
self.tab = None
|
||||
self.page = None
|
||||
|
||||
self._create_widgets()
|
||||
|
||||
@@ -64,6 +63,18 @@ class CookieExtractorApp:
|
||||
ttk.Label(status_frame, text="状态:").pack(side=tk.LEFT, padx=5)
|
||||
ttk.Label(status_frame, textvariable=self.status_var, foreground="blue").pack(side=tk.LEFT, padx=5)
|
||||
|
||||
def _init_browser(self):
|
||||
"""初始化浏览器"""
|
||||
co = ChromiumOptions()
|
||||
co.set_browser_path(r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")
|
||||
self.page = ChromiumPage(addr_or_opts=co)
|
||||
|
||||
def _wait_page_loaded(self, timeout=30):
|
||||
"""等待页面加载完成"""
|
||||
if self.page:
|
||||
self.page.wait.doc_loaded(timeout=timeout)
|
||||
self.page.ele('tag:body', timeout=timeout)
|
||||
|
||||
def open_website(self):
|
||||
"""打开指定网站"""
|
||||
url = self.url_var.get().strip()
|
||||
@@ -82,24 +93,13 @@ class CookieExtractorApp:
|
||||
self.status_var.set("正在打开浏览器...")
|
||||
self.root.update()
|
||||
|
||||
co = ChromiumOptions()
|
||||
co.set_browser_path(r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")
|
||||
co.set_argument('--no-sandbox')
|
||||
co.set_argument('--disable-dev-shm-usage')
|
||||
|
||||
self.browser = Chromium(co)
|
||||
self.tab = self.browser.new_tab()
|
||||
self._init_browser()
|
||||
|
||||
self.status_var.set(f"正在访问: {url}")
|
||||
self.root.update()
|
||||
|
||||
self.tab.get(url)
|
||||
|
||||
self.status_var.set("等待页面加载...")
|
||||
self.root.update()
|
||||
|
||||
self.tab.wait.load_start()
|
||||
self.tab.wait.doc_loaded()
|
||||
self.page.get(url)
|
||||
self._wait_page_loaded()
|
||||
|
||||
self.status_var.set(f"已打开: {url}")
|
||||
self.save_button.config(state=tk.NORMAL)
|
||||
@@ -113,16 +113,15 @@ class CookieExtractorApp:
|
||||
|
||||
def save_cookies(self):
|
||||
"""保存当前的cookie信息,并强制关闭浏览器"""
|
||||
if not self.browser or not self.tab:
|
||||
if not self.page:
|
||||
messagebox.showerror("错误", "请先打开网站")
|
||||
return
|
||||
|
||||
try:
|
||||
self.status_var.set("正在提取cookies...")
|
||||
self.status_var.set("正在保存Cookies...")
|
||||
self.root.update()
|
||||
|
||||
cookies = self.browser.cookies()
|
||||
logger.info(f"成功提取 {len(cookies)} 个 cookies")
|
||||
cookies = self.page.cookies()
|
||||
|
||||
data = {
|
||||
"cookies": cookies,
|
||||
@@ -133,13 +132,12 @@ class CookieExtractorApp:
|
||||
with open(output_file, 'w', encoding='utf-8') as f:
|
||||
json.dump(data, f, indent=2, ensure_ascii=False)
|
||||
|
||||
self.status_var.set("正在关闭浏览器...")
|
||||
self.root.update()
|
||||
self.page.quit()
|
||||
self.page = None
|
||||
self.save_button.config(state=tk.DISABLED)
|
||||
|
||||
self._cleanup_browser()
|
||||
|
||||
self.status_var.set(f"数据已保存到: {output_file}")
|
||||
messagebox.showinfo("成功", f"已成功保存 {len(cookies)} 个cookie到: {output_file}\n\n浏览器已关闭")
|
||||
self.status_var.set(f"Cookies已保存到 {output_file}")
|
||||
messagebox.showinfo('成功', 'Cookies保存成功,浏览器已关闭')
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"保存cookies失败: {e}")
|
||||
@@ -148,7 +146,8 @@ class CookieExtractorApp:
|
||||
self._cleanup_browser()
|
||||
|
||||
def import_cookies(self):
|
||||
"""打开浏览器,导入cookie信息,然后打开指定网站"""
|
||||
"""打开浏览器,导入cookie和localStorage信息,然后打开指定网站"""
|
||||
import time
|
||||
try:
|
||||
output_file = "cookie_data.json"
|
||||
if not os.path.exists(output_file):
|
||||
@@ -163,6 +162,7 @@ class CookieExtractorApp:
|
||||
|
||||
url = data.get("url", "")
|
||||
cookies = data.get("cookies", [])
|
||||
local_storage = data.get("local_storage", {})
|
||||
|
||||
if not url:
|
||||
url = self.url_var.get().strip()
|
||||
@@ -179,17 +179,16 @@ class CookieExtractorApp:
|
||||
self.status_var.set("正在打开浏览器...")
|
||||
self.root.update()
|
||||
|
||||
co = ChromiumOptions()
|
||||
co.set_browser_path(r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")
|
||||
co.set_argument('--no-sandbox')
|
||||
co.set_argument('--disable-dev-shm-usage')
|
||||
self._init_browser()
|
||||
|
||||
self.browser = Chromium(co)
|
||||
self.tab = self.browser.new_tab()
|
||||
|
||||
self.status_var.set("正在准备环境...")
|
||||
self.status_var.set("等待浏览器就绪...")
|
||||
self.root.update()
|
||||
self.tab.get("about:blank")
|
||||
self.page.get("about:blank")
|
||||
time.sleep(1)
|
||||
|
||||
from urllib.parse import urlparse
|
||||
parsed = urlparse(url)
|
||||
domain = parsed.netloc
|
||||
|
||||
if cookies:
|
||||
self.status_var.set("正在导入cookies...")
|
||||
@@ -201,25 +200,51 @@ class CookieExtractorApp:
|
||||
if not cookie.get('name') or not cookie.get('value'):
|
||||
continue
|
||||
|
||||
cookie.setdefault('path', '/')
|
||||
cookie.setdefault('httpOnly', False)
|
||||
cookie.setdefault('secure', False)
|
||||
cookie_dict = {
|
||||
'name': cookie.get('name'),
|
||||
'value': cookie.get('value'),
|
||||
'domain': cookie.get('domain', domain),
|
||||
'path': cookie.get('path', '/')
|
||||
}
|
||||
|
||||
self.browser.set.cookies([cookie])
|
||||
self.page.set.cookies(cookie_dict)
|
||||
success_count += 1
|
||||
except Exception as e:
|
||||
logger.error(f"导入cookie失败: {cookie.get('name')} - {e}")
|
||||
|
||||
logger.info(f"成功导入 {success_count} 个 cookies")
|
||||
|
||||
if local_storage:
|
||||
self.status_var.set("正在导入localStorage...")
|
||||
self.root.update()
|
||||
|
||||
ls_count = 0
|
||||
for ls_domain, items in local_storage.items():
|
||||
try:
|
||||
for key, value in items.items():
|
||||
try:
|
||||
self.page.set.local_storage(key, value)
|
||||
ls_count += 1
|
||||
except Exception as e:
|
||||
logger.error(f"导入localStorage失败: {key} - {e}")
|
||||
except Exception as e:
|
||||
logger.error(f"导入localStorage域失败: {ls_domain} - {e}")
|
||||
|
||||
logger.info(f"成功导入 {ls_count} 个 localStorage")
|
||||
|
||||
self.status_var.set(f"正在访问: {url}")
|
||||
self.root.update()
|
||||
self.tab.get(url)
|
||||
self.page.get(url)
|
||||
self._wait_page_loaded()
|
||||
|
||||
self.status_var.set("等待页面加载...")
|
||||
self.status_var.set("刷新页面验证登录状态...")
|
||||
self.root.update()
|
||||
self.tab.wait.load_start()
|
||||
self.tab.wait.doc_loaded()
|
||||
for i in range(3):
|
||||
self.page.refresh()
|
||||
self._wait_page_loaded()
|
||||
time.sleep(1)
|
||||
self.status_var.set(f"刷新第 {i+1} 次...")
|
||||
self.root.update()
|
||||
|
||||
self.url_var.set(url)
|
||||
self.status_var.set(f"已导入并打开: {url}")
|
||||
@@ -237,14 +262,13 @@ class CookieExtractorApp:
|
||||
self.root.destroy()
|
||||
|
||||
def _cleanup_browser(self):
|
||||
if self.browser:
|
||||
if self.page:
|
||||
try:
|
||||
self.browser.quit()
|
||||
self.page.quit()
|
||||
except Exception as e:
|
||||
logger.error(f"关闭浏览器失败: {e}")
|
||||
finally:
|
||||
self.browser = None
|
||||
self.tab = None
|
||||
self.page = None
|
||||
self.save_button.config(state=tk.DISABLED)
|
||||
self.status_var.set("就绪")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user