Django 用户认证 用户 邮箱登录 邮箱注册 ORM or,and,not form.py FORM ModelForm Paginator 分页 HTMl JQuery 定位元素 ajax django切片 restfulapi 跨域 Ubantu Python Mysql Scrapy 爬虫 导出 Python读写 Pycharm 破解 session re sqlit3 生成式 其他 Prism 富文本 CSS Nginx 部署 请求头 抓包 协议 selenium Ubuntu 宝塔 AI Comfy-ui ollama dify open-webui Git docker
使用 Playwright 和 Stealth 模式绕过网站检测
张建行 2024年12月9日 19:35 218 文章标签: 爬虫 破解 session 请求头 抓包 协议 selenium

使用 Playwright 和 Stealth 模式绕过网站检测

在现代网络环境中,许多网站都具备检测自动化工具(如爬虫)的能力,这给自动化测试和爬虫带来了挑战。Playwright 是一个强大的自动化库,它支持多种浏览器,并提供了绕过这些检测的方法。本文将解析一段使用 Playwright 和 Stealth 模式绕过网站检测的代码。

1. Playwright 简介

Playwright 是一个由 Microsoft 开发的自动化库,用于自动化跨浏览器的 Web 测试。它支持 Chrome、Firefox、Safari 和 Edge 等主流浏览器,并提供了一系列功能,如截图、PDF生成、性能监控等。

2. Stealth 模式

Stealth 模式是一种用于绕过网站检测的技术。它通过修改浏览器的属性和行为,使自动化工具看起来更像人类用户。这包括修改 navigator.webdriver 属性、navigator.languages 属性和 navigator.plugins 属性等。

3. 代码解析

让我们来分析一下这段代码的主要部分:

3.1 启动浏览器

 browser = p.chromium.launch(headless=False, args=[
     '--disable-gpu',
     '--disable-software-rasterize',
     '--disable-blink-features=AutomationControlled'
 ])

这段代码使用 Playwright 启动了一个 Chromium 浏览器实例。headless=False 表示浏览器将以可见模式启动,方便调试。args 参数用于传递额外的命令行参数,这里禁用了 GPU、软件光栅化和自动化控制特性,以减少被检测到的可能性。

3.2 创建浏览器上下文

 context = browser.new_context(
     user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'
 )

这里创建了一个新的浏览器上下文,并设置了用户代理。用户代理是一个字符串,用于标识浏览器和操作系统。设置一个常见的用户代理可以减少被检测到的可能性。

3.3 注入 Stealth 模式的 JavaScript

 context.add_init_script("""
     delete navigator.__proto__.webdriver;
     window.navigator.webdriver = false;
     Object.defineProperty(navigator, 'languages', {
         get: () => ['en-US', 'en']
     });