Playwright 绕过滑块登录,直接打开页面录制自动化脚本(亲测有效)

张开发
2026/6/7 19:43:43 15 分钟阅读
Playwright 绕过滑块登录,直接打开页面录制自动化脚本(亲测有效)
在做自动化测试时最头疼的莫过于登录环节的滑块验证——尤其是部分网站风控严格不仅滑块难滑甚至会识别 Playwright 自动化浏览器直接提示「操作过于频繁」导致脚本无法正常运行。近期在测试时我踩遍了滑块登录的坑最终摸索出一套「绕过滑块、免登录直接打开页面再进行脚本录制」的完整方案亲测100%有效今天整理成博客分享给有同样困扰的小伙伴。一、问题背景滑块登录风控拦截最初使用 Playwright 做自动化时直接启动浏览器访问登录页遇到两个致命问题1. 滑块验证无法自动化绕过手动滑动后仍提示「操作过于频繁」推测网站检测到了 Playwright 自动化特征如 navigator.webdriver 标记2. 尝试保存登录状态、接管浏览器等方法要么报错「连接失败」「端口被占用」要么打开后仍是登录页无法继承手动登录状态核心痛点网站风控拦截自动化浏览器常规登录录制方法完全失效需找到「既绕开滑块又能让 Playwright 正常录制」的解决方案。二、核心思路手动登录保存状态免登录打开页面再录制既然网站会拦截 Playwright 启动的浏览器那我们就换个思路用「本机正常 Chrome 手动登录」保存登录状态后让 Playwright 加载该状态直接打开目标页面无需再登录、无需滑滑块此时再进行脚本录制即可完美绕开风控和滑块。整体流程手动登录并保存状态 → 加载登录状态打开目标页面 → 启动 Playwright 录制 → 生成自动化脚本全程无滑块、无频繁提示。三、分步操作从0到1实现免登录录制亲测可复现前提准备1. 已安装 Playwright若未安装执行命令pip install playwright再执行 playwright install 安装浏览器驱动2. 本机安装 Chrome 浏览器确保是常用版本避免驱动不兼容步骤1手动登录保存登录状态只做1次首先编写一段「保存登录状态」的脚本核心作用是用 Playwright 启动浏览器手动完成登录后将登录态cookie、localStorage 等保存到本地文件后续可直接加载使用无需重复登录。创建文件 save_login_state.py复制以下代码直接运行即可from playwright.sync_api import sync_playwright # 登录状态保存路径可自定义建议和后续脚本放在同一目录 STATE_FILE login_state.json # 登录页地址 LOGIN_URL 你的网站登录地址 def save_login_state(): with sync_playwright() as p: # 启动浏览器显示界面关闭无头模式添加防检测参数 browser p.chromium.launch( headlessFalse, args[--disable-blink-featuresAutomationControlled] ) context browser.new_context() page context.new_page() # 打开登录页 page.goto(LOGIN_URL) print( * 60) print( 请在弹出的浏览器中手动操作) print( 1) 输入账号、密码) print( 2) 完成滑块验证慢慢滑避免提示频繁) print( 3) 点击登录成功进入商品管理后台) print( 登录成功后回到命令行按【回车】保存登录状态) print( * 60) # 手动控制保存时机避免自动等待卡死 input(\n登录成功后按回车保存登录状态...) # 保存完整登录态cookie localStorage sessionStorage context.storage_state(pathSTATE_FILE) print(f✅ 登录状态已保存到{STATE_FILE}后续可直接加载使用) # 关闭浏览器 browser.close() if __name__ __main__: save_login_state()运行脚本后按提示操作1. 弹出 Chrome 浏览器手动输入账号密码、滑动滑块登录成功进入商品管理页2. 回到命令行按回车键脚本会自动保存登录状态到 login_state.json 文件3. 保存成功后命令行会提示「登录状态已保存」此时可关闭浏览器。步骤2验证免登录打开页面可选确保状态有效为了确认登录状态保存成功可编写一段「加载登录状态、直接目标页面」的脚本测试是否无需登录即可进入。创建文件 open_product_page.py复制以下代码from playwright.sync_api import sync_playwright # 加载之前保存的登录状态文件 STATE_FILE login_state.json # 目标页面 TARGET_URL 你想要录制的页面 # 函数打开目标页面免登录 def open_product_page(): with sync_playwright() as p: browser p.chromium.launch( headlessFalse, args[--disable-blink-featuresAutomationControlled] ) # 加载登录状态免登录进入 context browser.new_context(storage_stateSTATE_FILE) page context.new_page() # 直接打开 page.goto(TARGET_URL) print(✅ 已免登录打开页面当前地址, page.url) # 保持浏览器打开方便确认 input(按回车关闭浏览器...) browser.close() if __name__ __main__: open_product_page()运行脚本后若能直接打开无需登录、无滑块说明登录状态保存成功若仍跳登录页重新执行步骤1确保登录成功后再按回车保存。步骤3免登录启动录制生成自动化脚本登录状态验证通过后即可启动 Playwright 录制功能——此时 Playwright 会加载登录状态直接打开目标页面我们在页面上的所有操作都会被自动录制并生成代码。操作步骤打开 CMD 命令行或 PowerShell进入「login_state.json 文件所在的目录」关键否则会找不到登录状态文件在终端中输入以下命令启动录制直接复制运行playwright codegen --load-storage login_state.json 目标页面录制完成后关闭浏览器和录制窗口将录制窗口中的代码复制到本地 .py 文件即可直接运行无需再处理登录和滑块四、常见问题避坑指南亲测踩过的坑坑1启动录制时提示「找不到 login_state.json」原因命令行未进入「login_state.json 所在目录」Playwright 无法加载登录状态。解决重新进入目录按步骤3的方法再执行录制命令。坑2加载登录状态后仍跳登录页原因登录状态保存不完整比如未登录成功就按了回车或登录状态过期。解决删除旧的 login_state.json重新执行步骤1确保登录成功后再保存状态。坑3录制命令报错「retrieving websocket url」原因之前启动的浏览器未关闭端口被占用或 Chrome 路径配置异常。解决关闭所有 Chrome 浏览器重新执行录制命令若仍报错重启电脑后再尝试。坑4手动登录时一直提示「操作过于频繁」原因网站风控标记了当前 IP 或浏览器环境。解决关闭所有浏览器断网5-10分钟或切换手机热点换 IP再重新手动登录。

更多文章