Python Selenium 高级防检测:模拟真人滚动、随机行为、彻底去除机器人特征
·
前言
用过 Selenium 的同学都知道: 原生脚本百分百被风控识别。
原因不止 UA,而是:
- 存在 webdriver 自动化标记
- 滚动行为机械固定
- 操作时序太规律
- 无随机无效行为
本文给大家一套工业级学习版真人浏览脚本,去除所有自动化特征,行为无限接近真人。
一、原生 Selenium 的 4 大机器人漏洞
- window.navigator.webdriver = true
- 浏览器带有自动化扩展标记
- 滚动一次性到底,极其机械
- 所有操作间隔均匀固定
二、防检测优化方案 + 完整代码
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")
三、核心优化点详解
- 清除 webdriver 指纹 彻底消除 JS 层面的机器人检测。
- 分段滚动不一次性到底 真人不会瞬间拉到底。
- 随机回滚、误操作 增加无效行为,大幅降低机器特征。
- 全流程随机延时 没有任何固定时间间隔。
四、高级风控依然能检测什么
即使做到以上优化,依然存在风险:
- Canvas 指纹固定
- WebGL 设备信息一致
- 鼠标轨迹绝对平滑
想要真正隔离,必须一号一环境。
五、学习总结
Selenium 自动化的核心不是 “能跑”,而是 “像人”。 只要行为规律、环境固定,无论怎么改 UA 都会被识别。
本文方案适合大家学习浏览器指纹伪装、真人行为模拟核心原理,建议用于自动化测试学习,不要用于违规矩阵操作。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)