跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Selenium 接管已启动浏览器以绕过反爬检测策略

综述由AI生成在使用 Selenium 进行爬虫开发时遇到的反爬检测问题及解决方案。针对拼多多等平台检测 Selenium 脚本导致登录失败的情况,提出通过接管已启动的浏览器来绕过检测。文章对比了 Selenium 自动启动与接管已启动浏览器的指纹差异,指出后者因保留现有会话和环境更不易被识别。提供了两种实现方式:一是手动通过 CMD 启动 Chrome 并指定调试端口,二是编写批处理文件自动启动浏览器,随后 Python 脚本通过远程调试端口接管浏览器实例。该方法能有效模拟正常用户行为,降低反爬拦截风险。

虚拟内存发布于 2026/3/29更新于 2026/6/333 浏览
Selenium 接管已启动浏览器以绕过反爬检测策略

Selenium 接管已启动浏览器以绕过反爬检测策略

问题分析

在使用 Selenium 自动化测试爬取拼多多(PDD)时,通过携带 Cookie 登录或控制 Selenium 输入账号密码登录,均出现错误代码 10001:请求异常请升级客户端后重新尝试。

该错误是由于 PDD 能够检测 Selenium 自动化测试脚本,从而阻止其继续访问。目前主流大厂网站基本都能检测到 Selenium 脚本。

解决方案

直接使用 Selenium 自动启动浏览器容易被检测到。测试表明,使用 Selenium 接管已经启动的浏览器则不会触发检测(原因:接管已启动的浏览器所携带的浏览器指纹更接近正常访问的浏览器指纹)。

自动启动与接管的区别

1. Selenium 自动启动浏览器
  • 默认行为:Selenium 自动启动浏览器时,通常使用默认配置和设置,生成一个新的用户数据目录,创建全新的浏览器环境。
  • 指纹特征:由于是新启动的实例,许多浏览器指纹特征(如 User-Agent、插件列表、屏幕分辨率等)可能与常规用户不同。Selenium 可能在浏览器对象中留下特定标记,如 window.navigator.webdriver 属性,易被网站识别。
  • 检测风险:网站可通过检测这些指纹特征识别出 Selenium 自动启动的浏览器,采取反爬措施。
2. Selenium 接管已启动的浏览器
  • 现有环境:Selenium 接管已启动的浏览器时,使用现有的浏览器实例和用户数据目录,保留之前的会话信息、登录状态、用户设置等。
  • 指纹特征:由于使用现有环境,接管后的浏览器指纹特征与常规用户的使用环境更为接近,插件、扩展、User-Agent 等设置保持一致。
  • 检测难度:网站在检测接管后的浏览器时,发现其指纹特征与常规用户相似,难以准确识别自动化工具的使用。
3. 区别总结
  • 指纹特征一致性:接管已启动的浏览器在指纹特征上与常规用户更为一致。
  • 检测风险:接管已启动的浏览器在降低检测风险方面更具优势。
  • 使用场景:自动启动适用于需要全新环境的场景;接管已启动的浏览器适用于需要保留现有会话信息的场景。

代码示例

方法一:手动启动浏览器并接管

第一步:找到 Chrome 浏览器的启动路径

默认路径为 C:\Program Files\Google\Chrome\Application,复制进入路径,确认有 chrome.exe 程序。

Chrome 启动路径

第二步:在当前路径下打开 CMD

在当前路径下输入 cmd,点击回车。

CMD 入口

第三步:利用 Chrome DevTools 协议启动浏览器

在命令行中输入命令,回车:

chrome.exe --remote-debugging-port=9222 --user-data-dir="E:\selenium_data"
  • -remote-debugging-port=端口号:指定任意打开的端口。
  • -user-data-dir:指定创建新 Chrome 配置文件的目录,确保在单独的配置文件中启动 Chrome,不污染默认配置文件。
  • E:\selenium_data:数据存储目录,可根据需求修改。
  • 注意:如果失败,请在环境变量 PATH 中添加 Chrome 的路径。

第四步:手动登录目标网站

输入命令回车后会启动一个空白浏览器,接下来手动去登录自己目标网站即可。

手动登录

第五步:Python 接管浏览器

新建 Python 文件,运行以下代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")  # 通过端口号接管已打开的浏览器
driver = webdriver.Chrome(options=chrome_options)
print(driver.title)  # 打印标题

第六步:验证结果

运行结果成功打印目标网站标题,表示接管成功。

接管成功

注:通用方法需要手动打开并输入账号密码,基本可以解决所有问题,但不够智能和自动化。

方法二:自动启动浏览器并接管

可以将上一种方式的目标路径设置写入 .bat 文件(Windows 系统),运行 .bat 文件来启动浏览器,再用程序接管。

1. 新建 start_chrome.bat 文件

复制以下内容(注意:chrome.exe 路径改为自己的安装路径,端口号根据实际情况修改):

@echo off
set CHROME_PATH="C:\Program Files\Google\Chrome\Application\chrome.exe"
set DEBUG_PORT=9222
%CHROME_PATH% --remote-debugging-port=%DEBUG_PORT%

2. 在 Python 中使用 subprocess 模块启动 .bat 文件

import subprocess

try:
    # 一、启动 .bat 文件,确保子进程在 Python 程序关闭后仍能继续运行
    # 使用 DETACHED_PROCESS 和 CREATE_NEW_PROCESS_GROUP 标志
    DETACHED_PROCESS = 0x00000008
    CREATE_NEW_PROCESS_GROUP = 0x00000200
    bat_file_path = "start_chrome.bat"  # .bat 文件路径
    subprocess.Popen([bat_file_path], creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP, shell=True)
    print("已启动谷歌浏览器,Python 程序关闭后浏览器将继续运行。")
except Exception as e:
    print(f"启动过程中出现错误:{e}")

运行上述代码启动 Chrome 成功,并保留正常启动浏览器的缓存。

3. Python 启动 .bat 文件后,Selenium 通过端口号接管浏览器

import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

try:
    # 一、启动 .bat 文件
    DETACHED_PROCESS = 0x00000008
    CREATE_NEW_PROCESS_GROUP = 0x00000200
    bat_file_path = "start_chrome.bat"
    subprocess.Popen([bat_file_path], creationflags=DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP, shell=True)
    print("已启动谷歌浏览器,Python 程序关闭后浏览器将继续运行。")

    # 二、通过端口号去接管启动的浏览器
    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
    driver = webdriver.Chrome(options=chrome_options)
    print(driver.title)  # 打印页面的标题

    # 三、发送请求
    url = "https://www.baidu.com"
    driver.get(url)
    print(driver.title)  # 打印页面的标题

    # 四、后续操作不易被检测,此处省略...
    print('后续操作不易被检测')
except Exception as e:
    print(f"启动过程中出现错误:{e}")

此方案实现了自动化启动浏览器并接管,有效降低了被检测的风险。

目录

  1. Selenium 接管已启动浏览器以绕过反爬检测策略
  2. 问题分析
  3. 解决方案
  4. 自动启动与接管的区别
  5. 1. Selenium 自动启动浏览器
  6. 2. Selenium 接管已启动的浏览器
  7. 3. 区别总结
  8. 代码示例
  9. 方法一:手动启动浏览器并接管
  10. 方法二:自动启动浏览器并接管
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • GitHub 2FA 丢失 Microsoft Authenticator 恢复与重置指南
  • Java volatile 关键字:底层原理、应用场景与最佳实践
  • OpenClaw 云服务器部署与配置指南
  • Prompt 设计原则与技巧:构建高效指令的方法论
  • YApi 接口管理:自动生成前端请求函数实战
  • 神秘大模型 gpt2-chatbot 性能测试:代码与推理能力解析
  • Home Assistant Core 智能家居平台构建指南
  • ComfyUI 安装指南:配置 Python 环境与共享 WebUI 模型库
  • JuiceSSH 配合 cpolar 实现手机远程连接 Linux
  • STL 二分查找 lower_bound 与 upper_bound 详解
  • Linux 网络基础:局域网通信与跨网段传输
  • OpenClaw 接入企业微信完整流程与配置详解
  • C++ 基础:引用、inline 及 nullptr 用法
  • macOS 安装微软雅黑字体
  • 国产数据库新机遇:电科金仓融合技术同步全球竞争
  • OpenClaw 部署实战:Coding Plan 配置与飞书机器人接入
  • 基于 LibTorch 构建强实时的深度学习 C++ 推理应用
  • MCPo:将 MCP 协议转换为 OpenAPI 的代理服务器实践
  • FPGA小白学习日志二:利用LED实现2选1多路选择器
  • Claude Code Security 深度解析与实战指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online