能否通过Selenium登录应用获取Bearer Token用于API调用?
解决方案:获取登录后的Bearer Token(针对加盐密码未知场景)
一、通过Selenium登录后提取Token(可行且直接)
你已经尝试过JavascriptExecutor,其实可以从几个常见存储位置入手:
LocalStorage/SessionStorage提取:多数前端会把Bearer Token存在这两个地方,用Selenium执行JS直接读取:
// Java示例:读取LocalStorage中的认证Token String bearerToken = (String) ((JavascriptExecutor) driver).executeScript("return localStorage.getItem('authToken');");# Python示例:读取SessionStorage中的Bearer Token bearer_token = driver.execute_script("return sessionStorage.getItem('bearerToken');")提示:键名可能是
token、authToken、bearerToken这类,先打开浏览器F12的Application面板确认具体键名。Cookie提取:如果Token存在Cookie里,直接获取对应Cookie的值:
Cookie tokenCookie = driver.manage().getCookieNamed("auth_token"); String bearerToken = tokenCookie.getValue();token_cookie = driver.get_cookie('auth_token') bearer_token = token_cookie['value']捕获登录请求响应:登录时打开F12的Network面板,找到登录接口的响应(比如
/api/login),查看响应头或响应体里的Token。用Selenium配合浏览器性能日志,或者代理工具捕获这个请求的响应内容,从中提取Token。
二、关于加盐密码生成器(不推荐,难度极高)
不清楚加盐逻辑的话,这条路基本走不通:
- 加盐逻辑可能是前端动态生成盐(比如结合时间戳、请求返回的随机值),或者用特定加密算法(MD5、SHA256+固定盐),你需要逆向前端JS代码才能还原,但这不仅耗时,还可能涉及应用的安全限制。
- 就算你抓包拿到某次加密后的密码,只要盐是动态的,下次登录这个加密值就失效了,没法复用。
总结
优先用Selenium登录后从LocalStorage/SessionStorage或Cookie提取Token,这是最省心的方案。如果这些位置都没有,再考虑捕获登录请求的响应来获取Token。
内容的提问来源于stack exchange,提问作者Anil Tambe
相关产品推荐
相关产品推荐

