首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有无法检测到的硒WebDriver版本?

是否有无法检测到的硒WebDriver版本?
EN

Stack Overflow用户
提问于 2019-06-10 14:46:45
回答 5查看 60.1K关注 0票数 35

我正在住宅代理网络后面的Ubuntu服务器上运行Chrome驱动程序。然而,我的硒被检测到了。有没有办法让Chrome驱动程序和硒100%检测不到?

我尝试了这么久,忘记了我做过的许多事情,包括:

  1. 尝试不同版本的Chrome
  2. 添加几个标志,并从Chrome驱动程序文件中删除一些单词。
  3. 使用匿名模式在代理(住宅代理)后面运行它。
  4. 加载配置文件。
  5. 鼠标的随机移动。
  6. 把所有东西都随机化。

我正在寻找一个真正版本的硒,是100%无法检测。如果真的存在的话。或者另一种无法被机器人跟踪器检测的自动化方式。

这是浏览器启动的一部分:

代码语言:javascript
复制
sx = random.randint(1000, 1500)
sn = random.randint(3000, 4500)

display = Display(visible=0, size=(sx,sn))
display.start()


randagent = random.randint(0,len(useragents_desktop)-1)

uag = useragents_desktop[randagent]
#this is to prevent ip leaking
preferences =
    "webrtc.ip_handling_policy" : "disable_non_proxied_udp",
    "webrtc.multiple_routes_enabled": False,
    "webrtc.nonproxied_udp_enabled" : False

chrome_options.add_experimental_option("prefs", preferences)
chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-impl-side-painting")
chrome_options.add_argument("--disable-setuid-sandbox")
chrome_options.add_argument("--disable-seccomp-filter-sandbox")
chrome_options.add_argument("--disable-breakpad")
chrome_options.add_argument("--disable-client-side-phishing-detection")
chrome_options.add_argument("--disable-cast")
chrome_options.add_argument("--disable-cast-streaming-hw-encoding")
chrome_options.add_argument("--disable-cloud-import")
chrome_options.add_argument("--disable-popup-blocking")
chrome_options.add_argument("--ignore-certificate-errors")
chrome_options.add_argument("--disable-session-crashed-bubble")
chrome_options.add_argument("--disable-ipv6")
chrome_options.add_argument("--allow-http-screen-capture")
chrome_options.add_argument("--start-maximized")

wsize = "--window-size=" +  str(sx-10) + ',' + str(sn-10)
chrome_options.add_argument(str(wsize) )

prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)

chrome_options.add_argument("blink-settings=imagesEnabled=true")
chrome_options.add_argument("start-maximized")
chrome_options.add_argument("user-agent="+uag)
chrome_options.add_extension(pluginfile)#this is for the residential proxy
driver = webdriver.Chrome(executable_path="/usr/bin/chromedriver", chrome_options=chrome_options)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-06-10 15:49:57

Selenium驱动的WebDriver被检测到的事实并不取决于任何特定的selenium、Chrome或ChromeDriver版本。网站本身可以检测网络流量,并能识别浏览器客户端,即由WebDriver控制的浏览器。

然而,在web抓取过程中避免被检测到的一些通用方法如下:

@Antoine在他的博客网站无铬检测中提到了几种区分Chrome浏览器和无头 Chrome浏览器的方法。

  • 用户代理:用户代理属性通常用于检测用户的操作系统和浏览器。使用Chrome版本59,它具有以下价值: Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/537.36 (x86_64,类似壁虎) HeadlessChrome/59.0.3071.115 Safari/537.36

如果(/HeadlessChrome/.test(window.navigator.userAgent)) {

代码语言:javascript
复制
- A check for the presence of _Chrome headless_ can be done through:

{console.log(“检测到无铬头”);}

  • 插件:navigator.plugins返回浏览器中的插件数组。通常,在Chrome上我们可以找到默认插件,比如Chrome PDF viewerGoogle Native Client。相反,在无头模式下,返回的数组包含没有的插件。
代码语言:javascript
复制
- A check for the presence of _Plugins_ can be done through:

if(navigator.plugins.length == 0) {console.log(“可能是铬无头”);}

  • 语言:在Chrome中,两个Javascript属性能够获得user: navigator.languagenavigator.languages.使用的语言第一种是浏览器UI的语言,第二种是表示用户首选语言的字符串数组。但是,在无头模式下,navigator.languages返回一个空字符串。
代码语言:javascript
复制
- A check for the presence of _Languages_ can be done through:

if(navigator.languages == "") {console.log(“检测到无铬头”);}

  • WebGL: WebGL是一个在HTML中执行3D呈现的API。使用此API,可以查询图形驱动程序的供应商和图形驱动程序的呈现器。使用普通的Chrome和Linux,我们可以为渲染器和供应商获得以下值:Google SwiftShaderGoogle Inc.。在无头模式下,我们可以获得Mesa OffScreen (一种不用任何窗口系统的渲染技术)和Brian Paul (启动开源Mesa图形库的程序)。

gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);var画布=document.createElement(‘

代码语言:javascript
复制
- A check for the presence of _WebGL_ can be done through:

’);var gl = canvas.getContext('webgl');var debugInfo = gl.getExtension('WEBGL_debug_renderer_info');var供应商=document.createElement var呈现器= gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);if(供应商== "Brian“& renderer == "Mesa”){console.log(“无铬检测到”);}

-并非所有的Chrome无头浏览器对供应商和渲染者都有相同的价值。其他人保留的值也可以在非无头版本中找到。但是,Mesa OffscreenBrian Paul表示存在无头版本。

  • 浏览器特性:现代化库允许测试浏览器中是否存在范围广泛的HTML和CSS功能。我们发现Chrome和无头Chrome之间唯一的不同之处在于,后者没有可以检测到对hidpi/retina hairlines的支持的发际线功能。
代码语言:javascript
复制
- A check for the presence of _hairline feature_ can be done through:

if(!现代化的“发际线”){console.log(“可能是铬无头”);}

  • 缺失图像:我们列表中的最后一个似乎也是最健壮的,来自Chrome在无法加载图像时所使用的图像的维数。对于普通Chrome,图像的宽度和高度取决于浏览器的缩放,但与零不同。在无头Chrome中,图像的宽度和高度等于零。
代码语言:javascript
复制
- A check for the presence of _Missing image_ can be done through:

var body = document.getElementsByTagName("body");var image = document.createElement("img");image.src =“http://iloveponeydotcom32188.jg"”;image.setAttribute("id“、"fakeimage");body.appendChild(图像);image.onerror = function(){ if(image.width == 0& image.height == 0) {console.log(”无铬头检测“);}}

参考文献

您可以在以下几个方面找到一些类似的讨论:

tl;dr

票数 57
EN

Stack Overflow用户

发布于 2021-05-04 09:45:34

为什么不试试未检出-显色剂呢?

优化的SeleniumChromeDriver修补程序不会触发反bot服务,比如提取网络/ Imperva / DataDome / Botprotect.io,它会自动下载驱动程序二进制文件并对其进行修补。

经过测试,直到当前的chrome测试版也能在勇敢浏览器和许多其他基于铬的浏览器上工作

您可以用:pip install undetected-chromedriver安装它。

--您应该注意一些重要的事情:,由于模块的内部工作,需要以编程方式浏览(即:使用.get(url) )。千万不要用gui导航。使用您的keybord和鼠标进行导航会导致可能的检测!新塔布斯:同样的故事。如果您确实需要多个选项卡,那么打开带有空白页的选项卡(提示: url是data:,包括逗号,是的,驱动程序接受它),并照常做您的事情。如果您遵循这些“规则”(实际上是它的默认行为),那么现在您将有一个很好的时间。

代码语言:javascript
复制
In [1]: import undetected_chromedriver as uc
In [2]: driver = uc.Chrome()
In [3]: driver.execute_script('return navigator.webdriver')
Out[3]: True  # Detectable
In [4]: driver.get('https://distilnetworks.com') # starts magic
In [4]: driver.execute_script('return navigator.webdriver')
In [5]: None  # Undetectable!
票数 13
EN

Stack Overflow用户

发布于 2022-08-22 11:36:02

如果您确切地知道您要面对的检测和指纹工具类型-(通过boty等),您可以为您的目标网站创建一个无法检测的Selenium WebDriver。这并不能保证它能在其他地方发挥作用。本文提供了附加的规避工具和Web抓取API - https://levelup.gitconnected.com/web-scraping-and-the-art-of-war-5-tools-that-will-help-your-bot-win-c2a3840d8b71

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56528631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档