Что это

Инди-хакинг — это создание небольших проектов без вложений, чтобы зарабатывать напрямую, без инвесторов.

Самый известный пример — Питер Левелс, который сделал миллионы на маленьких продуктах. У него подход творческий и немного размытый: запуск за месяц, продукт должен быть простым и полезным.

В русскоязычном сообществе есть ребята с более практичным подходом — Короче, капитан.

? План такой:
— Делаем только расширения для Chrome. Гугл сам проверяет и продвигает расширения в своём магазине, а значит, доверие к ним выше, чем к сайтам. Соответственно, в выдаче они тоже появляются чаще.
К тому же конкуренция ниже: расширений ~110k, а мобильных приложений в Google Play уже под 2kk.

— Берём существующее расширение с >10k пользователей и выделяем из него только одну функцию. Главное — чтобы она была простой и понятной, но реально нужной. Если аналогов с одной функцией уже хватает — пробуем улучшить UX: меньше кликов, удобные настройки по умолчанию и т.п.

— Разработка не должна быть сложной. Идеально, если расширение можно собрать максимум за месяц, занимаясь вечерами.

— Дальше думаем, какой поисковый запрос пользователь введёт. Например, функция — скриншот всей страницы, тогда запрос будет "Full page screenshot". Проверяем в Google Trends и сравниваем с запросами "ad blocker" (мегапопулярный) и "site blocker" (среднепопулярный). Наш запрос должен быть хотя бы на уровне site blocker.

— Пишем быстро, без перфекционизма и чистого кода. Возможно, проект завтра выкинем. Если взлетит — потом отрефакторим.

— Тестируем как реальный пользователь, чтобы поймать не только баги, но и понять, удобно ли вообще пользоваться.

— Запускаем. Если зашло — дорабатываем, если нет — ищем новую идею.

? Более подробно про схему "Короче, капитан" рассказывают на интенсиве

Мое расширение

Моя идея была простой: расширение, которое скачивает все картинки с сайта в один клик.

По запросу "images downloader" в выдаче было всего два расширения, и одно вообще не работало. В Google Trends запрос выглядел перспективно.


? Так как фронт я писать особо не умею, целью было просто набить руку. Монетизацию и прочие нюансы я тогда не учитывал.

Весь процесс — от идеи до загрузки в Chrome Store — занял около 4 месяцев, так как я долго выбирал инструменты, разбирался с ними и параллельно был загружен другими делами.

В итоге расширение вышло, но его не установил вообще никто. В выдаче его нет, а найти вручную можно только очень долго листая.

? Я понял, что важно тщательно выбирать идею и запускаться максимально быстро, чтобы проверить, нужен ли продукт вообще.

Стек

? Так как я из кровавого джава-энтерпрайза, мне хотелось меньше абстракций, магии и зависимостей.

Исходя из этого, я выбрал такой стек:

TypeScript — тут без вариантов. Хотелось бы писать на Go или Rust, но они совсем не подходили.

Bun — бандлер + пакетный менеджер. Быстрый, модный, минималистичный. Идеально.

Snabbdom — маленькое модульное виртуальное DOM-дерево. Его, например, использует Lichess — огромная шахматная платформа, которую в основном поддерживает один разработчик-минималист. Я мог бы обойтись и без виртуального дерева, но на будущее решил взять.

Pico CSS — здесь я как раз хотел немного магии. Красивый UI делать самому долго, а Pico отлично подошёл как готовое drop-in решение.

— VSCode — взял с минимумом плагинов. В отличие от тяжёлой IntelliJ IDEA, которая ломается от переименования папки, здесь всё было под контролем. Более того,  проект я собирал не через VSCode, а только через терминал.

Такой стек максимально сократил количество абстракций. Если что-то ломалось — проблема была точно в моём коде, а не в нюансах работы библиотек.

? И, конечно, главный инструмент — GitHub Copilot.
Сначала я боялся, что если он будет писать код за меня, я ничего не пойму. Но благодаря минималистичному стеку и простой задаче, код оставался прозрачным. В итоге копайлот написал процентов 30–40.

? Главный вывод — чем проще инструменты и быстрее запуск, тем лучше. И даже проваленный проект даёт хороший опыт.

?‍? Джуниор

Комментарии (1)


  1. Emelian
    03.10.2025 15:47

    Моя идея была простой: расширение, которое скачивает все картинки с сайта в один клик.

    Ну, подобные расширения найти на Гитхабе не сложно. Я оттуда много примеров скачал и подобный вашему там тоже есть, но смысла в нем не много.

    Более интересной задачей была – скачать онлайн-словарь с озвучкой, для целей самообразования. Только сделать это, с пол пинка, оказалось сложнее.

    Для одного из них хватило простого Питона (без сложных библиотек), а для остальных – старой версии Хром (версия 109), для того, чтобы сохранить возможность работы со второй версией манифеста. Поскольку, в последних выпусках Хрома доступен только третий манифест (насколько я знаю), а он уже имеет ограничения в работе, которых не было во втором манифесте. Это касается и блокировщика рекламы сайтов и работы с файлами. А Хром нужен для (ручного) обхода капчи – «дешево и сердито».

    Другим словами, нужно было «ехать», а не «шашечки». И если эту задачу решает «велосипед», то зачем тогда нужен «мерседес?

    Теперь, тоже самое, но чуть подробнее.

    Я, без особых проблем, скачивал онлайн-словари и mp3-файлы к ним на десятки тысяч слов, используя собственное расширение Хром. Правда, приходилось выставлять паузу – пять секунд, между запросами, зато, вэпээн-ом пользовался редко. Полученные html-страницы, естественно, пришлось конвертировать в более удобоваримый вид (в конечном счете – текстовый), но, в итоге, нужные мне данные я получил.

    Если говорить не «вообще», а «конкретно», то вполне можно использовать веб-скрапинг с помощью расширений на старых версиях Хрома, все еще поддерживающих вторую версию манифеста.

    При этом, начальную капчу можно проходить вручную, потом это дает нам какое-то количество времени (обычно, минут 5 – 30) до появления следующей капчи. Во время этого интервала мы запускаем свой небольшой скрипт расширения, который с небольшой задержкой, скажем, секунд пять, делает запросы на загрузку необходимых html-страниц, которые мы просто тупо сохраняем в своем каталоге. Их обработкой мы можем заняться потом, когда уже всё скачаем, Это может быть и сотня тысяч страниц.

    При этом, в процессе скачивания страниц мы можем отследить начало сбоя. В Хроме это хорошо видно. Останавливаем скрипт, переинициализируем его, при необходимости, снова вручную набираем соответствующий url в Хроме, опять проходим капчу (при подозрении сервера, он может запрашивать ее несколько раз). Для профилактики подозрений, периодически меняем ай-пи, например, посредством вэпээна.

    Скриптом расширения, хотя там всего пара десятков строчек, делиться не буду, чтобы не палиться. Раньше я использовал скрипты Питона для аналогичных целей, пока не столкнулся с капчей. С ней возникли проблемы, пока не нашел в Интернете подходящий прототип расширения на базе второй версии манифеста (как я уже говорил, современный Хром поддерживает только третью, значительно урезанную в своих возможностях). Слегка доделал его «напильником» и вуаля…

    В итоге, загрузил два разных сайта, порядка ста тысяч страниц. На каждый ушло по месяцу, примерно. Сайты крутили время доступа, между капчами, от 5 до 30 минут, потом обратно. Это несколько напрягало, но, параллельно, занимался другой работой, да и спешить мне было особо некуда.

    Сначала увлекался, задержки между запросами были нулевые и сайты мои вэпээны быстро банили. Но всегда их «хавали» при ротации. Допускаю, что, сервера слишком надеялись на свои капчи и другие способы защиты особо не использовали, хотя, я постоянно ждал подвоха с их стороны.

    Как бы там ни было, все сработало, результат я свой получил. Были еще проблемы, связанные с необходимостью рендеринга страниц, но уже для других сайтов. Для этого тоже нашел подходящие прототипы для Хрома. Начальные эксперименты были удачны, но потом, просто, по разным причинам, интерес, к этим серверным данным, пропал, и этот проект я забросил до тех пор, пока не возникнет аналогичная потребность снова.

    Таким образом, на универсальность не претендую, но свои личные проблемы решил. Более того, все данные корректны, я их полностью обработал и проверил. А вот, когда работал с подобными скриптами на Питоне, без капч, то, да, за ними нужен был глаз да глаз. Данные отгружали всегда, но после небольшого объема корректных данных начинали поступать некорректные. Да и задержку между запросами там нужно было выставлять секунд пятнадцать, не меньше, ибо очень подозрительные сервера были. Зато особо не придирались к ай-пи, можно было работать без вэпээна. Короче говоря, везде использовал специфику частных случаев…