相关疑难解决方法(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万
查看次数

Chrome 的 useAutomationExtension 功能是什么?

我在运行 Selenium 测试时遇到了一个问题。SO答案之一建议使用禁用Chrome自动化扩展useAutomationExtension-

options.setExperimentalOption("useAutomationExtension", false);
Run Code Online (Sandbox Code Playgroud)

我想了解到底useAutomationExtension是什么。因此,我将能够弄清楚它会对测试产生什么影响,并决定是否禁用。

selenium chromium google-chrome-extension selenium-chromedriver selenium-webdriver

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

在执行一段时间后,Selenium 为所有网站提供“从渲染器接收消息超时”

我有一个应用程序,我需要一个长时间运行的Selenium Web 驱动程序实例(我在无头模式下使用Chrome 驱动程序 83.0.4103.39)。基本上,该应用程序不断从队列中提取 url-data,并将提取的 url 提供给 Selenium,Selenium 应该在网站上执行一些分析。许多这些网站可能已关闭、无法访问或损坏,因此我将页面加载超时设置为 10 秒,以避免 Selenium 永远等待页面加载。
我在这里遇到的问题是,经过一些执行时间(假设 10 分钟)Selenium 开始给出Timed out receiving message from renderer每个 url 的错误。最初它工作正常,它可以正确打开好的网站并在坏网站上超时(网站无法加载),但一段时间后它开始对所有内容超时,即使是应该正确打开的网站(我已经检查过,它们在 Chrome 浏览器上正确打开)。我很难调试这个问题,因为应用程序中的每个异常都被正确捕获。我也注意到这个问题只发生在headless模式中。

  • 更新 *
    在网站分析期间,我还需要考虑 iframe(仅顶级),因此我还添加了一个逻辑来将驱动程序上下文切换到主页中的每个 iframe 并提取相关的 html。

这是应用程序的简化版本:

import traceback
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

width = 1024
height = 768

chrome_options = Options()
chrome_options.page_load_strategy …
Run Code Online (Sandbox Code Playgroud)

python iframe selenium renderer selenium-chromedriver

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

如何通过Selenium摆脱信息栏“Chrome正在被自动化测试软件控制”

已经搜索了一段时间并尝试了所有存在的解决方案,但似乎没有一个有效。我创建了一个“幻灯片”,首先登录,然后在选项卡之间交替。所有这些都在起作用,但我无法摆脱

“Chrome 正在被自动化测试软件控制”栏。有什么建议吗?

代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
usernameStr = 'test'
passwordStr = 'test'
browser = webdriver.Chrome()

#first tab
browser.get(('www.testwebsite.com?'))
# fill in username and hit the next button
username = browser.find_element_by_id('username')
username.send_keys(usernameStr)
password = WebDriverWait(browser, 10).until(
    EC.presence_of_element_located((By.ID, 'password')))
password.send_keys(passwordStr)
nextButton = browser.find_element_by_class_name('emp-submit')
nextButton.click()

#second tab
browser.execute_script("window.open('about:blank', 'tab2');")
browser.switch_to.window("tab2")
browser.get('www.testwebsite.com')
Run Code Online (Sandbox Code Playgroud)

python selenium webdriver selenium-chromedriver selenium-webdriver

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

无法在 Chrome v76 中隐藏“Chrome 正在由自动化软件控制”信息栏

这不是一个真正的新问题,也不是原始问题的答案,而是要求澄清,因为原始问题的答案不完整,但任何澄清请求都会被删除......

原始帖子在这里...无法在 Chrome v76 中隐藏“Chrome 正在由自动化软件控制”信息栏

因此,虽然我理解您的原始答案,但我们不使用 Chrome 的托管实例,而且我们都在 Windows 10 家庭版上运行......因此,您的答案设置不是我们的选择。另一方面,我们所有的回归测试现在都失败了,因为这个愚蠢的横幅阻碍了一切。

运行 Windows 10 家庭版的非 IT 管理用户是否可以取消此横幅?

如果没有,谷歌如何期望我们继续使用 Chrome 进行测试?非常感谢任何建议......另外,我正在使用 Python,所以如果你提供代码示例,请记住这一点......这是我目前正在做的事情,它在上周之前工作,但现在不工作。 ..

options = webdriver.ChromeOptions()

options.add_argument('--start-maximized')
options.add_argument("--disable-infobars")
options.add_argument("--disable-extensions")
options.add_argument("--disable-automation")

options.add_argument("--log-level=3")
# options.add_argument('headless')
options.add_argument('window-size=1920x1012')
options.add_experimental_option("prefs", {"download.prompt_for_download": False})
options.add_experimental_option("prefs", {"plugins.plugins_list": [{"enabled": False, "name": "Chrome PDF Viewer"}]})
options.add_experimental_option("prefs", {"download.default_directory": os.path.abspath(context.BaseResultsDir + '/Downloads/')})
options.add_experimental_option("prefs", {"download.extensions_to_open": "applications/pdf"})
context.driver = webdriver.Chrome(chrome_options=options)
Run Code Online (Sandbox Code Playgroud)

selenium-chromedriver

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

禁用铬黄色信息栏?

在此输入图像描述

我正试图去除黄色的信息栏.试过这个,将该参数添加到快捷方式,没有运气:

C:\Users[USERNAME]\AppData\Local\Google\Chrome\Application\chrome.exe –disable-web-security
Run Code Online (Sandbox Code Playgroud)

隐藏这个黄色信息栏的正确方法是什么?谢谢

google-chrome

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