ARMANOS

Решения

Фриланс

Аккаунты Upwork, Fiverr и Freelancer живут врозь: под каждый свой профиль, свой прокси, свои показания устройства и свои куки. Сессия переезжает с ноутбука на настольный компьютер шифрованным файлом, через папку, которая у вас уже есть.
3
площадки сценария: Upwork, Fiverr, Freelancer
6
дневных пределов, с раскачкой в первую неделю
AES-256-GCM
шифр файла сессии в вашей папке
1
машина держит профиль открытым в один момент

Аккаунт клиента это отдельная машина, а не отдельная вкладка

Фриланс расходится по аккаунтам. Свой профиль на Upwork, второй аккаунт, который вы ведёте для агентства, продавец на Fiverr, аккаунт на Freelancer под клиента из другой страны. За каждым своя история, и любая площадка читает два аккаунта из одного браузера как одного человека.

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

В ARMANOS профиль это отдельный браузер. Куки и данные сайтов лежат в его собственном каталоге, прокси принадлежит профилю, а показания устройства выводятся из его идентификатора, поэтому от запуска к запуску профиль отвечает одинаково. Показания собирает четвёртое поколение генератора по одному из пяти шаблонов, а отдаёт их сам движок ARMANOS Browser 153.0.7978.0, до того как на странице выполнится хоть один сценарий.

Сильнее всего это важно там, где аккаунты и так разные. Аккаунт, заведённый из Берлина, должен и дальше жить с берлинскими часами и берлинским адресом. Профиль держит это сочетание вместе, запуск за запуском, и ничего из него не протекает в профиль, где вы работаете на себя.

  • Куки и данные сайтов

    У каждого профиля свой каталог, и через эту границу никто не читает.

  • Адрес выхода

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

  • Часы и язык

    И то и другое следует за страной выхода: у 114 стран прописаны свой пояс и свой список языков.

  • Показания устройства

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

  • Расширения

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

  • Вход и одноразовые коды

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

Экран выбора движка: выбран ARMANOS Browser, встроенный Chromium указан как запасной.
Профили работают на ARMANOS Browser, это Chromium 153 с нашими правками, который подменяет отпечаток внутри движка. Встроенный Chromium остаётся запасным, и программа говорит, когда профиль на него откатился.

Сценарий «Фриланс» заполняет профиль в момент создания

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

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

Он подключает общий список слежки, это 31 узел, которым отказывают на уровне сети, а не прячут внутри страницы, и включает чистку ссылок. При каждом переходе верхнего уровня из адреса вырезаются 40 отслеживающих меток, в том числе опознаватели кликов крупных рекламных сетей.

И он несёт шесть дневных пределов: числа, которые этот сценарий считает безопасным днём для фриланс-аккаунта. Они стоят на карточке профиля, рядом со счётом открытых сегодня страниц, и у профиля, заведённого на этой неделе, они меньше.

ДействиеБезопасный деньПервый день нового профиля
Отклики102
Сообщения255
Новые услуги31
Правки профиля51
Изменения выплат11
Смены аккаунта11

Эти числа наши, а не площадки

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

Новый профиль первую неделю идёт медленнее

Профиль, заведённый сегодня, не равен профилю, который работает три месяца. Дневной предел фриланс-сценария это 40 действий, и нового профиля он достигает на седьмой день.

Раскачка идёт по 20, 35, 50, 65, 80 и 90 процентов предела в первые шесть дней, а с седьмого дня действует полное число. По той же кривой уменьшаются шесть пределов на действия, с одним правилом снизу: разрешённое сценарием действие никогда не сходит к нулю, поэтому в первый день стоит хотя бы единица.

Программа считает узко, и назвать это честно можно только так. Действие это страница, открытая верхним уровнем в окнах профиля. Счёт обнуляется с календарным днём, полоса желтеет на 80 процентах дневного предела и краснеет на самом пределе, и она ничего не запрещает. Возраст, который она показывает, это возраст профиля ARMANOS, а не аккаунта за ним: когда вы завели аккаунт, программа знать не может.

День 1
8 действий
День 2
14
День 3
20
День 4
26
День 5
32
День 6
36
День 7 и дальше
40

Раскачанный предел фриланс-профиля, считается по профилю и по дню.

Экран профилей: карточки с папкой, прокси, сегодняшним темпом и дневными пределами по действиям.
Темп и пределы стоят на самой карточке, с названным днём раскачки. На снимке карточки торгового сценария; у фриланс-профиля перечислены отклики, сообщения, новые услуги, правки профиля, изменения выплат и смены аккаунта.

Три площадки по именам и своя страна за каждым аккаунтом

Сценарий называет три площадки: Upwork, Fiverr и Freelancer. По пяти сценариям программы так названы двадцать площадок, и названо ровно то, что есть.

Назвать не значит автоматизировать. Из Upwork в профиль встроен только стартовый адрес и слова, которыми названы пределы. Вы получаете обычное окно браузера со своей личностью и своей сессией. Если нужно повторять шаги, это сборщик сценариев, и он работает одинаково на любом сайте.

Вторая половина работы это страна. У профиля свой прокси, а страну выхода спрашивают по TLS у четырёх поставщиков, а не у одного: единственная бесплатная точка начинает отказывать при пакетном запуске. Ответ задаёт профилю часы и список языков, поэтому аккаунт на немецком адресе не сидит в вашем поясе, называясь берлинским.

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

Выход прокси
Германия
Часовой пояс
Europe/Berlin
Языки
de-DE, de, en
Шаблон
windows-chrome
Поколение
4

Одна из 114 записей, где страна выхода связана с поясом и набором языков.

  • Upwork

    Стартовый адрес сценария. Профиль со своим адресом открывается по нему.

  • Fiverr

    Названа сценарием. Профиль это обычное окно браузера на ней, со своими куками и своим устройством.

  • Freelancer

    Названа сценарием. Выбор сценария ничего на площадке за вас не делает.

  • Своя страна на аккаунт

    Страна выхода задаёт часовой пояс и список языков, и запоминается на профиле, пока адрес не сменится.

Ноутбук и настольный компьютер делят одну сессию через вашу папку

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

Поэтому вы показываете ARMANOS папку, которую ваше облако и так синхронизирует: Dropbox, iCloud Drive, сетевой диск, что угодно. Мы её не держим и не хотим знать, чем она синхронизируется. Каждый профиль уезжает одним шифрованным файлом: scrypt растягивает пароль, дальше AES-256-GCM. Пароль не короче восьми знаков, остаётся на этой машине, закрыт связкой ключей, если система это умеет, и в папку не попадает никогда.

Что видит человек с доступом к папке, нарочно скудно: файл, названный идентификатором профиля, и рядом маленькая метка со временем, размером и именем машины, которое вы задали сами. Имя профиля лежит внутри шифрованного файла: строка вроде «Upwork, клиент Б» рассказала бы читателю, какие аккаунты вы ведёте.

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

  1. 1

    Вы закрываете профиль на ноутбуке

    Через четыре секунды программа проверяет, что он всё ещё закрыт, собирает сессию и записывает её. Кэш не едет, он весит сотни мегабайт и наливается заново; у собранного файла потолок 400 МБ.

  2. 2

    Запись атомарная

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

  3. 3

    Метка пишется после файла

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

  4. 4

    Вторая машина замечает сама

    Раз в минуту она смотрит время самой папки и читает метки только тогда, когда оно изменилось. Профиль, изменённый на другой машине, помечается в списке, и в открытый профиль ничего не приносится.

  5. 5

    Вы открываете профиль там

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

Держите обе машины на одной версии

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

Если сессия менялась на обоих компьютерах, не затирается ничего

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

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

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

Беспорядок наводит и само облако, и программа называет его вслух, а не догадывается. Метка, чей файл ещё не доехал, или файл, который облако убрало с диска ради места, означают, что в этот раз не делается ничего, вместо того чтобы разложить устаревшую сессию. О копиях, которые облако делает само, когда обе машины записали разом, с номером в имени, со словом «копия» или с приписанным именем машины, вам говорят по одному разу на копию.

Что изменилось с прошлого обменаЧто делает программа
НичегоНичего. Профиль в порядке.
Только здесьСессия собирается и записывается в папку.
Только в папкеСессия забирается до открытия профиля.
Обе стороныНе затирается ничего, сторону выбираете вы.
Для профиля в папке пустоПервая отправка её наполняет.
Метка новее своего файлаВ этот раз ничего. Заберём, когда облако довезёт файл.

Смена пароля отправляет всё заново

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

Профиль остаётся в одних руках

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

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

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

Без учётной записи замка нет и быть не может: две машины ничем не связаны. Обмен через папку в этом случае работает, и это честная граница возможности, а не подробность, о которой мы молчим.

  1. 1

    Замок берётся

    До того как появится окно. Взять его после открытия значило бы, что вторая сессия уже случилась, а мы про неё только узнали.

  2. 2

    Проверяются оплата и доступ

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

  3. 3

    Свежая сессия забирается из папки

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

  4. 4

    Новый адрес выхода, если профиль его просит

    Если смена не удалась, запуск прекращается и замок отпускается: открыться на прежнем адресе это ровно то, от чего профиль защищался.

  5. 5

    Окно открывается, замок продлевается каждую минуту

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

Почему здесь мы строги

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

Чего это не делает

  • Папка ваша, не наша. Если облачная программа не запущена или диск не подключён, не уезжает ничего, а вернуть сессию, которой мы никогда не держали, мы не можем.
  • Сессия ездит только у закрытого профиля. Машина, где окна открыты весь день, не отправляет ничего, пока их не закроют.
  • Ничего не сливается. Когда менялись обе стороны, вы оставляете одну, а вторая лежит рядом копией с датой.
  • Замку нужны учётная запись и доступный сервер. Без входа или при недоступном сервере запуск не запрещается, и тогда две машины могут открыть один профиль. Вход на двух компьютерах занимает и два места для устройств: на Free их одно, на Professional два, на Business пять.
  • Пределы это совет. Программа считает открытые в профиле страницы, а не отклики и сообщения, и ни одна площадка не публикует числа, по которым судит на самом деле.
  • Изоляция это не хорошая репутация. Площадки смотрят и на возраст аккаунта, и на платёжные данные, и на историю с клиентами, и на то, что вы пишете. Отдельный профиль не делает новый аккаунт заслуженным.

Как проверить

Каждую строку выше держит код в этом хранилище и стенд, который его исполняет.

У сценария «Фриланс» действительно эти числа и эта раскачка
packages/shared/src/index.js (SCENARIOS.freelance, WARMUP_RAMP) · apps/desktop/src/main/main.js (paceInfoFor, actionLimitsFor)
Сессия закрытого профиля едет шифрованной, открытый не трогается вовсе
apps/desktop/src/lib/sessionSync.js · apps/desktop/test/session-sync-folder.js
Когда менялись обе стороны, ничего не затирается, а затёртое откладывается копией
apps/desktop/src/main/main.js (keepReplacedCopy) · apps/desktop/test/conflict-keeps-copy.js
Файл, убранный облаком с диска, не читается как «сессии нет»
apps/desktop/src/lib/sessionSync.js (readRemoteMeta) · apps/desktop/test/cloud-evicted-file.js
Копии, которые делает само облако, программа видит и называет по одному разу
apps/desktop/src/lib/sessionSync.js (cloudConflictCopies) · apps/desktop/test/cloud-conflict-copies.js
Профиль открывается в одном месте, а перехват закрывает чужие окна
apps/server/src/profiles/profiles.service.ts (LOCK_TTL_MS) · apps/server/test/profile-lock.js · apps/desktop/test/profile-busy.js

Два профиля бесплатно и без карты

Поставьте ARMANOS, заведите профиль под Upwork и профиль под Fiverr и посмотрите, что стартовая страница расскажет о каждом.