Освоение Puppeteer: руководство по настройке места загрузки

Puppeteer — это мощная библиотека Node.js, позволяющая управлять веб-браузерами и автоматизировать их. Одной из распространенных задач при использовании Puppeteer является установка места загрузки файлов. В этой статье блога мы рассмотрим различные методы достижения этой цели, дополненные разговорными объяснениями и примерами кода. Итак, давайте окунемся в мир Puppeteer и научимся контролировать свои загрузки!

Метод 1: использование метода page._client.send
Первый метод предполагает использование метода page._client.sendдля отправки команды непосредственно в браузер. Этот метод позволяет настроить поведение браузера, включая место загрузки. Вот пример того, как вы можете установить место загрузки с помощью этого метода:

await page._client.send('Page.setDownloadBehavior', {
  behavior: 'allow',
  downloadPath: '/path/to/downloads/folder'
});

Метод 2. Изменение настроек Chrome
Другой подход — изменить настройки Chrome с помощью метода page.setExtraHTTPHeaders. Установив настройку download.default_directory, вы можете указать желаемое место загрузки. Вот пример:

await page.setExtraHTTPHeaders({
  'Content-Disposition': 'attachment; filename="path/to/downloads/folder"'
});

Метод 3: эмуляция объекта navigator
Вы также можете эмулировать объект navigator, чтобы изменить поведение браузера. Переопределив свойства navigator, вы можете управлять местом загрузки по умолчанию. Вот пример:

await page.evaluateOnNewDocument(() => {
  Object.defineProperty(navigator, 'webdriver', {
    get: () => false,
  });
  Object.defineProperty(navigator, 'plugins', {
    get: () => [1, 2, 3, 4, 5],
  });
  Object.defineProperty(navigator, 'languages', {
    get: () => ['en-US', 'en'],
  });
});

Метод 4: использование библиотеки puppeteer-extra.
Puppeteer предлагает расширение под названием puppeteer-extra, которое предоставляет дополнительные функции. Одной из таких функций является возможность легко установить место загрузки. Вот пример:

const puppeteer = require('puppeteer-extra');
const pluginStealth = require('puppeteer-extra-plugin-stealth');
puppeteer.use(pluginStealth());
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page._client.send('Page.setDownloadBehavior', {
  behavior: 'allow',
  downloadPath: '/path/to/downloads/folder'
});
await browser.close();

Установка места загрузки в Puppeteer имеет решающее значение при автоматизации очистки веб-страниц и других задач автоматизации браузера. В этой статье мы рассмотрели несколько методов достижения этой цели, в том числе использование метода page._client.send, изменение настроек Chrome, эмуляцию объекта navigatorи использование 15библиотека. Применяя эти методы, вы сможете полностью контролировать свои загрузки и улучшить рабочие процессы автоматизации с помощью Puppeteer.