栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

是否存在无法检测到的Selenium Webdriver版本?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否存在无法检测到的Selenium Webdriver版本?

是否 检测到硒驱动的WebDriver 并不 取决于任何特定的 SeleniumChromeChromeDriver
版本。该 网站 本身可以检测网络流量,并可以识别 浏览器客户端 ,即 Web浏览器 作为 的webdriver controled

但是,一些避免在网络抓取过程中被检测到的通用方法如下:

  • 网站可以通过您的 显示器大小 来确定您的脚本/程序的首要属性。因此,建议 不要 使用常规的视口。
  • 如果您需要向网站发送多个请求,则需要继续更改每个请求的用户代理。您可以在Selenium中更改Google Chrome用户代理的方式中找到详细的讨论
  • 为了模拟 人类一样 的行为,你可能需要甚至超越脚本执行减慢WebDriverWait和expected_conditions诱导
    time.sleep(secs)
    。在这里您可以找到有关如何在python中hibernateWebdriver毫秒的详细讨论

@Antoine Vastel在其博客网站“检测无头的Chrome”中提到了几种方法,这些方法将 Chrome 浏览器与 无头的 Chrome 浏览器区分开。

  • 用户代理 :用户代理属性通常用于检测操作系统以及用户的浏览器。在Chrome版本59中,它具有以下值:
        Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/59.0.3071.115 Safari/537.36
* 可以通过以下方法检查是否存在 _无头Chrome_ :
     if (/HeadlessChrome/.test(window.navigator.userAgent)) { console.log("Chrome headless detected");        }
  • 插件

    navigator.plugins
    返回浏览器中存在的一系列插件。通常,在Chrome上我们会找到默认插件,例如
    Chrome PDF viewer
    Google Native Client
    。相反,在无头模式下,返回的数组 包含插件。

    • 可以通过以下方法检查是否存在 插件
          if(navigator.plugins.length == 0) {console.log("It may be Chrome headless");

      }

  • 语言 :在Chrome中两个Javascript属性使获得由所使用的语言

    user: navigator.language
    navigator.languages
    。第一个是浏览器UI的语言,而第二个是代表用户首选语言的字符串数组。但是,在无头模式下,
    navigator.languages
    将返回一个 字符串。

    • 可以通过以下方法检查 语言 是否存在:
     if(navigator.languages == "") {  console.log("Chrome headless detected");        }
  • WebGL :WebGL是用于在HTML画布中执行3D渲染的API。使用此API,可以查询图形驱动程序的供应商以及图形驱动程序的渲染器。使用普通的Chrome和Linux,我们可以获得渲染器和供应商的以下值:

    Google SwiftShader
    Google Inc.
    。在无头模式下,我们可以获得
    Mesa OffScreen
    ,它是不使用任何类型的窗口系统进行渲染的技术
    Brian Paul
    ,并且是启动开源Mesa图形库的程序。

    • 可以通过以下方法检查 WebGL 的存在:
     var canvas = document.createElement('canvas');        var gl = canvas.getContext('webgl');        var debugInfo = gl.getExtension('WEBGL_debug_renderer_info');        var vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);        var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);        if(vendor == "Brian Paul" && renderer == "Mesa OffScreen") { console.log("Chrome headless detected");        }
* 并非所有的无头Chrome都具有相同的供应商和渲染器值。其他人保留的值也可以在非无头版本中找到。然而,`Mesa Offscreen`与`Brian Paul`指示的无头版本的存在。
  • 浏览器功能 :Modernizr库可以测试浏览器中是否存在各种HTML和CSS功能。我们发现Chrome与无头Chrome之间的唯一区别是后者没有发际线功能,该功能检测到对的支持

    hidpi/retina hairlines

    • 可以通过以下方法检查 发际线功能 的存在:
     if(!Modernizr["hairline"]) { console.log("It may be Chrome headless");        }
  • 图片丢失 :我们列表中的最后一个看上去也最坚固,这是由于Chrome无法使用而无法加载的图片尺寸。在使用普通Chrome浏览器的情况下,图像的宽度和高度取决于浏览器的缩放比例,但不为零。在无头Chrome中,图片的宽度和高度等于零。

    • 可以通过以下方法检查是否存在 缺少图像
     var body = document.getElementsByTagName("body")[0];        var image = document.createElement("img");        image.src = "http://iloveponeydotcom32188.jg";        image.setAttribute("id", "fakeimage");        body.appendChild(image);        image.onerror = function(){ if(image.width == 0 && image.height == 0) { console.log("Chrome headless detected"); }        }   



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470895.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号