selenium怎样避免被服务器检测
selenium是用来完成浏览器自动化相关的操作.可以通过代码的形式制定一些基于浏览器自动化的相关操作(行为动作),当代码执行后,浏览器就会自动触发相关的事件.但这并不能避免服务器的检测.当在浏览器中打开开发者工具输入window.navigator.webdriver时会显示true,说明被服务器检测到了,通常情况下会显示undefined.下面我们就通过对selenium进行设置,避免被检测.
1 2 3 4 5 6 7 | from selenium import webdriver from selenium.webdriver import ChromeOptions option = ChromeOptions() #实例化一个ChromeOptions对象 option.add_experimental_option( 'excludeSwitches' , [ 'enable-automation' ]) #以键值对的形式加入参数 bro = webdriver.Chrome(executable_path = './chromedriver.exe' ,options = option) #在调用浏览器驱动时传入option参数就能实现undefined |
以上操作只适用于比较老的Google版本,最新的版本上述操作已经失效,新版可以尝试下边的操作(只适用于88之前的版本):
driver = webdriver.Chrome()
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
对于火狐浏览器可以尝试一下内容:
1 2 3 | profile = webdriver.FirefoxProfile() profile.set_preference( "dom.webdriver.enabled" , False ) driver = webdriver.Firefox(firefox_profile = profile) |
上边如果都没效果,下边使用通用方法: 注意一定要在driver.get(url)之后执行
1 | driver.execute_script( "Object.defineProperties(navigator,{webdriver:{get:()=>undefined}})" ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!