首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python更改WebGL供应商/渲染器用于无法检测的无头刮板

Python更改WebGL供应商/渲染器用于无法检测的无头刮板
EN

Stack Overflow用户
提问于 2021-12-07 18:33:37
回答 2查看 1.7K关注 1票数 9

概念:

使用带有Python和Selenium的AWS函数,我希望通过传递一个无头铬试验来创建一个无法检测的无头铬刮板。我通过打开测试和截图来检查我的无头刮刀的不可探测性。我在本地IDE和Lambda服务器上运行了这个测试。

执行情况:

我将使用一个名为硒隐身的python库,并将遵循它们的基本配置:

代码语言:javascript
复制
stealth(driver,
        languages=["en-US", "en"],
        vendor="Google Inc.",
        platform="Win32",
        webgl_vendor="Intel Inc.",
        renderer="Intel Iris OpenGL Engine",
        fix_hairline=True,
        )

为了比较结果,我在Local和AWS上实现了这个配置。

本地IDE:

下面是在本地IDE上运行的测试结果:

Lambda服务器:

当我在Lambda服务器上运行这个程序时,WebGL供应商和渲染器都是空的。如下所示:

我甚至尝试使用以下WebGL命令手动更改JavaScript供应商/渲染器:

代码语言:javascript
复制
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {"source": "WebGLRenderingContext.prototype.getParameter = function(parameter) {if (parameter === 37445) {return 'VENDOR_INPUT';}if (parameter === 37446) {return 'RENDERER_INPUT';}return getParameter(parameter);};"})

然后我想这可能是参数数出了问题。我配置了不带if语句的命令执行,但发生了同样的事情:它在本地IDE上工作,但对没有影响。

简单地说:

可以在AWS 上添加供应商/渲染器吗?在我的努力中,似乎没有任何可能的办法。我确保在selenium-隐形的本期库上提交GitHub。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-21 20:19:30

我为缺失的WebGL供应商/渲染器找到的解决方案是在创建函数时使用停靠容器而不是普通的Lambda层。存储不仅增加了40倍,而且还解决了WebGL供应商/渲染者问题:

票数 0
EN

Stack Overflow用户

发布于 2021-12-14 23:20:32

WebGL

WebGL是一个跨平台、开放的基于OpenGL ES的底层3D图形API的web标准,通过HTML5画布元素向ECMAScript公开。WebGL的核心是使用GLSL的基于阴影的API,其结构在语义上类似于底层的OpenGL ES。它遵循OpenGL ES规范,除了内存外托管语言(如JavaScript )的一些例外。WebGL 1.0公开OpenGL es2.0特性集;WebGL 2.0公开OpenGL es3.0API。

现在,随着https://github.com/diprajpatra/selenium-stealth的可用性,使用驱动的ChromeDriver构建无法检测的刮板,启动谷歌铬浏览上下文变得更加容易。

硒隐身

https://pypi.org/project/selenium-stealth/是一个巨蟒包硒隐形,以防止检测。这个程序试图使蟒蛇硒更隐秘。然而,到目前为止,硒-隐形只支持硒铬。

  • 代码块: 从Selenium导入webdriver从options.add_experimental_option('useAutomationExtension',导入selenium.webdriver.chrome.options导入选项从selenium.webdriver.chrome.service导入服务导入隐形选项= Options() options.add_argument(“开始-最大化”)selenium.webdriver.chrome.options“启用-自动化”)s=服务(‘C:\BrowserDrivers\chromedriver.exe’)驱动程序= webdriver.Chrome(service=s,options=options) # selenium隐形设置( driver,languages="en-US","en",vendor="Google Inc.“、platform="Win32”、webgl_vendor="Intel Inc.“、renderer="Intel Iris OpenGL Engine”、fix_hairline=True )driver.get(“https://bot.sannysoft.com/"”)
  • 浏览器屏幕截图:

您可以在网站能检测到什么时候你使用Selenium和色度驱动器吗?中找到详细的相关讨论

在AWS中改变WebGL供应商/渲染器

AWS使我们能够实现向最终用户交付压缩的WebGL网站。当请求的网页对象被压缩时,传输大小就会减少,从而导致更快的下载、更低的云存储费用和更低的数据传输费用。改进的加载时间也直接影响观众的体验和保留,这有助于提高网站的转换和可发现性。使用WebGL,网站更具有沉浸感,同时仍然可以通过浏览器URL访问。通过这种技术,AWS自动压缩上传到S3的对象。

压缩和WebGL背景

HTTP压缩是一种可以内置到web服务器和web客户端中的功能,以提高传输速度和带宽利用率。此功能在服务器和客户端之间使用HTTP报头进行协商,这可能表示正在传输、缓存或其他引用的资源被压缩。服务器端的AWS Lambda支持内容编码头.

在客户端,现在大多数浏览器通过headers (Accept-Encoding: deflate, br, gzip)支持brotli和gzip压缩,并且可以处理服务器响应头。这意味着浏览器将自动从客户端的web服务器下载和解压缩内容,然后再将网页呈现给查看者。

结论

由于这个限制,您可能无法更改AWS中的WebGL供应商/渲染器,否则它可能直接影响向查看者呈现网页的过程,并可能成为用户界面中的一个瓶颈。

tl;dr

您可以在以下几个方面找到相关的详细讨论:

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

https://stackoverflow.com/questions/70265306

复制
相关文章

相似问题

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