欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > selenium之Token

selenium之Token

2025/4/19 15:50:03 来源:https://blog.csdn.net/weixin_40137210/article/details/147185065  浏览:    关键词:selenium之Token

什么是Token

Token 也是一种用于身份验证和授权的凭证,但与 Cookie 有一些关键区别。通常,Token 是由服务器生成的一串加密字符串,客户端(如浏览器或移动应用)在用户成功登录后会收到这个 Token,并将其存储在本地(例如,LocalStorageSessionStorage或 Cookie 中)。

Token的主要用途和特点

  • 无状态性(Stateless):服务器本身不存储token的状态,每一次请求时,客户端都会把token发送给服务器,服务器通过验证token的有效性来确定用户身份
  • 跨域友好(Cross-Origin Friendly):Token一般不依赖于特定的域名,因此更好的再不同域或子域共享
  • 安全性增强 (Enhanced Security):特别是像 JWT (JSON Web Tokens) 这样的 Token,包含了签名信息,可以防止篡改。
  • 适用范围广(Broader Applicability):Token不仅限于浏览器,也常用于移动应用、API接口等身份验证

常见的Token存储方式

  • LocalStorage/SessionStorage:通过JavaScript 存储在浏览器本地、或者会话中
  • Cookie:也可以把Token存储在Cookie中,但是需要注意安全性;例如设置 HttpOnlySecure 标志)。
怎么获取、新增、删除Token

由于 Token 通常存储在LocalStorage、SessionStorage或 Cookie 中,Selenium 获取和管理 Token 的方式取决于其存储位置。

import os
import timefrom selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Serviceclass browser_token:def __init__(self, path, url, options):self.path = pathself.service = Service(path)self.options = optionsself.driver = webdriver.Chrome(service=self.service, options=self.options)self.driver.get(url)def close(self):time.sleep(5)self.driver.quit()# 假设Token存储在BAIDUID_BFESS里面的valuedef get_token_from_cookie(self):all_cookies = self.driver.get_cookies()BAIDUID_BFESS = Nonefor cookie in all_cookies:if cookie['name'] == 'BAIDUID_BFESS':BAIDUID_BFESS = cookie['value']breakif BAIDUID_BFESS:print(f"获取到的 Token (从 Cookie 中): {BAIDUID_BFESS}")else:print("未在 Cookie 中找到名为 'BAIDUID_BFESS' 的 Token")# 从 LocalStorage中获取 Token(假设 Token 的 key 是 'TY_DEVICE_N_ID')def get_token_from_localstorage(self):token_from_local_storage = self.driver.execute_script("return window.localStorage.getItem('TY_DEVICE_N_ID');")if token_from_local_storage:print(f"获取到的 Token (从 LocalStorage 中): {token_from_local_storage}")else:print("未在 LocalStorage 中找到名为 'TY_DEVICE_N_ID' 的 Token")# 从 SessionStorage 获取 Token (假设 Token 的 key 是 '_bl_sid')def get_token_from_sessionstorage(self):token_from_session_storage = self.driver.execute_script("return window.sessionStorage.getItem('_bl_sid');")if token_from_session_storage:print(f"获取到的 Token (从 SessionStorage 中): {token_from_session_storage}")else:print("未在 SessionStorage 中找到名为 '_bl_sid' 的 Token")## 添加 Token 到 LocalStoragedef add_token_into_localstorage(self):token_to_add_local = "my_local_token_value"self.driver.execute_script(f"window.localStorage.setItem('authToken', '{token_to_add_local}');")print(f"已将 Token '{token_to_add_local}' 添加到 LocalStorage")# 获取并打印 LocalStorage 中的 Tokenretrieved_token_local = self.driver.execute_script("return window.localStorage.getItem('authToken');")print(f"从 LocalStorage 获取的 Token: {retrieved_token_local}")# 添加 Token 到 SessionStoragedef add_token_into_sessionstorage(self):token_to_add_session = "my_session_token_value"self.driver.execute_script(f"window.sessionStorage.setItem('sessionToken', '{token_to_add_session}');")print(f"已将 Token '{token_to_add_session}' 添加到 SessionStorage")# 获取并打印 SessionStorage 中的 Tokenretrieved_token_session = self.driver.execute_script("return window.sessionStorage.getItem('sessionToken');")print(f"从 SessionStorage 获取的 Token: {retrieved_token_session}")# 假设LocalStorage 中存在 'my_local_token_value'。并且删除def del_token_from_localstorage(self):self.driver.execute_script("window.localStorage.removeItem('my_local_token_value');")print("已从 LocalStorage 删除 'my_local_token_value'")# 假设SessionStorage 中存在 'my_session_token_value'。并且删除def del_token_from_sessionstorage(self):self.driver.execute_script("window.localStorage.removeItem('my_session_token_value');")print("已从 LocalStorage 删除 'my_session_token_value'")if __name__ == '__main__':serve_path = r'D:\Code_Study\driver\chromedriver-win64\chromedriver.exe'url = "https://mp.csdn.net/mp_blog/manage/article?"options = Options()options.debugger_address = "127.0.0.1:9222"browser = browser_token(serve_path, url, options)# browser.get_token_from_cookie()browser.get_token_from_localstorage()browser.get_token_from_sessionstorage()browser.add_token_into_localstorage()browser.add_token_into_sessionstorage()browser.del_token_from_localstorage()browser.del_token_from_sessionstorage()browser.get_token_from_localstorage()browser.get_token_from_sessionstorage()browser.close()
理解 Cookie 和 Token 的概念以及它们在 Web 应用中的作用对于自动化测试至关重要。Selenium 提供了管理 Cookie 的直接方法,并通过执行 JavaScript 代码的能力,使得我们也能有效地处理存储在 LocalStorage 或 SessionStorage 中的 Token。掌握这些技术,可以帮助我们更好地模拟用户行为、维护会话状态,并进行更全面和可靠的自动化测试。在实际应用中,你需要根据目标 Web 应用的具体实现来选择合适的方法来获取和管理这些身份凭证。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com