Обновить

NetFix Mobile: как я сделал Android-приложение, которое чинит YouTube, Discord и Telegram на телефоне и ТВ

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели68K
Всего голосов 32: ↑31 и ↓1+34
Комментарии47

Комментарии 47

Место вайбоописания слопа, навайбили бы как вы вайбкодили - сколько времени ушло, токенов, модели, харнесы, какие приколы агенты отчудили, сколько читали код, и тд

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

Да, код пишу с помощью ии

Не льстите себе

Выглядит как супер токсик коммент for no reason

Если я приведу другое старинное выражаение — «мы пахали: я и трактор» — Вам легче станет?

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

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

One man's trash is another man's treasure ©

я не понял что вы хотели донести

А ведь говорили родители: учись, сынок, в школе хорошо — многое в жизни понимать будешь!

Вот, видите — 7 (на данный момент) человек поняли настолько, что даже плюсик нажали.

как не хватает на хабре функции "скрыть комментарии пользователя".

А что ж Вы ИИ не спросите?

One man's trash is another man's treasure ©

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

А ведь говорили родители: учись, сынок, в школе хорошо — многое в жизни понимать будешь!

не у всех были родители. ну и как мне кажется насчет образования - это кто как обзывается тот так сам и называется (тень и проекция по Фромму). взять хотя бы ваш коммент - "Если я приведу другое старинное выражаение — «мы пахали: я и трактор» — Вам легче станет?" - это неправильно построенная (исхожу из допущения что вы не троль) фраза в духе [if (condition()) then condition()]. для вас видимо (по статьям с буквой i) русский не родной язык, оттуда и недопонимание (и вас и у вас).

Вот, видите — 7 (на данный момент) человек поняли настолько, что даже плюсик нажали.

7 плюсиков ≠ 7 человек

Если кому нужно, ChatGPT сделал Wesha Bleach:
 // ==UserScript==
 // @name         Wesha Bleach
 // @namespace    https://habr.com/
 // @version      1.0
 // @description  Hide all comments from @Wesha on Habr
 // @match        https://habr.com/*
 // @run-at       document-idle
 // @grant        none
 // ==/UserScript==

 (function () {
     'use strict';

     const BLOCKED_USER = 'wesha';

     function hideComments() {
         const authors = document.querySelectorAll(
             '.tm-comment__header .tm-user-info__username[href]'
         );

         for (const author of authors) {
             const match = new URL(author.href).pathname.match(
                 /^\/(?:ru|en)\/users\/([^/]+)\/?$/i
             );

             if (!match) continue;

             if (match[1].toLowerCase() === BLOCKED_USER) {
                 const comment = author.closest(
                     '.tm-comment-thread__comment'
                 );

                 if (comment) {
                     comment.style.setProperty(
                         'display', 'none', 'important'
                     );
                 }
             }
         }
     }

     let scheduled = false;

     function scheduleScan() {
         if (scheduled) return;
         scheduled = true;

         requestAnimationFrame(() => {
             scheduled = false;
             hideComments();
         });
     }

     hideComments();

     // Handle dynamically loaded comments.
     new MutationObserver(scheduleScan).observe(
         document.body,
         {
             childList: true,
             subtree: true
         }
     );
 })();

Видите, как всё просто? «Каждый сам кузнечик своего ЩАСТЯ».

(Ну, а у некоторых — и ChatGPT.)

Не волнуйтесь, я вас ни за что не скрою!

А чего мне волноваться? «Моё дело — предложить, ваше дело — отказаться».

Я всегда говорил, что «самое главное в жизни — это всегда иметь возможность пожать плечами и сказать „А я ведь вас предупреждал...“»

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

Давным‑давно™ мне тоже так казалось, вот например. Но потом всё заверте...

полагая что другие люди относятся к хабру тоже как к техническому ресурсу а не как к месту для флуда в комментариях.

Я уже давно перестал так полагать — с тех пор, как приглашения стали полностью бессмысленными (а то и раньше).

это неправильно построенная (исхожу из допущения что вы не троль) фраза в духе [if (condition()) then condition()].

Я понимаю, конечно, что господин не читатель — иначе он знал бы, что фраза совершенно нормальная.

На что это будет похоже, если я от службы откажусь, когда служба моя понадобится?
— © Пушкин АС. «Капитанская дочка», глава VIII.

А в чём разница - написал с помощью ИИ или нагуглил решения 99% частных задач в StackOverflow и собрал из них работающее приложение, которого ещё не было?

А в чём разница - написал с помощью ИИ или нагуглил решения 99% частных задач в StackOverflow и собрал из них работающее приложение, которого ещё не было?

Примерно в том же, в чём разница между силачом, поднимающим одной рукой 200 кг, и школоло Васей, поднимающим 200 кг при помощи крана...

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

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

Код на бумаге пишите, наверное?

В FAR-е пишу, а что?

В статье как раз описаны конкретные инженерные вещи: работа с NetworkCapabilities, воронка тестов стратегий и связка NDK с Rust-ядром. Токены и промпты интересны авторам курсов по ИИ, а здесь показан готовый рабочий инструмент

Пока что нет возможности делать версию под iPhone.

Пока что нет возможности делать версию под iPhone.

И эти люди ругают «совок» за «в мясе сегодня потребности нет!»

Никто не говорил, что в этом нет необходимости. Версию для iOS просят многие, но у меня нет возможности её тестировать, да и людей, готовых помочь с тестированием, не так много.

Эппл говорит что в этом нет необходимости :)

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

Можно ли ещё нейросети заставить работать через ваше приложение? Я понимаю, что ваше приложение и применяемая в ней технология не меняет местоположение, а нейросети сами ограничивают работу своих сервисов в России

Приветствую! Если имеете в виду ChatGPT или другие нейросети, то можно попробовать через DNS. В приложении можно потыкать разные варианты. У меня раньше был Xbox DNS, с ним работало почти всё, но сейчас его, к сожалению, снесли.

Очень не хватает инструкции для нуба - какие компоненты и в каком порядке установить, что в них включить.

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

То есть предварительное не надо ставить и настраивать ByeDPI, tg-proxy и прочее? Все само поставится?

Да, так и есть!

На Android TV главное не забыть выдать приложению исключение из энергосбережения, иначе вендорные прошивки выгружают VpnService через двадцать минут просмотра видео

Подскажите, есть шанс на Андроид приложение для версии 6.0? Мои SmartTV старенький :(

Попробуйте, и узнаете)

Как вы подбираете стратегии для UDP трафика того же дискорда? Что вообще можно использовать для подбора стратегий для UDP?

Пока UDP при подборе не проверяем: скан идёт только по TCP/HTTPS. Проверка Discord тоже про доступность сайтов, голосовой UDP она не видит. В движке ByeDPI есть UDP-настройки (-a N для поддельных пакетов, -K для фильтра протоколов, -U чтобы отключить UDP), их можно подбирать вручную в своей стратегии. Автоматическую проверку UDP (через STUN или QUIC) можно добавить, идея хорошая.

Это приложение умеет поднимать локальный SOCKS5 на 127.0.0.1:порт?

Изнутри да: пока включён обход ютуба, NetFix поднимает локальный SOCKS5 на 127.0.0.1:1080, через него идёт трафик в движок ByeDPI. Но отдельного режима «только прокси» с настройкой порта в приложении пока нет, всё работает через VPN. Для Telegram есть MTProto-прокси на 127.0.0.1:1443 (это не SOCKS5). Если вам нужен именно режим SOCKS5 для других приложений, напишите, зачем, я учту как идею.

Но отдельного режима «только прокси» с настройкой порта в приложении пока нет, всё работает через VPN.

Надеюсь, в будущем появится. Я, например, использую LxBox для VPN всего устройства, и в этой схеме он перенаправляет трафик YouTube к SOCKS5 форка ByeByeDPI от romanvht. Для разных приложений требуются разные направления. Поэтому, с моей точки зрения, на устройстве должен быть один единый менеджер VPN, который всем рулит.

Рандомный порт для локального прокси при каждом запуске и логин/пароль для него же поддерживаются? Чтобы левые приложения не лезли тыкать доступность заблокированного на открытый локальный прокси?

Для прокси Telegram порт можно менять в настройках, и там есть секретный ключ. Для обхода (метод ByeByeDPI) порт фиксированный, без логина и пароля. Случайный порт при каждом запуске пока не поддерживается, возможно добавлю позже.

Обход блокировок с помощью cloudflare? Это как так? Он же тоже забанен

Cloudflare не заблокирован целиком: через него работает масса обычных сайтов, а местами его только замедляют. Прокси заворачивает трафик телеграма в обычное HTTPS-соединение к домену на Cloudflare, и для провайдера это выглядит как посещение сайта. Если в вашей сети Cloudflare режется, в настройках можно выключить «Cloudflare CDN» или «Приоритет CF», тогда прокси пойдёт напрямую.

К сожалению, в последнее время Cloudflare скорее не работает, чем работает... вот бы вышла какая софтина, которая помогает заходить на сайты, которые на нём хостятся... Не, я не намекаю, просто ворчу...

Фактически получается просто byebyedpi и tg-ws-proxy в полном приложении

Не могли бы рассказать ваш подход к использованию ИИ инструментов? Просто я трачу огромное количество времени на правку как и когда, так и раззработка плана и подобного, а "везде" пишут про то как строчат программы на телефончике. Я ни в коем случае не говорю кто и как делает - мне действительно интересно какие запросы и дальнейшая работа с этим.

какие запросы и дальнейшая работа с этим.

Побыстрее продать поделие и свалить в закат с баблом!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации