You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python+Selenium通过token登录Discord localStorage设置失效求助

问题原因
  • 域名上下文不匹配:localStorage是域名隔离的,执行写入脚本时如果浏览器当前页面不是https://discord.com下的页面(比如默认空白页about:blank),写入的token会归属到当前页面对应域名,自然在Discord域名的存储下无法找到。
  • token存储格式不符合要求:Discord要求localStorage中存储的token必须是带双引号包裹的字符串,如果直接写入纯token字符串,Discord前端初始化时会判定格式非法,自动清除该字段,这是写入后找不到字段的核心原因。
  • 写入时机过早:如果刚调用driver.get()加载Discord页面就立刻执行写入,页面上下文还未完成初始化,写入操作会被Discord的初始化逻辑覆盖。
解决方法

按照以下步骤调整代码即可正常写入token实现登录:

  1. 先加载Discord登录页面,等待页面初始化完成,确保当前上下文属于Discord域名
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import json

driver = webdriver.Chrome()
# 先加载Discord登录页
driver.get("https://discord.com/login")
# 等待登录页元素加载完成,确认上下文就绪
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "email")))
  1. 写入token时自动添加双引号包裹,推荐用json.dumps处理避免转义错误
your_discord_token = "替换为你实际的token值"
# 用参数传递的方式执行脚本更安全,避免特殊字符导致的语法错误
driver.execute_script(
    "window.localStorage.setItem(arguments[0], arguments[1]);",
    "token",
    json.dumps(your_discord_token)
)
  1. 写入完成后刷新页面触发Discord的自动登录校验
driver.refresh()
# 可选:等待登录成功后的服务器列表加载,确认登录生效
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CSS_SELECTOR, '[aria-label="服务器"]')))
额外说明

你原有代码中的return不影响写入逻辑,localStorage.setItem本身没有返回值,去掉即可。

内容的提问来源于stack exchange,提问作者Hadi Ayoub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 05:48:04