Главная/Блог/Гайд/shot-scraper 1.11: Глубокий анализ…
Гайд4 мин чтения · 14 июля 2026 г.

shot-scraper 1.11: Глубокий анализ обновлений для веб-скрейпинга

Разбираем релиз shot-scraper 1.11: новые возможности для асинхронного скрейпинга, улучшенная стабильность серверов и гибкое управление JavaScript.

shot-scraper 1.11: Глубокий анализ обновлений для веб-скрейпинга

В мире автоматизации веб-взаимодействий и сбора данных инструменты, которые сочетают в себе простоту использования и мощь современных браузерных движков, являются золотым стандартом. Одним из таких инструментов, заслужившим доверие разработчиков и исследователей данных, является утилита командной строки shot-scraper. 12 июля 2026 года Simon Willison представил релиз версии 1.11, который, несмотря на статус «незначительного улучшения», вносит важные изменения в архитектуру работы с серверными процессами и обработкой JavaScript-скриптов. В этой статье мы подробно разберем каждое нововведение, объясним, почему оно важно для ваших проектов, и покажем, как эти изменения могут повысить надежность ваших пайплайнов сбора данных.

Shot-scraper давно зарекомендовал себя как незаменимый инструмент для создания скриншотов веб-страниц, записи видеодемо и извлечения данных с сайтов, требующих выполнения клиентского JavaScript. Однако по мере усложнения веб-приложений и увеличения времени загрузки ресурсов, старые методы ожидания готовности страницы стали недостаточными. Обновление 1.11 направлено именно на решение этих проблем, предлагая более гибкие и надежные механизмы взаимодействия с целевыми URL. Давайте погрузимся в детали.

01Проблема «гонок» и новый механизм ожидания сервера

Одной из самых частых причин сбоев при автоматизации веб-тестирования и скрейпинга является так называемая «гонка состояний» (race condition). Это ситуация, когда скрипт пытается взаимодействовать с веб-страницей или сервером до того, как тот будет полностью готов принимать соединения. В предыдущих версиях shot-scraper, особенно в командах shot-scraper video и shot-scraper multi, использовалась фиксированная задержка перед тем, как начать работу с целевым URL. Этот подход был прост в реализации, но крайне ненадежен в реальных условиях.

Представьте себе сценарий: вы запускаете скрипт, который должен записать видео работы с веб-приложением. Приложение развернуто локально или на тестовом сервере, и его запуск занимает заметное время. В старой версии shot-scraper попытался бы подключиться к порту сразу после истечения фиксированного интервала, получил бы ошибку соединения и прервал бы выполнение скрипта. Это приводило к ложным срабатываниям ошибок и требовало ручной отладки или добавления искусственных задержек в код, что неэффективно.

shot-scraper 1.11: Глубокий анализ обновлений для веб-скрейпинга

В версии 1.11 этот фундаментальный недостаток был устранен. Теперь процессы server:, используемые как для записи видео, так и для мульти-скриншотов, реализуют механизм активного опроса (polling). Вместо фиксированной задержки, утилита будет проверять доступность порта и готовность URL принимать соединения в течение длительного времени. Это означает, что если ваш сервер запускается за несколько секунд, shot-scraper будет терпеливо ждать, пока порт не станет открытым, и только затем начнет запись или сканирование.

💡
Почему это важно. Увеличение времени ожидания покрывает большинство случаев запуска локальных серверов разработки, контейнеров Docker или медленных облачных инстансов. Это устраняет необходимость в ручном управлении таймерами и делает ваши скрипты воспроизводимыми.

Техническая реализация опроса порта

Механизм опроса работает следующим образом: после инициализации целевого процесса (например, запуска локального веб-сервера) shot-scraper начинает цикл проверок. На каждой итерации он пытается установить TCP-соединение с указанным портом. Если соединение успешно, скрипт переходит к следующему шагу. Если нет — он ждет небольшой интервал и повторяет попытку. Этот процесс продолжается до тех пор, пока не будет достигнут лимит времени или пока порт не станет доступен.

Это решение, отмеченное в issue #197, значительно повышает устойчивость ваших автоматизированных тестов и скриптов скрейпинга. Особенно это актуально для CI/CD пайплайнов, где стабильность выполнения критически важна. Теперь вам не нужно беспокоиться о том, что ваш сервер «не успел» запуститься из-за случайной нагрузки на систему.

shot-scraper 1.11: Глубокий анализ обновлений для веб-скрейпинга

02Гибкое управление JavaScript: от строк к файлам

Второе крупное улучшение касается работы с JavaScript. Раньше, чтобы выполнить произвольный JS-код на странице, разработчики использовали флаг --javascript, который принимал строку кода непосредственно в аргументе командной строки. Хотя этот метод удобен для простых скриптов, он становится неудобным и подверженным ошибкам при работе с более сложной логикой, многострочным кодом или внешними библиотеками.

В версии 1.11 для команд shot-scraper pdf, shot-scraper html, shot-scraper accessibility и shot-scraper har добавлена новая опция --js-file. Эта опция позволяет загружать JavaScript-код из трех различных источников:

  1. Локальный файл: Вы можете указать путь к файлу с расширением .js, содержащему ваш скрипт. Это позволяет использовать редакторы кода с подсветкой синтаксиса, проверкой типов и другими инструментами разработки.
  2. Стандартный ввод (stdin): Вы можете передать код через конвейер (pipe), что удобно для интеграции с другими утилитами или генерацией скриптов на лету.
  3. GitHub Gist: Уникальная возможность — указать URL Gist-а GitHub в формате gh:username/script. Это позволяет хранить ваши скрипты в облаке и легко делиться ими с коллегами или использовать в разных проектах без дублирования кода.

Эта новая опция является альтернативой, а не заменой для --javascript. Если вам нужно выполнить простой однострочный скрипт, вы по-прежнему можете использовать старый метод. Однако для сложных сценариев, таких как ожидание появлени

Источник: Simon Willison ↗