前言

用过 Selenium 的同学都知道: 原生脚本百分百被风控识别。

原因不止 UA,而是:

  • 存在 webdriver 自动化标记
  • 滚动行为机械固定
  • 操作时序太规律
  • 无随机无效行为

本文给大家一套工业级学习版真人浏览脚本,去除所有自动化特征,行为无限接近真人。

一、原生 Selenium 的 4 大机器人漏洞

  1. window.navigator.webdriver = true
  2. 浏览器带有自动化扩展标记
  3. 滚动一次性到底,极其机械
  4. 所有操作间隔均匀固定

二、防检测优化方案 + 完整代码

from selenium import webdriver
import random
import time

def get_safe_driver():
    opt = webdriver.ChromeOptions()
    # 关闭自动化提示
    opt.add_experimental_option("excludeSwitches", ["enable-automation"])
    opt.add_experimental_option("useAutomationExtension", False)

    driver = webdriver.Chrome(options=opt)
    # 清除webdriver指纹
    driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
        "source": "Object.defineProperty(navigator,'webdriver',{get:()=>undefined})"
    })
    return driver

def real_human_browse(url):
    driver = get_safe_driver()
    driver.get(url)
    time.sleep(random.uniform(2,4))

    # 分段随机滚动
    for _ in range(random.randint(3,7)):
        scroll = random.randint(200,800)
        driver.execute_script(f"window.scrollBy(0,{scroll})")
        time.sleep(random.uniform(1,3))

    # 随机回滚模拟误操作
    if random.random() > 0.3:
        driver.execute_script("window.scrollBy(0,-150)")
        time.sleep(random.uniform(0.5,2))

    time.sleep(random.uniform(3,6))
    driver.quit()

if __name__ == "__main__":
    real_human_browse("https://example.com")

三、核心优化点详解

  1. 清除 webdriver 指纹 彻底消除 JS 层面的机器人检测。
  2. 分段滚动不一次性到底 真人不会瞬间拉到底。
  3. 随机回滚、误操作 增加无效行为,大幅降低机器特征。
  4. 全流程随机延时 没有任何固定时间间隔。

四、高级风控依然能检测什么

即使做到以上优化,依然存在风险:

  • Canvas 指纹固定
  • WebGL 设备信息一致
  • 鼠标轨迹绝对平滑

想要真正隔离,必须一号一环境。

五、学习总结

Selenium 自动化的核心不是 “能跑”,而是 “像人”。 只要行为规律、环境固定,无论怎么改 UA 都会被识别。

本文方案适合大家学习浏览器指纹伪装、真人行为模拟核心原理,建议用于自动化测试学习,不要用于违规矩阵操作。

Logo

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

更多推荐