Java版Selenium如何执行Chrome开发者工具控制台JS代码实现Discord登录
Java Selenium 实现Discord Token登录的操作步骤
实现原理
Java Selenium 内置JavascriptExecutor接口支持在浏览器上下文执行自定义JS代码,你只需要先导航到Discord站点,再传入你的账号token执行对应登录脚本即可。
完整代码示例
import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.ExpectedConditions; import java.time.Duration; public class DiscordTokenLogin { public static void main(String[] args) { // 初始化ChromeDriver WebDriver driver = new ChromeDriver(); try { // 1. 导航到Discord登录页 driver.get("https://discord.com/login"); // 2. 等待页面完全加载 WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); wait.until(ExpectedConditions.jsReturnsValue("return document.readyState === 'complete'")); // 3. 替换为你自己的Discord账号token String yourDiscordToken = "替换为你的实际token"; // 4. 构造登录JS脚本 String loginScript = """ function login(token) { setInterval(() => { document.body.appendChild(document.createElement `iframe`).contentWindow.localStorage.token = `"${token}"` }, 50); setTimeout(() => { location.reload(); }, 2500); } login(arguments[0]); """; // 5. 执行JS脚本 JavascriptExecutor jsExecutor = (JavascriptExecutor) driver; jsExecutor.executeScript(loginScript, yourDiscordToken); // 6. 等待页面重载完成,之后即可操作已登录的账号 Thread.sleep(3000); // 也可以用显式等待判断登录后的元素是否出现,稳定性更高 // wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("[aria-label='用户设置']"))); } catch (Exception e) { e.printStackTrace(); } finally { // 按需决定是否关闭driver // driver.quit(); } } }
注意事项
- 必须在Discord官方域名下执行JS脚本,否则localStorage的写入不会生效,无法完成登录
- 用
arguments[0]传入token可以自动处理字符串转义,避免手动拼接JS导致的引号冲突问题 - Discord官方禁止非官方客户端/自动化账号操作,该方法存在账号封禁风险,请自行评估使用
内容的提问来源于stack exchange,提问作者Vinesh Rajpurohit
相关产品推荐
相关产品推荐

