logo

如何使用 Playwright 绕过 Akamai

2024-06-22 12:33
本文介绍了如何使用 Playwright 绕过 Akamai。

集蜂云是一个可以让开发者在上面构建、部署、运行、发布采集器的数据采集云平台。加入到数百名开发者中,将你的采集器发布到市场,从而给你带来被动收入吧!

您的 Playwright 抓取脚本是否被 Akamai 阻止?这不足为奇。Akamai 强大的安全措施可保护网站免受有害机器人的侵害,并成功阻止抓取工具的访问。

在本指南中,您将探索使用 Playwright 绕过 Akamai 防御的最佳策略。

为什么 Base Playwright 不足以绕过 Akamai?

虽然Playwright 是一款功能强大的网络抓取工具,但要绕过 Akamai 的高级安全措施,还需要更多基本版本。

Playwright 是一个自动化网络交互的开源框架。它擅长渲染网页、处理 JavaScript 以及管理 Cookie 和会话,因此是网络抓取的热门选择。

然而,其基本版本并没有提供任何方法来应对 Akamai 的检测技术。Akamai 使用 CAPTCHA 并识别可疑的 IP 地址、非人类行为模式以及自动浏览器的默认设置。

例如,让我们尝试访问受 Akamai 保护的Similarweb 比较页面:

以下 Playwright 脚本导航到 Similarweb 网页并截取屏幕截图:

# pip install playwright
# playwright install
import asyncio
from playwright.async_api import async_playwright
 
async def main():
    # launch the Playwright instance
    async with async_playwright() as p:

        # launch the browser
        browser = await p.chromium.launch()

        # create a new context 
        context = await browser.new_context()

        # create a new page within the context
        page = await context.new_page()

        # navigate to the desired URL
        await page.goto("https://www.similarweb.com/website/facebook.com/")

        # wait for any dynamic content to load
        await page.wait_for_load_state("networkidle")
    
        # take a screenshot of the page
        await page.screenshot(path="screenshot.png")
        print("Screenshot captured!")

        # close the browser
        await browser.close()
 
asyncio.run(main())

Akamai 拒绝访问您的脚本:

如您所见,仅仅使用 Playwright 而不采用其他策略无法让您访问所需的网页。

幸运的是,有办法克服这个障碍。在下一节中,我们将探讨使用 Playwright 进行抓取而不被阻止的三种最佳策略。

使用 Playwright 绕过 Akamai 的最佳方法 Akamai 的安全系统非常先进,因此您需要同样先进的解决方案来避免被标记为机器人。您可以通过使用 Web 抓取 API、安装 Playwright Stealth 或添加高级代理来实现这一点。

方法 1:使用 Web Scraping API 获得高成功率

Web 抓取 API 是专为克服 CAPTCHA、IP 封禁和其他反机器人保护等挑战而设计的工具。此外,所有绕过操作都“在后台”进行,因此它们减少了您需要执行的手动任务数量。

将Similarweb 比较页面URL粘贴到要抓取的 URL 框中。启用 JS 渲染并单击高级代理复选框。选择 Python 作为您的语言,然后单击 API 选项卡。

方法 2:使用 Playwright Stealth 插件

机器人检测系统可以轻松识别无头浏览器独有的属性,因此使用 Playwright 会使您的抓取工具容易受到攻击:

诸如的属性navigator.webdriver被设置为true,网站可以检测到这些属性,以识别无头浏览器。 该值navigator.hardwareConcurrency可能无法准确表示典型用户设备上可用的 CPU 核心数量。 navigator.plugins和等属性navigator.languages可能包含常规浏览器中通常找不到的不寻常值。 Playwright Stealth 插件会修改 Playwright 的默认配置,以避免插件泄漏而将您标记为机器人。该插件的GitHub 存储库包含 Playwright 和 Playwright Stealth 之间的比较测试结果,这些结果描述了基础 Playwright 如何未通过浏览器指纹测试。

然而,该插件有一些局限性。它是从puppeteer-extra-plugin-stealth软件包移植而来,该软件包的创建者承认它有时仍会被检测到,因此在尝试绕过 Akamai 等高级反机器人解决方案时,你不能依赖它。

查看我们关于使用 Playwright Stealth 进行抓取的教程以了解更多信息。

方法 3:使用高级代理

代理充当网页抓取工具和目标网站之间的中介。当您通过代理发送请求时,该请求似乎来自代理服务器,而不是您的 IP 地址。

最常见的代理类型包括高级代理、数据中心代理、住宅代理、移动代理和公共代理。每种类型都有独特的优势,并且都可以与 Playwright 集成。

但是,只有高级代理才能提供自动 IP 轮换、高匿名性和卓越速度等功能,帮助绕过 Akamai 的先进技术,例如 IP 信誉检查、浏览器指纹识别和自动流量检测。

请查看我们关于使用 Playwright 代理的指南以获取更多信息。

结论

在本文中,您了解了为什么仅使用基本 Playwright 不足以绕过 Akamai。虽然 Playwright Stealth 插件只是部分可靠,但其他方法(例如高级代理和网络抓取 API)被证明是有效的解决方案。

集蜂云(beeize.com)是一个可以让开发者在上面构建、部署、运行、发布采集器的数据采集云平台。平台提供了海量任务调度、三方应用集成、数据存储、监控告警、运行日志查看等功能,能够提供稳定的数据采集环境。平台提供丰富的采集模板,简单配置就可以直接运行,快来试一下吧。

导航目录