概念:
使用带有Python和Selenium的AWS函数,我希望通过传递一个无头铬试验来创建一个无法检测的无头铬刮板。我通过打开测试和截图来检查我的无头刮刀的不可探测性。我在本地IDE和Lambda服务器上运行了这个测试。
执行情况:
我将使用一个名为硒隐身的python库,并将遵循它们的基本配置:
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供应商/渲染器:
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。
发布于 2022-03-21 20:19:30
我为缺失的WebGL供应商/渲染器找到的解决方案是在创建函数时使用停靠容器而不是普通的Lambda层。存储不仅增加了40倍,而且还解决了WebGL供应商/渲染者问题:

发布于 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和色度驱动器吗?中找到详细的相关讨论
在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
您可以在以下几个方面找到相关的详细讨论:
https://stackoverflow.com/questions/70265306
复制相似问题