如何用Python获取默认浏览器名称及前10条URL历史记录
Python获取默认浏览器名称及历史记录
1. 获取系统默认浏览器名称
不同操作系统的实现逻辑不同,以下是分平台的实现方案:
Windows系统
通过读取注册表中HTTP协议关联的程序ID,映射到对应浏览器名称:
import winreg def get_default_browser_windows(): try: key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r"Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice") progid, _ = winreg.QueryValueEx(key, "Progid") winreg.CloseKey(key) browser_map = { "ChromeHTML": "Google Chrome", "FirefoxURL": "Mozilla Firefox", "IE.HTTP": "Internet Explorer", "MSEdgeHTM": "Microsoft Edge (Chromium)" } return browser_map.get(progid, "未知浏览器") except Exception as e: return f"读取失败: {str(e)}"
macOS系统
通过读取系统偏好设置中的浏览器关联信息,提取Bundle ID并映射名称:
import subprocess import plistlib def get_default_browser_macos(): try: result = subprocess.run( ["defaults", "read", "com.apple.LaunchServices/com.apple.launchservices.secure", "LSHandlers"], capture_output=True, text=True ) handlers = plistlib.loads(result.stdout.encode()) for handler in handlers: if handler.get("LSHandlerURLScheme") == "http": bundle_id = handler["LSHandlerRoleAll"] bundle_map = { "com.google.chrome": "Google Chrome", "org.mozilla.firefox": "Mozilla Firefox", "com.apple.safari": "Safari", "com.microsoft.edgemac": "Microsoft Edge" } return bundle_map.get(bundle_id, "未知浏览器") return "未知浏览器" except Exception as e: return f"读取失败: {str(e)}"
Linux系统
通过xdg-settings命令获取默认浏览器的桌面配置名,再映射为可读名称:
import subprocess def get_default_browser_linux(): try: result = subprocess.run( ["xdg-settings", "get", "default-web-browser"], capture_output=True, text=True ) browser_id = result.stdout.strip().replace(".desktop", "") desktop_map = { "google-chrome": "Google Chrome", "firefox": "Mozilla Firefox", "microsoft-edge": "Microsoft Edge", "chromium-browser": "Chromium" } return desktop_map.get(browser_id, browser_id) except Exception as e: return f"读取失败: {str(e)}"
跨平台整合调用
import sys def get_default_browser(): if sys.platform.startswith('win'): return get_default_browser_windows() elif sys.platform.startswith('darwin'): return get_default_browser_macos() elif sys.platform.startswith('linux'): return get_default_browser_linux() else: return "不支持的操作系统" # 使用示例 print(f"当前默认浏览器: {get_default_browser()}")
2. 获取默认浏览器的前10条URL历史记录
使用browser_history库可以自动识别系统默认浏览器并提取历史记录,先安装依赖:
pip install browser-history
然后运行以下代码获取前10条历史记录:
from browser_history import get_history outputs = get_history() # histories 是包含 (datetime.datetime, url) 元组的列表 top_10_history = outputs.histories[:10] for entry in top_10_history: timestamp, url = entry print(f"[{timestamp.strftime('%Y-%m-%d %H:%M:%S')}] {url}") print(f"获取到的历史记录条数: {len(top_10_history)}")
注意:部分浏览器(如Chrome)需要关闭后才能正常读取历史数据库,否则可能出现读取失败的情况。
内容的提问来源于stack exchange,提问作者Raja Muhamed
相关产品推荐
相关产品推荐

