Luk*_*ton 9 javascript python selenium google-chrome amazon-web-services
将 AWS Lambda 函数与 Python 和 Selenium 结合使用,我想通过无头 chrome 测试来创建无法检测的无头 chrome刮刀。我通过打开测试并截取屏幕截图来检查无头刮刀的不可检测性。我在本地 IDE 和 Lambda 服务器上运行了此测试。
我将使用一个名为selenium-stealth 的python 库,并将遵循其基本配置:
stealth(driver,
languages=["en-US", "en"],
vendor="Google Inc.",
platform="Win32",
webgl_vendor="Intel Inc.",
renderer="Intel Iris OpenGL Engine",
fix_hairline=True,
)
Run Code Online (Sandbox Code Playgroud)
我在本地 IDE 和 AWS Lambda 服务器上实现了此配置以比较结果。
当我在 Lambda 服务器上运行此程序时,WebGL 供应商和渲染器都是空白的。如下所示:
我什至尝试使用以下 JavaScript 命令手动更改 WebGL 供应商/渲染器:
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);};"})
Run Code Online (Sandbox Code Playgroud)
然后我想可能是参数号有问题。我配置了不使用 if 语句的命令执行,但发生了同样的事情:它在我的本地 IDE 上运行,但对 AWS Lambda 服务器没有影响。
是否可以在 AWS Lambda 上添加供应商/渲染器?在我的努力下,似乎没有什么办法了。我确保在 selenium-stealth GitHub 存储库上提交此问题。