当我的浏览器在 Selenium 的控制下运行时,Google 拒绝我的登录尝试?

问题描述 投票:0回答:2

我正在尝试使用自动从我的 YouTube 视频中删除垃圾评论。 YouTube 目前仍然没有用于删除垃圾评论的 API。 我只想自动从我频道上的视频中删除垃圾评论。 我有自然语言处理经验,我在垃圾评论中检测到的模式可以让我轻松删除它们。 我只需要能够手动登录我的帐户,然后使用 Selenium 和一些代码来删除烦人的垃圾评论。

请注意以下几点:

  • 使用Selenium/Chrome的无头版本。 我正在运行一个 ChromeDriver 版本,它可以自动执行完整的 Chrome 浏览器实例。
  • 我正在手动登录,方法是直接在浏览器页面的输入元素中输入我的用户名和密码。
用户代理中的某些内容、ChromeDriver 设置的标志或其他内容触发了拒绝?

我做了很多网络搜索,包括 SO,大多数有关检测的消息都与使用“无头”版本的 Selenium 或识别自动登录尝试的某些输入模式有关。 正如我上面所说,我没有做这些事情,因为在触发自动化代码之前,我手动登录。 我还看到了一些对“无法检测到”的 chrome 驱动程序的引用,但这是一个值得信赖的项目吗?它是否只适用于

headless 版本的 Selenium? 有人可以告诉我如何解决这个问题吗? 我真的厌倦了手动删除垃圾评论。

我曾经对此做过一些研究。某些网站(可能包括youtube、google的网站)如果检测到您正在使用网络驱动程序,就会阻止您的请求(甚至阻止您的IP)(他们会认为您是机器人,无论您是否使用headless,手动登录与否)。我认为有两种不同的方法:
selenium-webdriver youtube selenium-chromedriver webdriver
2个回答
1
投票

尝试隐藏您的网络驱动程序跟踪:使用一些软件包,例如

selenium-stealth
  1. unDetected-chromedrive 或手动放置一些标志作为 this SO 答案 尝试不同的方法,如果您想删除 Youtube 上的垃圾评论,请尝试使用他们的官方 API
  2. Youtube Comment API 文档。这个SO评论可能有帮助 他们如何检测网络驱动程序的其他一些有用信息:

网站可以检测到您何时将 Selenium 与 chromedriver 一起使用吗?

是否存在无法检测到的 Selenium WebDriver 版本?

如果您的 Chrome 浏览器是使用 Chromedriver 启动的,那么有可检测到的证据表明网站可以用来确定您是否正在使用 Selenium,然后他们可以阻止您。但是,如果 Chrome 浏览器在 Chromedriver 连接到它之前就已经启动,那么您的浏览器看起来就不再像自动化控制的浏览器了。现代网络自动化库(例如

1
投票
)意识到了这一点,因此它们确保 Chrome 在连接到

chromedriver 之前已启动。

我在这些情况下使用的现代框架是未检测到的 chromedriver 模式下的 
SeleniumBase
。这是一个可用于通过自动化检测的脚本:(使用 
python

安装

seleniumbase 后,使用 pip install seleniumbase

 运行)
from seleniumbase import SB

with SB(uc=True) as sb:
    sb.open("https://www.google.com/gmail/about/")
    sb.click('a[data-action="sign in"]')
    sb.type('input[type="email"]', "[email protected]")
    sb.click('button:contains("Next")')
    import pdb; pdb.set_trace()
    # sb.type('input[type="password"]', PASSWORD)
    # sb.click('button:contains("Next")')
它会抛出一个断点,以便您可以在浏览器保持打开状态时控制脚本。


© www.soinside.com 2019 - 2024. All rights reserved.