网络抓取和浏览器自动化已经成为 不可或缺的 适用于许多企业和开发人员。但是,现在许多网站都会检测并阻止自动浏览。本文将探讨如何绕过 通过操纵用户代理并在后台运行 Selenium,使用 Python 实现检测。我们将深入介绍详细的步骤、工具和最佳实践,以确保成功进行网页抓取。

了解硒检测

在绕过检测之前,让我们先了解一下它的工作原理。网站可以通过检查某些 Web 驱动程序标志和属性是否存在来检测 Selenium。当网站识别出这些标志时,它可以阻止访问或显示误导性数据。例如,当您使用标准 Chrome 浏览器打开网站时,它会按预期响应。但是,当您使用 Selenium 打开同一个网站时,网站可以检测到自动化并将其阻止。之所以发生这种检测,是因为 Selenium 设置了网站可以查找的特定标志。

更改 WebDriver 标志

要绕过 Selenium 检测,一种有效的方法是修改 WebDriver 标志。

  1. Firefox 配置:输入以下命令打开 Firefox 配置页面 about:config 在地址栏中。找到与 WebDriver 相关的标志并将其设置为 false.
  2. 代码实现:
from selenium import webdriver

# Set Firefox preferences
options = webdriver.FirefoxOptions()
options.set_preference("dom.webdriver.enabled", False)
options.set_preference('useAutomationExtension', False)

driver = webdriver.Firefox(options=options)

该脚本禁用WebDriver检测标志,使浏览器看起来像常规的用户驱动实例。

用户代理

用户代理是浏览器发送给 Web 服务器以标识自身的字符串。更改用户代理字符串可能会使 Selenium 请求与常规浏览器请求难以区分。

更改用户代理的步骤:

  1. 识别常见的用户代理字符串: 例子: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
  2. 在 Selenium 中实现变更:
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)

通过设置自定义用户代理,我们可以绕过许多基本检测。

在后台运行 Selenium

在后台运行浏览器是逃避检测的另一个重要方面。这可以通过在无头模式下运行浏览器来实现。

实施情况:

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver = webdriver.Chrome(options=options)

在无头模式下运行意味着不显示图形界面,这对于在服务器上运行自动化任务至关重要。

禁用浏览器通知和声音

自动浏览通常涉及处理意外弹出窗口和通知。禁用这些可以简化流程。

代码示例:

from selenium import webdriver

options = webdriver.ChromeOptions()
prefs = {"profile.default_content_setting_values.notifications": 2}
options.add_experimental_option("prefs", prefs)
options.add_argument("--mute-audio")

driver = webdriver.Chrome(options=options)

该脚本禁用通知并静音,确保不间断的自动化。

解析数据示例

让我们考虑一个从生成随机用户名的网站解析昵称的实际例子。

阶梯:

  1. 加载网站并与元素交互:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36")

driver = webdriver.Chrome(options=options)
driver.get("https://example.com")

# Locate the username field and extract nicknames
usernames = []
for _ in range(10):
    nickname = driver.find_element(By.ID, "nickname").text
    usernames.append(nickname)
    driver.find_element(By.ID, "generate").click()
print(usernames)

总结

通过操纵 WebDriver 标志、更改用户代理、在后台运行 Selenium 以及禁用浏览器通知,您可以有效地绕过 Selenium 检测。这些技术对于无缝且未被检测到的 Web 抓取和自动化至关重要。实施这些方法可确保您的自动化任务保持不间断和高效。请记住始终合乎道德地使用 Web 抓取和自动化,尊重网站服务条款和数据隐私法。有关更多高级技术和定期更新,请继续关注我们的博客 罚款代理.org。欢迎在下面的评论中分享您的想法和反馈。如果您喜欢这篇文章,请不要忘记订阅我们的频道并留下赞。祝您抓取愉快!

通过执行这些步骤并根据需要调整设置,您可以确保您的自动化项目顺利运行且不被发现。

评论 (0)

这里还没有评论,你可以成为第一个评论者!

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注


选择和购买代理

数据中心代理

轮流代理

UDP代理机构

受到全球 10000 多家客户的信赖

代理客户
代理客户
代理客户 flowch.ai
代理客户
代理客户
代理客户