Undetected_chromedriver
https://gith**ub.co*m/ultrafunkamsterdam/undetected-chromedriver
优化的Selenium Chromedriver补丁不会触发反机器人服务,例如Distill Network / imperva / datadome / botprotect.io,会自动下载驱动程序二进制并进行修补。
- 测试直到当前的Chrome Beta版本
- 还可以在勇敢的浏览器和许多其他基于铬的浏览器上使用,但是您需要知道自己在做什么,需要进行一些调整。
- Python 3.6 ++ **
安装
pip install undetected-chromedriver
或者,如果您喜欢冒险,请直接通过GitHub安装
pip install git+https://www.gi*th**ub.com/ultrafunkamsterdam/undetected-chromedriver@master # replace @master with @branchname for other branches
所有人的消息
我将对问题跟踪器限制。贝恩虐待太久了。
有什么好消息吗?
是的,我已经打开了未发现的讨论,从长远来看,我认为这将帮助我们更好。
这不是什么
此软件包不会,我重复没有隐藏您的IP地址,因此,当从数据中心运行(甚至较小的)时,很大的机会很大,您不会通过!另外,如果您在家中的IP声誉较低,您将不会通过!
从家里和数据中心运行。
import undetected_chromedriver as uc driver = uc . Chrome ( headless = True , use_subprocess = False ) driver . get ( \'https://n*ow*s*ecure.nl\' ) driver . save_screenshot ( \'nowsecure.png\' )


3.5.0
- 硒4.10引起了一些问题。 3.5.0是兼容的,具有硒4.9或以上已固定。我不能再支持<4.9。
- 从constructor中删除了一些Kwargs:service_args,service_creationflags,service_log_path。
- 添加了find_elements_recursive Generator函数。这更多是一种便利性效果
3.4.5
- 多个星期。如果使用3.4.0的自动检测算法的最新高级算法(所以我认为),但显然,对于某些OS-ES,这在与元素交互时会导致错误。必须使用其他方法恢复回去,修复错误,现在最终仍然能够坚持初始想法(+修复错误)
- 对Chrome 110的更新引起了另一个惊喜,这次是无头用户的。
- 尽管Leverless不受支持,但我确实进行了修补!
- 很高兴宣布它也未被发现(但仍然没有支持;)
- 特别感谢@mdmintz和 @abdulzain6
- 还要特别感谢@sebdelsol的帮助解决问题部分,您必须发疯:)
3.4.0
大更新!要小心,因为它可能会破坏您的代码。
-
重写了反检测机制,而不是删除和重命名变量,我们只是保留它们,但首先防止它们被注入。至少在不久的将来,这将使我们免受检测。
-
重写文件命名,以防止{RandomString} _chromedriver.exe的1000结束,而是称为undetected_chromedriver.exe
-
清理删除了compat,V2文件和测试文件夹
3.2.0
- 添加了一个示例,其中包含一些典型的WebDriver代码,常见问题的答案,陷阱 +展示一些技巧以抛弃对多线程的需求。
>>>>示例代码<<<<
-
添加了WebElement.Click_SAFE()方法,如果您在单击链接后被检测到,可以尝试使用。这不能保证起作用。
-
添加了WebElement.Children(self,tag = none,recursive = false),以轻松获取/查找子节点。例子:
body = driver.find_element(\'tag name\', \'body\') # get the 6th child (any tag) of body, and grab all img\'s within (recursive). images = body.children()[6].children(\'img\', True) srcs = list(map(lambda _:_.attrs.get(\'src\'), images))
-
添加了示例。我在问愚蠢的问题时可以指向人们的位置(不,实际上很酷,每个人都应该看到它)
-
对Lambda平台的支持增加了
-
添加了对X86_32的支持
-
对系统报告为Linux2的添加了支持
-
一些重构
3.1.6
仍然通过强壮
-
use_subprocess现在默认为true。太多的人不了解多处理和名称==\’ main ,在测试后,似乎不再有所作为
-
添加了no_sandbox,默认为true,这也没有烦人的“您使用不安全命令行…” bar。
-
更新Docker映像。您现在可以VNC或RDP进入容器中以查看实际的浏览器窗口
-
当然,“常规”模式也有效
3.1.0
此版本可能会破坏您的代码,在更新之前进行测试!
-
添加了新的反检测逻辑!
-
V2已成为主要模块,因此不再需要引用V2。这意味着您现在可以简单地使用:
import undetected_chromedriver as uc driver = uc . Chrome () driver . get ( \'https://n*ow*s*ecure.nl\' )
对于向后兼容性,V2不会删除,而是将v2删除到主模块中。
-
修复了非窗口OS-E上的“欢迎屏幕”。对于那些欢迎屏幕并使用更多数据喂食的那些nagfetishist,请使用Chrome(custress_welcome = false)。
-
在构造函数中替换了browser_executable_path中的替换可执行文件path
-
“ v1”(?)现在移至_compat。
-
固定依赖版本
-
ChromeOptions自定义处理已删除,因此它与WebDriver.Chromium.Options.Chromiumiumoptions兼容。
-
删除了Chrome.get()fu,并恢复为“几乎”原始:
- 不再需要陈述,尽管它仍然为了向后兼容而起作用。
- 没有睡眠,停止启动课,延迟或异步CDP黑魔法!
- 这也将解决许多其他“问题”。
-
测试成功迄今为止:100%
-
只是再提一下,因为有些人很难阅读:无头仍然是WIP。提出问题是不必要的
3.0.4更改
-
改变过程创建行为以完全独立
-
更改.get(url)方法始终使用上下文管理器
-
更改了.get(URL)方法,将CDP在引擎盖下使用。
…带有陈述不再需要的。
-
TODO:努力进行异步和硒4
智慧的话:
每当你遇到艰苦的
来自会话未创建:此版本的Chromedriver仅支持Chrome版本96#或版本
解决方案很简单:
import undetected_chromedriver as uc driver = uc . Chrome ( version_main = 95 )
2021年7月:目前忙于实施未发现的硒4
新闻快报:#255
用法
为了防止不必要的发胶和发出发育,请注意本文档末尾的重要说明。
简单的
从字面上看,这就是您要做的。包括设置,并且您的浏览器可执行文件可自动找到。如果您遇到问题,这也是我建议使用的片段。
import undetected_chromedriver as uc driver = uc . Chrome () driver . get ( \'https://n*ow*s*ecure.nl\' ) # my own test test site with max anti-bot protection
更高级的方式,包括设置Profie文件夹
从字面上看,这就是您要做的。如果不存在指定的文件夹,则将创建一个新的配置文件。指定这样的数据DIR将不会在出口时自动化。
import undetected_chromedriver as uc options = uc . ChromeOptions () # setting profile options . user_data_dir = \"c: \\\\ temp \\\\ profile\" # use specific (older) version driver = uc . Chrome ( options = options , version_main = 94 ) # version_main allows to specify your chrome version instead of following chrome global version driver . get ( \'https://n*ow*s*ecure.nl\' ) # my own test test site with max anti-bot protection
专家模式,包括DevTool/电线事件
从字面上看,这就是您要做的。现在,您可以收听并订阅低级DevTools-protocel。我最近发现这也在计划将来发布官方Chromedriver的计划。但是我目前实施了自己的实施。由于我自己需要调查。
下载源码
通过命令行克隆项目:
git clone https://github.com/ultrafunkamsterdam/undetected-chromedriver.git
