Python版Selenium WebDriver能否操作浏览器开发者工具提取设备ID?
使用Python Selenium提取YouTube LocalStorage中的设备ID
完全可行,你可以通过执行JavaScript获取LocalStorage中的目标键值,再解析JSON提取data字段。以下是具体实现步骤和代码:
实现步骤
- 初始化Chrome驱动并打开YouTube页面
- 执行JavaScript命令读取
localStorage中yt-remote-device-id对应的值 - 将获取到的JSON字符串解析为Python字典,提取
data字段 - 处理可能的异常(如键不存在、JSON格式错误等)
完整代码示例
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import json from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 初始化Chrome驱动(自动匹配浏览器版本) driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) # 打开YouTube主页 driver.get("https://www.youtube.com/") try: # 等待页面核心元素加载完成,确保LocalStorage已初始化 WebDriverWait(driver, 15).until( EC.presence_of_element_located((By.CSS_SELECTOR, "ytd-searchbox")) ) # 执行JS获取LocalStorage中的目标键值 device_id_raw = driver.execute_script("return window.localStorage.getItem('yt-remote-device-id');") if device_id_raw: # 解析JSON字符串 device_info = json.loads(device_id_raw) # 提取data字段内容 device_id = device_info.get("data") print(f"提取到的设备ID: {device_id}") else: print("LocalStorage中未找到yt-remote-device-id键") except json.JSONDecodeError: print("错误:yt-remote-device-id的值不是有效的JSON格式") except Exception as e: print(f"执行出错: {str(e)}") finally: # 关闭浏览器 driver.quit()
注意事项
- 确保已安装依赖包:执行
pip install selenium webdriver-manager安装所需库 - 显式等待的作用是确保页面加载完成,LocalStorage中的键已被写入,避免因页面未加载完全导致获取不到值
- 无论是否登录YouTube,该设备ID通常都会存在于LocalStorage中,这是YouTube用于标识设备的标识符
内容的提问来源于stack exchange,提问作者Wazzuper11
相关产品推荐
相关产品推荐

