Каждый может использовать Next.js шаблон. Каждый может использовать API. Каждый может добавить чат-бота с искусственным интеллектом в свой продукт.
Даже если вы попадете в бизнес, который работает с этими методами, у вас все равно не будет рва. Вы по-прежнему ничем не отличаетесь от конкурентов, не говоря уже обо всех подражателях, которые придут после вас.
Если вы действительно хотите создать что-то, что понравится, вам нужно искать функции, которые слишком сложно воспроизвести. К счастью, это также, как правило, те функции, которые наиболее ценны для ваших пользователей.
Вопрос в том, где вы находите эти функции? И как вы их создаете?
Автоматизация браузера уникальна
Когда я думаю о рве, мой разум всегда обращается к браузеру. Почему? Потому что все происходит в браузере, даже то, что вы не можете сделать с помощью API.
Например, вы не можете автоматизировать процесс регистрации новой учетной записи на веб-сайте. Вы не можете автоматизировать процесс заполнения формы. Вы не можете автоматизировать процесс нажатия на кнопку.
Вы также не можете собирать ценные данные веб-сайта, взаимодействовать в социальных сетях, отслеживать цены конкурентов, обеспечивать производительность веб-сайта или создавать красивые изображения, видео и интерактивные PDF-файлы.
Вы также не можете предоставить LLM прямой доступ к постоянному сеансу браузера для выполнения действий от имени пользователя.
Тем не менее, это все, что вы можете сделать с помощью безголового браузера и небольшого количества кода.
Автоматизация браузера оправдана
Почему же тогда многие люди не создают эти функции?
Ну, автоматизация браузера — это своего рода проблема.
Во-первых, Веб постоянно меняется, поэтому вам нужно написать свой код автоматизации, чтобы он был устойчивым, и вам нужно убедиться, что вы будете уведомлены, когда что-то из вашей устойчивости выйдет из строя.
Во-вторых, ваши целевые веб-сайты, вероятно, не хотят, чтобы вы взаимодействовали с ними программно. Закон США ясен: ваш код может свободно взаимодействовать с Сетью, как и человек. Но закон не запрещает сайтам находить способы заблокировать вас. Таким образом, вам также потребуется немного навыков, чтобы избежать обнаружения и обойти меры по борьбе с ботами.
В-третьих, сложно размещать браузеры без головы. Они очень большие, очень тяжелые и масштабируются не так, как ваш обычный API. Например, ваш API может поддерживать 1000 запросов в секунду, но при том же профиле процессора/памяти ваш безголовый браузер может поддерживать только 10 запросов в секунду. Они также не так хорошо работают в бессерверных средах. Так что лучше размещать браузеры отдельно.
Автоматизация браузера ценна
Все сказанное говорит о том, что, когда вы правильно настроите автоматизацию браузера, вы можете брать за это большие деньги. Просто посмотрите цены на собственные наборы данных, автоматизацию LinkedIn или корпоративный RPA (роботизированная автоматизация процессов). Ча-чинг!
Самое приятное то, что в каждой нише есть возможности для автоматизации браузеров. Поговорите с кем угодно, в любой отрасли, о том, что им приходится делать для выполнения своей работы, и вы обнаружите множество возможностей.
Помните, что большинство работников умственного труда тратят подавляющее большинство своего времени на выполнение повторяющихся задач в браузере… и они это ненавидят!
Это просто немного раздражает при создании, поэтому большинство людей этого не делают.
Автоматизация браузера может быть простой
Я работал с автоматизацией браузера в течение многих лет, от крупных корпоративных выступлений до инди-стартапов и личных сайд-проектов. Я сталкивался практически со всеми существующими проблемами и многому научился о том, как упростить их.
Давайте вернемся к нашему списку проблем:
Написание отказоустойчивого кода
Предотвращение обнаружения
Размещение безголовых браузеров
Написание отказоустойчивого кода
Даже если вы всего лишь «приличный» разработчик, эти методы не являются недоступными. В конце концов, Веб меняется не так уж сильно и не так часто.
Это сводится к нескольким простым практикам:
Обрабатывайте все возможные ошибки. Вы никогда не хотите, чтобы ваша работа завершилась неудачей, когда она могла бы завершиться успешно. Всегда продумывайте способы, которыми ваш код может завершиться ошибкой, и обрабатывайте их превентивно.
Пишите идемпотентный код. Возможно, вам придется повторно запускать свои задания, и вы хотите убедиться, что в дальнейшем это не создаст новых проблем.
Поддерживайте частичные успехи. В сложных заданиях многое может пойти не так. Но вам нужно подумать о своих пользователях. Убедитесь, что даже в случае сбоя задания вы отслеживаете успешные части и сообщаете о них.
Выберите элементы с резервными вариантами. Например, вы выбираете кнопку по ее тексту, идентификатору и местоположению на странице. Затем вы выбираете первое совпадение.
Запускаете взаимодействия с резервными вариантами. Например, если ваша первая стратегия отправки формы не удалась, попробуйте альтернативный метод.
Уведомляйте себя о сбоях. В конце выполнения соберите данные о том, что не удалось и почему. В ваших скриптах всегда должны быть резервные варианты, поэтому нехорошо, если из-за изменений по-прежнему работает только один путь. Служба отслеживания ошибок Am, такая как Sentry, отлично подходит для этого.
Как и все в программировании, эти приемы кажутся более сложными, чем они есть на самом деле. Как только вы проделаете их несколько раз, они станут вашей второй натурой.
Я начал писать о них в блоге BrowserCat. Ознакомьтесь с моим руководством по улучшению ваших селекторов, чтобы попробовать.
Избежать обнаружения
Эта задача может показаться еще более сложной, но на самом деле она намного проще, чем вы думаете. Я перечислил следующие рекомендации в порядке убывания эффективности. Выполняйте их только тогда, когда вы обнаружите, что они вам действительно нужны.
Используйте безголовый браузер. Легко определить, что простые запросы fetch() являются ботами. Но настоящий безголовый браузер полностью неотличим от обычного экземпляра браузера. Вот почему большинство API-интерфейсов для очистки берут с вас в 5 раз больше кредитов за привилегию.
Ограничьте свои запросы. Обычные люди не делают 100 запросов в секунду. Ваши рабочие места тоже не должны этого делать. Их слишком легко обнаружить, поэтому большинство противников (включая Amazon, LinkedIn и X) полагаются на этот показатель как на первую или единственную линию защиты.
Используйте ротацию локальных прокси-серверов. Если вы делаете много запросов с одного коммерческого IP-адреса, вас обнаружат. Но, используя множество локальных IP-адресов в вашей целевой стране, вы будете выглядеть гораздо более похожим на реального пользователя.
Имитировать поведение человека. Некоторые сложные меры по борьбе с ботами будут учитывать движение мыши, шаблоны клавиатуры и «скорость выполнения» действий на месте. К счастью, с помощью браузера без головы, некоторых вспомогательных методов и генератора случайных чисел вы можете обойти большинство обнаружений. Библиотеки с открытым исходным кодом помогут с несколькими оставшимися крайними случаями.
Решайте капчи. Если вас все еще обнаруживают, вы можете положиться на сторонние API, которые решат капчи за вас. Некоторые будут использовать реальных людей, в то время как другие будут использовать искусственный интеллект. В любом случае, вы получите решение всего за несколько секунд. Тем не менее, лучше никогда не переходить к этому шагу. Большинству это не понадобится.
Размещение безголовых браузеров
Это самая раздражающая часть автоматизации браузера.
Как упоминалось выше, браузеры сильно зависят друг от друга, и они должны размещаться отдельно от вашего кода. В бессерверном режиме у них ужасное время прогрева, их дорого запускать, и они ограничены многими громоздкими способами. Но при развертывании в docker вам необходимо управлять масштабированием до нуля, иначе вы потратите кучу денег впустую.
Между тем, если вы хотите создавать видео, загружать большие файлы, повторно использовать постоянные пользовательские сеансы или любым другим способом в полной мере использовать преимущества браузера, вам предстоит разработать множество других элементов инфраструктуры.
Самая большая проблема не в том, что это сложно сделать, а скорее в том, что вам приходится это делать, вместо того чтобы создавать свой продукт. Это огромное, дорогостоящее, болезненное отвлечение. (Даже если вы начинаете с базовой линии, такой как изображение docker от Драматурга.)
Это основная причина, по которой автоматизация браузера не становится более популярной.
ШАГ: Вот почему я создаю BrowserCat. BrowserCat размещает и масштабирует безголовые браузеры, чтобы вам не приходилось этого делать. Размещайте свой код на наших серверах и платите только за то, что вы используете. Я стремлюсь сделать работу с безголовыми браузерами дешевой, быстрой и простой, поэтому обращайтесь с любыми вопросами или отзывами, которые у вас есть.
Напишите свою первую автоматизацию браузера
Если вы заинтересованы в создании рва с помощью автоматизации браузера, ознакомьтесь с моей статьей о написании вашего первого скрипта. В нем показано, как использовать библиотеку автоматизации драматурга с открытым исходным кодом для управления безголовым браузером на вашем локальном компьютере.
И когда вы будете готовы к развертыванию, переходите к работе с BrowserCat.