如何从Chrome扩展获取Robinhood API的本地授权令牌?
获取Robinhood本地授权令牌的可行方案
以下是几种能帮你获取Robinhood本地授权令牌的实用方法,适配Chrome扩展的运行逻辑:
从DOM存储(localStorage/sessionStorage)读取
Robinhood网页端通常会把授权令牌存在localStorage或sessionStorage中,你可以通过content script直接访问这些存储:- 在扩展的
manifest.json中配置content script权限和目标域名:{ "content_scripts": [ { "matches": ["https://*.robinhood.com/*"], "js": ["content.js"] } ], "permissions": ["https://*.robinhood.com/*"] } - 在
content.js中读取存储并发送给background脚本:// 先在浏览器控制台确认存储键名(比如可能是"auth_token"等) const authToken = localStorage.getItem("auth_token") || sessionStorage.getItem("auth_token"); if (authToken) { chrome.runtime.sendMessage({ type: "ROBINHOOD_TOKEN", token: authToken }, () => { console.log("令牌已发送至background"); }); } - 在
background.js中接收令牌:chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { if (message.type === "ROBINHOOD_TOKEN") { const token = message.token; // 此处可使用令牌调用Robinhood API console.log("获取到授权令牌:", token); sendResponse({ status: "success" }); } });
- 在扩展的
注入脚本读取页面全局变量
如果令牌存在于页面的全局window对象中(你在控制台能直接访问到的变量),可以通过注入脚本到页面上下文获取:
在content.js中添加以下代码:// 创建注入脚本 const script = document.createElement('script'); script.textContent = ` // 替换成你在控制台找到的全局变量名 const token = window.robinhoodAuthToken; window.postMessage({ type: 'ROBINHOOD_TOKEN_FROM_PAGE', token }, '*'); `; document.head.appendChild(script); script.remove(); // 监听页面发送的消息 window.addEventListener('message', (event) => { if (event.source === window && event.data.type === 'ROBINHOOD_TOKEN_FROM_PAGE') { chrome.runtime.sendMessage({ type: "ROBINHOOD_TOKEN", token: event.data.token }); } });检查Cookie中的令牌
若网站将令牌存在Cookie里,可通过Chrome的cookiesAPI获取:- 在
manifest.json中添加对应权限:{ "permissions": ["cookies", "https://*.robinhood.com/*"] } - 在
background.js中获取Cookie:chrome.cookies.get({ url: "https://robinhood.com", name: "auth_cookie_name" }, (cookie) => { if (cookie) { const token = cookie.value; // 此处可使用令牌调用API } });
注意:需先在浏览器Application标签的Cookie列表中找到对应的Cookie名称。
- 在
内容的提问来源于stack exchange,提问作者Skate to Eat
相关产品推荐
相关产品推荐

