前言
上一篇文章我们使用 requests 库实现 HTTP 层面的页面访问模拟。但是 requests 没有真实浏览器环境,不会执行页面 JS,没有浏览器渲染、Canvas、WebGL 等指纹信息。很多现代网站的风控系统会通过 JS 读取浏览器特征,单纯 HTTP 请求很容易被识别为机器人。
Selenium 是经典的浏览器自动化框架,可以驱动 Chrome、Edge 等真实浏览器,加载页面 JS、图片资源,还可以模拟页面滚动、鼠标点击等真人交互动作。很多人利用 Selenium 做账号自动化操作,但原生 Selenium 自带自动化标记,网站 JS 可以直接检测navigator.webdriver字段,识别自动化浏览器。本文重点讲解如何隐藏基础自动化标记,模拟真人浏览行为,仅用于技术学习,禁止违规操控账号。
一、Requests 与 Selenium 的核心差异
Requests 属于无界面请求,只发送 HTTP 数据包,不渲染页面,不存在浏览器指纹。优点是轻量、速度快;缺点是无法执行 JS,缺少真人交互行为特征,很容易被 JS 层面的风控识别。
Selenium 会启动完整浏览器实例,加载网页全部资源,支持页面交互,能够模拟滚动、鼠标移动等真人操作,更贴近真实用户访问网页。缺点是资源消耗大,运行速度慢,原生 Selenium 带有自动化特征,需要额外配置隐藏标记。
但是,即便隐藏了 webdriver 标记,浏览器还有大量静态指纹:Canvas 指纹、WebGL、字体列表、屏幕分辨率、时区等。多个账号共用一套浏览器配置,依然会产生账号关联风险。
二、环境安装与 Demo 代码
pip install selenium示例代码:
from selenium import webdriver from selenium.webdriver.common.by import By import time import random def human_browse(url): options = webdriver.ChromeOptions() # 关闭自动化提示 options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option("useAutomationExtension", False) driver = webdriver.Chrome(options=options) # CDP命令清除webdriver标记 driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})" }) try: driver.get(url) time.sleep(random.uniform(2, 4)) # 分段滚动页面,模拟人浏览 scroll_count = random.randint(3, 6) for _ in range(scroll_count): scroll_pixel = random.randint(300, 800) driver.execute_script(f"window.scrollBy(0,{scroll_pixel})") time.sleep(random.uniform(1.2, 3)) # 页面停留阅读 time.sleep(random.uniform(4, 9)) except Exception as e: print(f"浏览异常:{e}") finally: driver.quit() if __name__ == "__main__": human_browse("https://example.com")代码核心优化:关闭浏览器自动化提示,使用 CDP 命令清除 webdriver 标识;分段滚动页面,滚动距离、滚动次数、停留时间全部随机,避免一次性直接滚动到底部这种典型机器人行为。
三、模拟真人浏览行为的关键点
- 不要一次性滚动到页面底部:真人浏览是边看边慢慢下拉,不会一次性拉到底部。分段滚动,中间增加随机停顿,更贴近真人习惯。
- 增加随机等待:页面加载完成后不会立刻操作,留出阅读页面的时间。
- 进阶鼠标轨迹模拟:高级风控会检测鼠标移动轨迹。机器人鼠标移动大多是直线快速移动,真人鼠标移动带有抖动、曲线偏移。可以引入第三方库模拟带随机偏移的鼠标轨迹。
- 操作不要连续密集:浏览、点击之间要有间隔,不要短时间连续执行多个操作。
四、Selenium 自动化常见风控陷阱
很多新手以为清除 webdriver 标记就万事大吉。实际上浏览器指纹体系非常完善,Canvas、WebGL、系统字体、插件列表等都可以作为设备指纹。多个账号共用同一个浏览器配置文件,会被判定为同一台设备操作,出现账号连带封禁。
同时 Selenium 多并发会消耗大量内存与 CPU 资源,多账号同时运行对机器性能要求很高。即便所有指纹隐藏全部做好,自动化脚本和真人用户依然存在细微行为差异,长期自动化操作账号,封号风险依旧存在。
五、合法学习场景总结
Selenium 技术的合法应用场景是 Web UI 自动化测试、网页功能验证、爬虫学习。不要投入大量时间,尝试用 Selenium 批量操作平台账号。平台风控策略会持续迭代,今天有效的隐藏方案,可能很短时间就失效。
学习浏览器自动化,重点理解浏览器指纹、JS 反检测原理,把技术投入到软件开发测试等合规场景。任何试图绕过平台风控批量操控账号的行为,都存在账号封禁以及法律风险。