【问题标题】:Is there a way to use selenium with chrome and NOT chromedriver?有没有办法将 selenium 与 chrome 而不是 chromedriver 一起使用?
【发布时间】:2020-12-07 18:06:26
【问题描述】:

我正在尝试自动化一个可以检测 chromedriver 的网站。我使用了一个用户代理,我已经进入并更改了 chromedriver 的 cdc_ 部分,以及其他一些东西。无论我做什么,它都会检测到 chromedriver 并且不会做任何事情。

但是,我已经能够使用 Subprocesses 并打开我的普通浏览器和 sendkeys 来访问网站,并做一些我需要的事情,所以我知道它可以在我的普通浏览器中工作。

有什么方法可以启动常规 chrome 并将 selenium 附加到它以自动执行任务?

【问题讨论】:

    标签: python python-3.x selenium browser


    【解决方案1】:

    Chromedriver 驱动 chrome。这不是它自己的浏览器。

    手动打开chrome并转到chrome://version/

    然后打开您的网络驱动程序并转到the same link。您会看到 selenium 在新的/临时配置文件上启动 chrome 并启用更多参数。

    只有这一行没有选项 driver = webdriver.Chrome() 对我来说(在 python 中)启动带有一长串命令行参数的 chrome:

    由于 selenium 的工作方式,您很可能被检测到。

    这是一篇很好的帖子,详细介绍了问题和可能尝试的事情:Can a website detect when you are using selenium with chromedriver?

    网站可以检测到 selenium 设置的一些变量。

    @Erti-Chris Eelmaa 说得非常好:

    硒检测的工作方式是他们测试 运行时出现的预定义 javascript 变量 硒。机器人检测脚本通常看起来包含 任何变量中的单词“selenium”/“webdriver”(在窗口上 object),以及名为 $cdc_ 和 $wdc_ 的文档变量。的 当然,所有这些都取决于您使用的浏览器。所有的 不同的浏览器会暴露不同的东西。

    您可以禁用 javascript,并通过实验性标签禁用“--enable-automation”,但这会影响 selenium 的功能,您的脚本可能无法运行。

    这可能不是您想听到的,但是当您处理这个(使用 selenium)时,请记住该网站旨在阻止自动化,因此您将面临一场艰苦的战斗。

    【讨论】:

    • 感谢您的回复。因此,当我执行 driver = webdriver.Chrome() 时,它仍然会打开 chromedriver 应用程序。当我将 chromedriver 应用程序移出我的文件夹时,它会出错。当我执行 driver = webdriver.Chrome('C:PATH\\TO\\Chrome.exe') 时,它会打开 chrome,但是当我执行 driver.get(webpage) 时,它永远不会进入网站。但是在打开的浏览器窗口中,如果我手动访问该站点,它就可以正常工作(我假设是因为它使用的是 CHROME 而不是 chromedriver)。
    • 似乎如果我使用 driver = webdriver.Chrome() 打开 CHROME 而不是 Chromedriver,那么脚本就会挂起,并且永远不会继续。有没有办法更改我的 driver = webdriver.Chrome('C:\\Path\\To\\chrome.exe') 行,以便它打开 chrome 作为我的驱动程序,然后继续执行脚本?
    • 通过脚本打开 chromedriver 并查看任务管理器。您运行 chromedriver.exe 并启动 chrome.exe。您会看到两个进程都在运行。 Chromedriver 是几 mb,但相比之下,chrome 是巨大的。 Chromedriver 是您控制 chrome 的界面。你可以说它的驱动 chrome :-)
    • 看看 Chromedriver 网站,上面写着“WebDriver 是一个开源工具,用于在许多浏览器中自动测试 web 应用程序。它提供导航到网页、用户输入、JavaScript 执行等功能. " chromedriver.chromium.org
    • 我明白这一点。但是当我让 chromedriver 打开 chrome 时,我去 www.kroger.com 并做任何事情,而当我直接打开 chrome(没有 chromedriver)时,我会得到完全不同的结果。该网站知道您何时使用自动化软件。这就是我要避免的。几年前,我通过 excel 用 VBA 编写了一个脚本,它能够将一个已经打开的浏览器带到前面,并与浏览器进行交互。我能够使用 CSS 选择器并单击按钮并自动化操作。这就是我想用 python 做的事情......必须有办法。
    猜你喜欢
    • 2020-07-19
    • 2018-03-15
    • 2016-11-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多