9 Ninja的技巧,以防止机器人像灰色忍者一样被检测到。
#教程 #python #webscraping #webscrapingtools

介绍

想象一下:您已经编写了硒脚本来自动化网站,只能被Cloudflare和courmeterx等检测服务所阻止。

Cloudflare Bot Caught

在本文中,我将分享9条出色的技巧,以防止Cloudflare和enderetx检测到您的机器人。

在本文中,我还将向您介绍Bose Framework,这是我使用机器人开发技能创建的框架,以帮助机器人开发人员创建不可阻挡的机器人。将其视为瑞士军刀的机器人开发。

我将所有关于机器人开发的知识集中在一个易于使用的框架中,以使所有机器人开发人员受益。

现在,让我们学习提示,以避免像真正的忍者一样从Cloudflare和近距离检测。

尖端

1.用户代理和窗口尺寸旋转

机器人检测系统分析用户代理和窗口大小以识别bot。

例如,使用单个用户代理提出异常数量的请求(例如1000页访问)增加了被标记为BOT的机会。

另外,使用不使用中的组成用户代理也增加了被标记为机器人的机会。

因此,最好随机使用常用的用户代理,例如Chrome 104和Chrome 106。

在Bose框架中,以下代码段演示了如何在每次运行时实现用户代理和窗口大小的随机旋转:

from bose import *

class Task(BaseTask):
    browser_config = BrowserConfig(user_agent=UserAgent.RANDOM, window_size=WindowSize.RANDOM)

此外,如果您使用的是Bose框架而不是普通硒,则默认情况下将自动旋转用户代理。

2.更改您的IP

逃避检测,更改IP地址是另一个关键方面。网站通常跟踪IP地址以识别和阻止可疑活动。

如果您已通过CloudFlare或coimeterx等服务检测到您,则需要更改IP地址才能继续自动化。

有免费的和付费方法可以更改您的IP地址:

免费方法

启用和禁用飞机模式

在此方法中,您可以利用PC和移动热点之间的连接通过SIM卡访问Internet,然后在移动设备上启用和禁用飞机模式以获取新的IP地址。

此方法非常快,通常需要10秒才能获取新的IP。

这是您可以启用和禁用飞机模式来更改IP地址的方式:

  1. 将您的PC连接到移动热点。

  2. 在您的移动设备上,打开和关闭飞机模式

  3. 现在,再次打开热点。

打开和关闭WiFi路由器

对于连接到Wi-Fi网络的设备,关闭路由器,然后将其重新打开将更改IP地址。尽管这是缓慢的方法,因为WiFi路由器需要2-3分钟才能开始。

付费方法

诸如Oxylab和iproyal之类的付费服务提供了一系列住宅IP地址。但是,它们可能非常昂贵,住宅IP的价格平均每GB $ 15。如果您选择此方法并刮擦大量数据,请考虑禁用CSS和图像以降低成本。


通常,使用飞机模式的免费方法在大多数用例中都很好地工作。它不仅免费,而且比使用代理

更快

3.人道页面流

避免怀疑,通过像人类一样与网站互动来复制有机用户行为。通常,您应该遵循这些推荐。

通过搜索引擎访问页面

而不是直接访问页面,而是通过像Google这样的搜索引擎导航到它。这可以通过在搜索引擎上搜索来模拟用户通常如何发现网站。 BOSE框架在Selenium驱动程序中提供了一种称为有机get的特殊方法,该方法实现了这种行为。您可以按照以下方式使用它:

driver.organic_get("https://example.com")

使用内部链接导航

浏览器可以通过检查document.referrer属性来检测您来自的页面。在网站中访问多个页面时,请从Bose驱动程序中使用get_by_current_page_referrer方法。这种基于JavaScript的方法通过单击链接来模拟内部导航,使其看起来更自然:

driver.get_by_current_page_referrer("https://example.com")

4.使用随机等待并减慢机器人的速度

添加随机的等待时间并减慢动作之间的启动有助于模仿人类相互作用模式并逃避机器人检测。

Bose框架提供了short_random_sleep()long_random_sleep()方法,可以随机持续时间暂停机器人。

这是您可以使用它们的方法:

driver.short_random_sleep()
driver.long_random_sleep()

5.使用验证验解决服务

CloudFlare这样的服务可能会带来验证码挑战。为了克服这一障碍,您可以使用 2captcha 等验证码解决服务,从而解决了验证码。

6.使用Ultrafunkamsterdam的Chromedriver

Ultrafunkamsterdam的Chromedriver,由荷兰的Leon开发,是一种杰出的工具,可增强Selenium Driver的隐身。它应用补丁程序,使得像Cloudflare和coimeterx这样的检测服务更难检测机器人。

BOSE框架与Ultrafunkamsterdam的Chromedriver无缝集成。要使用它,请在browser_config中指定use_undetected_driver=True

class Task(BaseTask):
    browser_config = BrowserConfig(use_undetected_driver=True)

7.不要使用无头浏览器

避免使用无头浏览器,因为像enderetx这样的机器人检测系统可以通过检查特定的API来检测它们。

例如,JavaScript中的以下代码确定浏览器是否无头。在无头铬的情况下,测试将记录“无头铬”

navigator.permissions
  .query({ name: "notifications" })
  .then(function (permissionStatus) {
    if (
      Notification.permission === "denied" &&
      permissionStatus.state === "prompt"
    ) {
      console.log("Headless Chrome")
    } else {
      console.log("Not Headless Chrome")
    }
  })

8.保持用户代理,窗口大小和IP地址的一致性

如果您通过在硒中使用配置文件来维护会话,请确保用户代理和窗口大小保持相同的配置文件。

这些参数的突然变化,例如一次使用Chrome 106,然后使用Chrome 98,然后Chrome 102可以引起危险信号并导致检测。

在BOSE框架中,如果您在任务中指定了一个配置文件,它将使用该配置文件自动保留每个运行的用户代理和窗口大小。这是如何在Boss任务中指定配置文件的示例:

class Task(BaseTask):
    # The User Agent and Window Size will remain same on each run with profile 1.
    browser_config = BrowserConfig(profile=1)

另外,使用代理时,保持IP地址位置的一致性同样重要。避免从一个国家突然变为另一个国家,例如从巴拉特(印度)切换到俄罗斯,然后再转变为以色列。

9.使用Bose框架

每当您开发任何Selenium脚本时,都应确定使用Bose框架。

只要向thuolves玩耍,将pkack进化到raichu中©mon世界,框架的嘴将巨人转变为Develper。

https://www.omkar.cloud/bose/docs/tutorial/上阅读BOSE框架教程以创建强大的机器人。