相关疑难解决方法(0)

当您使用含硒的硒时,网站是否可以检测到?

我一直在用Chromedriver测试Selenium,我注意到有些页面可以检测到你正在使用Selenium,即使根本没有自动化.即使我只是通过Selenium和Xephyr使用chrome手动浏览我经常会得到一个页面,说明检测到可疑活动.我检查了我的用户代理和浏览器指纹,它们与普通的Chrome浏览器完全相同.

当我在普通镀铬中浏览这些网站时,一切正常,但是当我使用Selenium的时候,我已经检测到了.

从理论上讲,chromedriver和chrome应该看起来与任何网络服务器完全相同,但不知怎的,他们可以检测到它.

如果你想要一些测试代码试试这个:

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=1, size=(1600, 902))
display.start()
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--disable-extensions')
chrome_options.add_argument('--profile-directory=Default')
chrome_options.add_argument("--incognito")
chrome_options.add_argument("--disable-plugins-discovery");
chrome_options.add_argument("--start-maximized")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.delete_all_cookies()
driver.set_window_size(800,800)
driver.set_window_position(0,0)
print 'arguments done'
driver.get('http://stubhub.com')
Run Code Online (Sandbox Code Playgroud)

如果您浏览stubhub,您将在一两个请求中被重定向和"阻止".我一直在研究这个,我无法弄清楚他们如何判断用户是否正在使用Selenium.

他们是如何做到的呢?

编辑更新:

我在Firefox中安装了Selenium IDE插件,当我在普通的firefox浏览器中使用附加插件访问stubhub.com时,我被禁止了.

编辑:

当我使用Fiddler来查看来回发送的HTTP请求时,我注意到"假浏览器"的请求通常在响应头中有"无缓存".

编辑:

这样的结果是否有办法检测到我在Javascript的Selenium Webdriver页面中建议无法检测何时使用webdriver.但是这个证据表明不然.

编辑:

该网站将指纹上传到他们的服务器,但我检查了使用chrome时硒的​​指纹与指纹相同.

编辑:

这是他们发送到服务器的指纹有效负载之一

{"appName":"Netscape","platform":"Linuxx86_64","cookies":1,"syslang":"en-US","userlang":"en-US","cpu":"","productSub":"20030107","setTimeout":1,"setInterval":1,"plugins":{"0":"ChromePDFViewer","1":"ShockwaveFlash","2":"WidevineContentDecryptionModule","3":"NativeClient","4":"ChromePDFViewer"},"mimeTypes":{"0":"application/pdf","1":"ShockwaveFlashapplication/x-shockwave-flash","2":"FutureSplashPlayerapplication/futuresplash","3":"WidevineContentDecryptionModuleapplication/x-ppapi-widevine-cdm","4":"NativeClientExecutableapplication/x-nacl","5":"PortableNativeClientExecutableapplication/x-pnacl","6":"PortableDocumentFormatapplication/x-google-chrome-pdf"},"screen":{"width":1600,"height":900,"colorDepth":24},"fonts":{"0":"monospace","1":"DejaVuSerif","2":"Georgia","3":"DejaVuSans","4":"TrebuchetMS","5":"Verdana","6":"AndaleMono","7":"DejaVuSansMono","8":"LiberationMono","9":"NimbusMonoL","10":"CourierNew","11":"Courier"}}
Run Code Online (Sandbox Code Playgroud)

它的硒和铬相同

编辑:

VPN仅供一次使用,但在加载第一页后会被检测到.很明显,正在运行一些javascript来检测Selenium.

javascript python selenium google-chrome selenium-chromedriver

303
推荐指数
21
解决办法
13万
查看次数

SessionNotCreatedException:消息:会话未创建:此版本的 ChromeDriver 仅支持 Chrome 版本 96 当前浏览器版本为 98.0

错误跟踪日志:

DevTools listening on ws://127.0.0.1:54791/devtools/browser/6f264bcc-d44a-40d9-b6cf- 
8b1655c97ccd
Traceback (most recent call last):
File "c:\Users\alsgn\OneDrive\desktop\mypython\getselenium\dc\findbulletins.py", line 11, in 
<module>
browser = webdriver.Chrome()
File "C:\Users\alsgn\AppData\Local\Programs\Python\Python39\lib\site- 
packages\selenium\webdriver\chrome\webdriver.py", line 70, in __init__
super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
File "C:\Users\alsgn\AppData\Local\Programs\Python\Python39\lib\site- 
packages\selenium\webdriver\chromium\webdriver.py", line 93, in __init__
RemoteWebDriver.__init__(
File "C:\Users\alsgn\AppData\Local\Programs\Python\Python39\lib\site- 
packages\selenium\webdriver\remote\webdriver.py", line 268, in __init__
self.start_session(capabilities, browser_profile)
File "C:\Users\alsgn\AppData\Local\Programs\Python\Python39\lib\site- 
packages\selenium\webdriver\remote\webdriver.py", line 359, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "C:\Users\alsgn\AppData\Local\Programs\Python\Python39\lib\site- 
packages\selenium\webdriver\remote\webdriver.py", line 424, in execute
self.error_handler.check_response(response)
File "C:\Users\alsgn\AppData\Local\Programs\Python\Python39\lib\site- 
packages\selenium\webdriver\remote\errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session …
Run Code Online (Sandbox Code Playgroud)

selenium google-chrome webdriver selenium-chromedriver selenium-webdriver

22
推荐指数
3
解决办法
13万
查看次数

无法下载版本 115 的 chrome 驱动程序

我无法下载 Chrome 版本 115 的 Chrome 驱动程序。我已从以下位置下载 ZIP 文件:

https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/115.0.5790.102/win64/chrome-win64.zip

但我无法chromedriver.exe在那里找到该文件。

我正在运行需要路径的 Java-Selenium 测试chromedriver。我将 的路径复制chrome.exe到程序中,但它失败并给出错误为Timed out waiting for driver server to start。我需要chromedriver.exe这个吗?我怎样才能得到这个?

selenium-chromedriver selenium-webdriver

22
推荐指数
3
解决办法
6万
查看次数

Python webdrivermanager 和 Chrome 115.0 的 URL https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790 错误没有此类驱动程序

我最近将 Google Chrome 浏览器更新到版本115.0.5790.99,并使用 Python webdrivermanager 库(版本 3.8.6)进行 Chrome 驱动程序管理。

但是,自从这次更新后,当我调用该ChromeDriverManager().install()函数时,遇到以下错误:

URL https://chromedriver.storage.googleapis.com/LATEST_RELEASE_115.0.5790没有此类驱动程序

重现问题的步骤:

  • 将 Google Chrome 浏览器更新至版本 115.0.5790.99。

执行以下Python代码:

from webdriver_manager.chrome import ChromeDriverManager

driver_path = ChromeDriverManager().install()
Run Code Online (Sandbox Code Playgroud)

捕获:

捕获异常

python google-chrome python-3.x selenium-chromedriver selenium-webdriver

21
推荐指数
3
解决办法
3万
查看次数

SessionNotCreatedError: 会话未创建: 此版本的 ChromeDriver 仅支持 Chrome 版本 97 当前浏览器版本为 100.0.4896.75

我正在尝试启动 selenium webdriver 实例,但出现此错误:

SessionNotCreatedError: session not created: This version of ChromeDriver only supports Chrome version 97 Current browser version is 100.0.4896.75 with binary path *path here*
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用 chromium 98,它可以工作,但是在版本 100 中发现了一个新漏洞,我想更新

selenium webdriver selenium-chromedriver selenium-webdriver

17
推荐指数
2
解决办法
5万
查看次数

Selenium ChromeDriver 给出“InitializeSandbox() 在进程 GPU 进程中使用多个线程调用”错误

我正在尝试使用 selenium chromedriver 打开一个网站。我已经添加了一些我在其他类似问题中看到的论点,但它没有解决问题。我基本上有这个代码:

 String baseUrl = "https://somesite.com";
 System.setProperty("webdriver.chrome.driver", "/usr/bin/google-chrome");
 ChromeDriverService service = ChromeDriverService.createDefaultService();
 ChromeOptions options = new ChromeOptions();
 options.addArguments("--start-maximized");
 options.addArguments("--disable-infobars");
 options.addArguments("--disable-gpu");
 options.addArguments("--disable-software-rasterizer");
 options.addArguments("no-sandbox");
 options.addArguments("headless");
 options.addArguments("--enable-native-gpu-memory-buffers");

 driver = new ChromeDriver(service, options);
 driver.get(baseUrl);
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,chrome 打开但页面没有改变。它还给出了这个输出:

[61263:61263:0903/005049.885829:ERROR:sandbox_linux.cc(374)] InitializeSandbox() called with multiple threads in process gpu-process.
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

注意:我的操作系统是ubuntu 20.04。

java ubuntu selenium selenium-chromedriver selenium-webdriver

15
推荐指数
1
解决办法
3万
查看次数

如何自动登录到正在检测我使用 selenium-stealth 登录的尝试的网站

所以,我正在尝试编写一个脚本来登录https://us.etrade.com/e/t/user/login

我正在使用 Selenium,但它在启动时以某种方式检测到 selenium,并产生一条消息,指出服务器拥挤,当发生这种情况时,我无法登录。我也尝试过使用 unDetected-selenium 以及硒是隐形的,但两者也都被检测到。我真的需要自动化这个登录过程。我尝试过使用 python requests 但不起作用。我对任何其他允许我实现这种自动化的技术或方法持开放态度。请帮忙。

这是我的代码


from selenium import webdriver
from selenium.webdriver.common.by import By

from selenium_stealth import stealth
import time

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
# chrome_options.add_argument('--browser')
chrome_options.add_argument('--no-sandbox')
# chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
wd = webdriver.Chrome('chromedriver',chrome_options=chrome_options)

stealth(wd,
        languages=["en-US", "en"],
        vendor="Google Inc.",
        platform="Win32",
        webgl_vendor="Intel Inc.",
        renderer="Intel Iris OpenGL Engine",
        fix_hairline=True,
        )

wd.get("https://us.etrade.com/e/t/user/login")

Run Code Online (Sandbox Code Playgroud)

python selenium selenium-webdriver botdetect selenium-stealth

10
推荐指数
1
解决办法
1万
查看次数

Python Selenium AWS Lambda 更改 WebGL 供应商/渲染器以实现无法检测的 Headless Scraper

概念:

将 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 服务器上实现了此配置以比较结果。


本地IDE:

下面是在本地IDE上运行的测试结果: 在此输入图像描述


拉姆达服务器:

当我在 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 上运行,但对 …

javascript python selenium google-chrome amazon-web-services

9
推荐指数
1
解决办法
3858
查看次数

如果chromedriver与chrome版本不兼容如何修复?

当我运行我的代码时出现以下错误:

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 85
Run Code Online (Sandbox Code Playgroud)

我尝试下载较新版本的 chromdriver 但它仍然给我同样的错误。我尝试替换当前正在运行的 chromedriver 和我最近下载的 chromedriver,但它仍然给出相同的错误,所以我下载了 chromdriver 的兼容版本,然后我使用了这一行代码:

driver = webdriver.Chrome(executable_path='D:\talha\Documents\Projects For Portfolio\SmmoBot\chromedriver_win32\chromedriver.exe')
Run Code Online (Sandbox Code Playgroud)

但这会返回以下错误:

selenium.common.exceptions.WebDriverException: Message: 'chromedriver.exe' executable needs to be in PATH
Run Code Online (Sandbox Code Playgroud)

python selenium google-chrome selenium-chromedriver selenium-webdriver

8
推荐指数
1
解决办法
2万
查看次数

org.openqa.selenium.WebDriverException:等待驱动程序服务器启动超时。构建信息:版本:“未知”,修订:“未知”

虽然我的机器上一切正常,但当我在我的服务器上运行项目时,Selenium 和 Chromedriver 无法启动,导致以下异常

2018-08-31 09:16:06,578 ERROR [stderr] (Exec Stream Pumper) /home/app.conf/homebooks2/chromedriver: 1: /home/app.conf/homebooks2/chromedriver: Syntax error: Unterminated quoted string
2018-08-31 09:16:26,570 ERROR [io.undertow.request] (default task-1) UT005023: Exception handling request to /crawlerClass/myCrawler/5922: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'shaula', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'i386', os.version: '3.16.0-44-generic', java.version: '1.8.0_92'
Driver info: driver.version: ChromeDriver
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at …
Run Code Online (Sandbox Code Playgroud)

java ubuntu selenium spring selenium-chromedriver

7
推荐指数
1
解决办法
4万
查看次数