本教程将指导你如何使用 Playwright 自动化浏览器操作,检查用户登录状态,并从浏览器的 localStorage 中获取登录信息(如 token)。Playwright 是一个强大的自动化测试工具,支持多种浏览器(如 Chromium、Firefox、WebKit),并提供了丰富的 API 来模拟用户操作。

1. 准备工作

1.1 安装 Playwright

首先,你需要安装 Playwright。可以通过以下命令安装:

pip install playwright

安装完成后,运行以下命令下载浏览器二进制文件:

playwright install

1.2 了解 localStorage

localStorage 是浏览器提供的一种持久化存储机制,用于在客户端存储数据。通常,登录成功后,服务器会将用户的登录凭证(如 token)存储在 localStorage 中,以便后续请求使用。

2. 编写 Python 脚本

接下来,我们将编写一个 Python 脚本来检查登录状态并获取 localStorage 中的 token

2.1 创建 Python 文件

创建一个新的 Python 文件,例如 check_login_status.py

2.2 编写代码

在文件中编写以下代码:

from playwright.sync_api import sync_playwright

def check_login_status(url):
    with sync_playwright() as p:
        # 启动浏览器(默认使用 Chromium)
        browser = p.chromium.launch(headless=False)  # headless=False 表示显示浏览器窗口
        page = browser.new_page()

        try:
            # 访问目标网页
            page.goto(url)
            print(f"正在访问: {url}")

            # 等待页面完全加载
            page.wait_for_load_state("networkidle")  # 等待网络空闲
            page.wait_for_timeout(3000)  # 额外等待 3 秒,确保页面完全加载

            # 从 localStorage 获取 token 数据
            token_data = page.evaluate("localStorage.getItem('token')")
            print("[LocalStorage] token 数据:", token_data)

            # 检查 token 是否有效
            if token_data and len(token_data.strip()) > 0:
                print("登录成功")
            else:
                print("登录失败")

        except Exception as e:
            print(f"检查登录状态时发生错误: {e}")

        finally:
            # 关闭浏览器
            browser.close()

# 调用函数检查登录状态
check_login_status("https://example.com/login")  # 替换为你的登录页面 URL

2.3 代码解释

  • sync_playwright(): 使用 Playwright 的同步 API。
  • p.chromium.launch(headless=False): 启动 Chromium 浏览器,headless=False 表示显示浏览器窗口。
  • page.goto(url): 访问目标网页。
  • page.wait_for_load_state("networkidle"): 等待页面网络请求空闲,确保页面完全加载。
  • page.wait_for_timeout(3000): 额外等待 3 秒,确保页面完全加载。
  • page.evaluate("localStorage.getItem('token')"): 执行 JavaScript 代码,从 localStorage 中获取 token 数据。
  • if token_data and len(token_data.strip()) > 0:: 检查 token 是否存在且不为空。
  • browser.close(): 关闭浏览器。

3. 运行脚本

保存文件后,在终端或命令行中运行脚本:

python check_login_status.py

如果一切正常,脚本将打开浏览器,访问指定的登录页面,等待页面加载完成后,从 localStorage 中获取 token 数据,并检查登录状态。

4. 扩展功能

4.1 处理登录表单

如果需要在登录页面自动填写表单并提交,可以使用 Playwright 的 fillclick 方法。例如:

# 填写用户名和密码
page.fill("#username", "your_username")  # 替换为用户名输入框的选择器
page.fill("#password", "your_password")  # 替换为密码输入框的选择器

# 点击登录按钮
page.click("#login-button")  # 替换为登录按钮的选择器

4.2 处理验证码

如果登录页面有验证码,可以手动输入验证码,或者使用第三方服务自动识别验证码。

4.3 保存登录状态

如果需要保存登录状态以便后续使用,可以将 localStorage 中的数据保存到文件,或者使用 Playwright 的 storage_state 功能:

# 保存登录状态到文件
storage_state = page.context.storage_state(path="state.json")

5. 总结

通过本教程,你已经学会了如何使用 Playwright 检查登录状态并获取 localStorage 中的 token。Playwright 提供了强大的功能,可以用于自动化测试、爬虫、监控等场景。你可以根据需要扩展脚本功能,例如自动填写登录表单、处理验证码、保存登录状态等。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐