当前位置: 首页 > 知识库问答 >
问题:

硒和无头浏览器不断要验证码

公西运良
2023-03-14

共有1个答案

佟高澹
2023-03-14

在题为recaptcha 3如何知道我正在使用Selenium/ChromeDriver的讨论中,我们讨论了一些避免在浏览Web时被检测到的通用方法。我们深潜吧。

无头浏览器是一种无需图形界面即可使用的浏览器。可以通过编程方式控制它来自动化任务,例如做测试或对网页进行截图。

根据@AntoineVastel的说法,无头浏览器被用来自动化恶意任务。最常见的情况是网页刮刮,增加广告印象或寻找网站上的漏洞。

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/59.0.3071.115 Safari/537.36
if (/HeadlessChrome/.test(window.navigator.userAgent)) {
    console.log("Chrome headless detected");
}

>

  • 检查插件是否存在:

    if(navigator.plugins.length == 0) {
        console.log("It may be Chrome headless");
    }
    

    语言:在Chrome中,有两个Javascript属性可以获得用户使用的语言:navigator.languagenavigator.languages。第一个是浏览器UI的语言,而第二个是表示用户首选语言的字符串数组。但是,在无头模式下,navigator.languages返回一个空字符串。

    >

  • 可以通过以下方式检查语言的存在:

    if(navigator.languages == "") {
         console.log("Chrome headless detected");
    }
    
    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");
    }
    

    >

  • 检查发际线特征的存在可以通过以下方法完成:

    if(!Modernizr["hairline"]) {
        console.log("It may be Chrome headless");
    }
    

    缺少图像:我们列表中的最后一个似乎也是最健壮的,来自于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");
        }
    }
    
      null

  •  类似资料:
    • 问题内容: 我遇到了一个问题,我们的一个站点一直在云浏览器中以无头模式请求验证码,因此我将其切换为无头,以便我自己输入验证码,我想下一次会工作,也许是因为一些cookie已经被存储了,但是即使我多次输入验证码也没有。 还值得一提的是,无论在哪种模式下,它都可以在本地正常运行,对于非自动化版本,它在云中也可以很好地运行,但是一旦我在Selenium上以任何模式运行它,它就会不断要求验证码。任何想法可

    • null 问题: 如何在前端获取此? 有效负载可以保存关于用户的任何信息(而不是任何敏感信息,如密码)。由于JWT在途中可能被篡改,所以在前端不验证JWT的情况下使用有效负载信息不危险吗?

    • 由于每次登录时都有大量文件下载,我正试图修复一个网络应用程序的性能。为此,我希望启用条件浏览器缓存,即,如果ETag发生变化,从服务器提供新的副本,否则使用浏览器缓存。 通过java过滤器从服务器发送的响应标头: 浏览器下次调用时,发送的请求标头为: 浏览器没有发送 If-None-Match 标头,因此用于验证 ETag 并发回 304 响应代码的服务器端代码失败,并且服务器始终将新副本发送到客

    • 什么是虚拟现实? 虚拟现实(VR)是一种技术,使用头显设备产生逼真的图像,声音和其他感觉,使得用户进入身临其境的虚拟环境。VR允许我们创建无界的世界,人们可以使用手来控制虚拟世界中的行走和互动,仿佛他们被时空传送到另一个地方。如果说互联网打破了时空界限,那么虚拟实现将打破虚拟和现实的界限。 头戴设备之间有什么区别? 市场上现有的消费者级VR设备具有不同的功能,其重要特性差别在于是否: 有定位跟踪(

    • 问题内容: 我们只是在不使用无头浏览器的情况下实施CI,而是使用实际的浏览器。因此,一旦开发团队签入了新代码,我们的烟雾自动化代码将在汽车机器上作为后台进程运行并发送结果。如果有任何故障,它甚至可以跨屏幕截图发送。我们没有得到的是,使用无头浏览器进行上述处理的好处是什么。我们需要我们的烟雾脚本来获得此覆盖范围。假设提交了一个庞大的表单,该表单可以在5分钟内使用“选择”,“日历”,“上载”等控件运行

    • 问题内容: 我正在尝试遵循Selenium Webdrive教程 http://www.toolsqa.com/selenium-webdriver/headless-browser-testing-selenium- webdriver/ 有一个简单的测试,这里是步骤: 开启网页http://google.com 获取页面标题。 搜索“ Selenium” 再次检查页面标题。 从类代码示例开始,