Выпущена 21.5.1 версия BrowserAutomationStudio


  • administrators

    Выпущена версия 21.5.1. В ней содержится множество изменений связанных с анонимностью браузера. Давайте рассмотрим их подробнее:

    Современные браузеры поддерживают апи для работы со звуком. Используя методы этого апи сайт может генерировать и обрабатывать звук, а также получать доступ к бинарным данным. По аналогии с Canvas и WebGL, данные звука также содержат небольшие отличия в зависимости от железа, браузера и системы. Эти отличия могут быть использованы чтобы идентифицировать вас среди других пользователей сайта даже при использовании прокси. В новой версии поддерживается смена отпечатка аудио - BAS добавляет разные шаблоны шума в возвращаемые данные при каждой смене отпечатка. Кроме того, данное апи также дает доступ к разным системным параметрам связанных со звуком. BAS подменяет эти параметры, значения берутся из реальных устройств при помощи сервиса FingerprintSwitcher.

    Подробнее о б этой технике можно прочитать в этой статье http://randomwalker.info/publications/OpenWPM_1_million_site_tracking_measurement.pdf пункт 6.4.
    На этом сайте можно получить отпечаток аудио для вашего браузера https://audiofingerprint.openwpm.com/

    Сайт может получать данные об языке системы несколькими способами. Это заголовок Accept-Language, navigator.language и navigator.languages, а также некоторые методы апи для интернализации. Эти свойства могут содержать не один, а несколько языков, также заголовок Accept-Language имеет разный формат в зависимости от системы. Эти отличия служат одним из факторов для отпечтака браузера. После небольшого теста обнаружилось, что на 20000 пользователей приходится 751 уникальных значений поля Accept-Language. Конечно, заменять эти поля на реальные значение из другого устройства было бы неправильным, потому что это создало бы несоответствие между языком системы и текущим прокси. Поэтому был разработан алгоритм, который "соединяет" страну/язык текущего ип и формат реальных полей из реального устройства. Например, если оригинальный заголовок был таким ru-RU,en-US;q=0.9, а прокси находится в Германии, то результат будет таким de-DE,en-US;q=0.9. Алгоритм корректно сохраняет формат и удаляет ненужные языки, например, такое поле ru, uk;q=0.8, be;q=0.8, en;q=0.7, *;q=0.01 будет заменено таким de, en;q=0.8, *;q=0.01. Текущий ип, страна и язык получаются при применении прокси.

    Подробнее о поле Accept-Language https://tools.ietf.org/html/rfc7231#section-5.3.5
    Результаты тестирования алгоритма https://pastebin.com/raw/mmgVmbyb

    Одним из свойств железа к которым сайт имеет доступ через javascript является заряд аккумулятора. Исследования в статье приведенной ниже показывают, что данная информация не опасна для пользователя, поскольку позволяет отслеживать его только в краткосрочной перспективе. Действительно, заряд аккумулятора постоянно меняется, а предсказать какие значения будут через длительное время невозможно. Тем не менее, для отслеживания массовых действий такой метод может быть полезен. Представьте, что вы запускаете BAS с ноутбука, а сайт видит как одновременно проходят тысячи регистраций с устройства, заряд которого равен 56%, а до конца зарядки осталось 35 минут. Конечно, можно запускать софт только на стационарном устройстве или полностью заряженном ноутбуке, но это тоже может быть подозрительно при применении мобильных отпечатков. Поэтому было решено эмулировать зарядку/разрядку аккумулятора, а также все события и возвращаемые апи значения на устройствах, который имеют аккумулятор. Информацию о его наличие предоставляет сервис FingerprintSwitcher. Вот как это может выглядеть: https://i.imgur.com/tDnZFDl.png на графике видно, что значения постепенно уменьшаются.

    Статья об отпечатках аккумулятора https://eprint.iacr.org/2015/616.pdf
    Результаты работы апи для вашего браузера https://fingerprints.bablosoft.com/battery Не удалось найти сервис, который показывает значения в динамике, поэтому сделал свой.

    BAS использует некоторое количество вспомогательного кода для поиска элментов, внедрения решения рекапчи и другого. Раньше софт можно было обнаружить по наличию этого функционала, поэтому в новой версии он спрятан, все имена функций генерируются для каждого потока разные. Переработан механизм внедрения отпечатков, если раньше BAS полагался на использование конструкций вида Object.defineProperty, то сейчас подмена происходит внутри браузера. Старый метод используется только для изменения списка плагинов и в местах где это абсолютно необходимо. Например, Chrome, в отличие от Firefox не поддерживает апи для работы с VR шлемами. Поэтому для эмуляции этого функционала приходится использовать javascript. Обход некоторых других методов, которые используются для определения движка браузера также преписаны на с++.

    Была улучшена эмуляция работы с мышью. Теперь при перемещении к элементу невидимому на экране используется колесо мыши, а не javascript как раньше. Если элемент находится далеко за пределами видимой области, скорость скрола намного быстрее, чем если бы он был совсем рядом. При этом перемещения происходят "рывками", как у реальных пользователей. Вот как это выглядит https://i.imgur.com/IdH2edf.gifv. Первоначальное положение курсора выбирается случайно, а не в левом верхнем углу как раньше. Увеличена частота генерации событий связанных с перемещением мыши.

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

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

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

    Добавлена поддержка туннелирования флеш. Это означает, что абсолютно все запросы, которые делает процесс флеш будут проходить через заданный прокси. Следует понимать, что флеш обладает гораздо большими возможностями чем javscript и поэтому его включение - удар по анонимности. В BAS скорее всего не будут применятся техники для того, чтобы сделать флеш более безопасным, как это делается с javscript потому что его поддержка будет прекращена Adobe в 2020 году https://theblog.adobe.com/adobe-flash-update/ Если элемент с флеш меньше определенного размера Chrome просит пользователя подтвердить его запуск, в новой BAS версии сделано так, пользователь автоматически соглашается это сделать(если флеш включен).

    Проверить ип возвращаемый через флеш можно на этом сайте https://whatleaks.com/

    Некоторые другие изменения не касающиеся отпечтаков:

    Веб интерфейс теперь может использовать localStorage для хранения настроек софта между запусками.

    Bызов метода BAS_API из Node.js теперь генерирует исключение в случае ошибки. Теперь можно сделать так:

    try
    {
    	await BAS_API(`load("wrongurl11111.com")!`)
    }catch(e)
    {
    	console.log(`Что-то пошло не так: ${e}`)
    }
    

    Новая настройка для приложений с защитой: "Разрешать запускать только один экземпляр приложения".

    Исполняемые файлы BAS теперь подписаны. Это позволит быстрее проходить проверку SmartScreen на Windows 10, также избежать ложноположительных срабатываний антивирусов.

    Заново переписан механизм перетягивания блоков за пределы рабочей области(при обновлении браузера он перестал работать).

    Исправлено множество багов, среди которых:

    Исправлен баг с установкой referrer и перенаправлениями страницы.
    Сетевые ошибки при загрузке проекта в скомпилированных скриптах теперь не сообщают урл сервера.
    Исправлено исчезновение прошлого проекта после неудачной загрузке.

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

    Это не все изменения находящиеся в разработке, до конца года планируется выпустить новый аддон для BAS - FingerprintDetector.



  • Спасибо, обновление крутое.

    Очень хотелось бы какой нибудь эмулятор андроид. ЧТобы можно было делать хотя бы элементарную авторегистрацию в телеграмм.


  • administrators

    @freeliman В планах есть несколько топовых апдейтов для браузера, хотелось бы доделать их.



  • При решении ре капчи в сборке 21.4.1 начала появляться ошибка "ReferenceError: Can't find variable: _random_point во время выполнения действия"
    после обновы до актуальной сборки такое произошло.На сборке 21.5.1 решает,только все равно не принимается.В моем случае скрипт бесконечно решает ре капчу

    Стоит кап монстр 2.10.8.6 с аддоном и своими ipv6 проксями.Я конечно ещё варианты разные попробую,но может поможете мне в какую сторону смотреть что бы решить ошибку

    P.S. как я понял теперь что на старой сборке нужно прокрутить к элементу который не виден,и после нажать,иначе появляется эта ошибка:
    "ReferenceError: Can't find variable: _random_point во время выполнения действия"
    На новой актуальной сборке все так же.Проверил через сервис анти капчи,такая же ситуация

    Кто-нибудь,проверьте как у вас решается ре капча



  • все, пошел гугл почты регать;)
    @support спасибо за регулярные обновы. Загадаю на новый год встроенный планировщик скриптов. Надеюсь, сбудется:)


  • administrators

    @korzhec По плану будет в первом квартале 2019.


  • administrators

    @moemope

    При решении ре капчи в сборке 21.4.1 начала появляться ошибка "ReferenceError: Can't find variable: _random_point во время выполнения действия"

    Такое будет если вы создали проект в 21.5.1, а потом открыли в 21.4.1

    Стоит кап монстр 2.10.8.6 с аддоном и своими ipv6 проксями.Я конечно ещё варианты разные попробую,но может поможете мне в какую сторону смотреть что бы решить ошибку

    Если все решения пропускает, попробуйте установить поле "Список допустимых задач."



  • Огромное спасибо за обновление. Просто вышка, пойдём тестить.



  • Во-первых, спасибо за чудесные обновления и неустанные старания в поддержании софта в состоянии фреша. Антидетект BAS теперь на уровне.
    Однако, полагаю, не я один жду возможности программы работать в асинхронном режиме, а не линейном. Уткнулся в невозможность реализации задуманного софта на данной платформе именно по этой причине.
    На мой взгляд, самым значимым достижением в прогрессивном росте BAS была бы возможность задавать переменное имя переменных. Любой язык программирования предоставляет данный функционал. Я не всегда могу знать, как будет называтся моя переменная, поэтому хотелось бы генерировать ее имя по заданным параметрам.
    Ну и напоследок (пусть меня закидают коллеги-старожилы помидорами) - крайне необходима возможность инспектировать браузеры в режиме кликабельности. На данный момент есть возможность только просматривать, что творится в браузере и не более.
    Апгрейды анонимности и прочие плюшки - это, несомненно, круто. Но тех пор, пока упираешься в тупик идейного полёта - это бесполезно.
    Так же, хочется затронуть момент с премиум-коммуникацией. Лингвисты, владеющие английским языком, меня поддержат в высказывании, что рускоговорящему человеку порой трудно уловить узконаправленный контекст и коннотацию чужого языка, как бы шикарно на иностранном не разговаривал юзер. Что уж там говорить, в технической литературе я и на русском не всегда понимаю широту мысли автора. Документация по интерфейсу сплошь на иностранном, что мешает, на мой взгляд, новичкам синтезировать поступающую информацию. Особенно при работе с новым материалом. Свободно разговариваю на английском, разбираюсь в программировании, однако и у меня возникали сложности с логической интерпретацией новой информации (если есть инфа, где располагаются доки на русском языке - ткните носом). Будут силы, запишу еще курс на своем канале по работе в премиум-версии.
    В целом и вкратце, хочется поблагодарить автора за большой вклад в браузерную автоматизацию в рунете и прислушаться к просьбам своих старых фанатов (It's me) :D


  • administrators

    @olegtut said in Выпущена 21.5.1 версия BrowserAutomationStudio:

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

    Уже есть запуск функции в несколько потоков.

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

    https://ru.wikipedia.org/wiki/Ассоциативный_массив

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

    Ручное управление браузером скоро будет.

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

    Сейчас можно реализовать практически все. Может у вас не совсем правильная архитектура приложения?

    Так же, хочется затронуть момент с премиум-коммуникацией. Лингвисты, владеющие английским языком, меня поддержат в высказывании, что рускоговорящему человеку порой трудно уловить узконаправленный контекст и коннотацию чужого языка, как бы шикарно на иностранном не разговаривал юзер. Что уж там говорить, в технической литературе я и на русском не всегда понимаю широту мысли автора. Документация по интерфейсу сплошь на иностранном, что мешает, на мой взгляд, новичкам синтезировать поступающую информацию. Особенно при работе с новым материалом. Свободно разговариваю на английском, разбираюсь в программировании, однако и у меня возникали сложности с логической интерпретацией новой информации (если есть инфа, где располагаются доки на русском языке - ткните носом). Будут силы, запишу еще курс на своем канале по работе в премиум-версии.

    Большинство доков на 2 языках, только доки по веб интерфейсу не переведены. Когда-то будет.



  • @support said in Выпущена 21.5.1 версия BrowserAutomationStudio:

    https://ru.wikipedia.org/wiki/Ассоциативный_массив

    Понятно, что при помощи JS можно реализовать любую вещь. Если так, то зачем BAS, если можно просто юзать языки программирования... Я имею ввиду, что при создании имени переменной в самом BAS хочется иметь возможность варьировать expression именно для названия переменной, а не только для значения. К примеру, хочется чтобы имя задавалось не словом VARIABLE, а, к примеру, [[NAME_OF_VARIABLE]][[VARIABLE_NUMBER]]
    Кроме того, в JS нельзя создавать ассоциативные массивы. Любое подобие массива в JS - это всего лишь объект. Действие "Выполнить код" будет адекватно реагировать на такие "массивы"?
    @support said in Выпущена 21.5.1 версия BrowserAutomationStudio:

    Ручное управление браузером скоро будет.

    Это безумно радует. Жду этой функции с начала дебюта BAS, да и, полагаю, многие :) Имеются примерные сроки, в каких числах планируется?

    @support said in Выпущена 21.5.1 версия BrowserAutomationStudio:

    Сейчас можно реализовать практически все. Может у вас не совсем правильная архитектура приложения?

    Я реализовывал всё, что только можно. Но ключевое слово Вы сами обозначили: "Практически".

    @support said in Выпущена 21.5.1 версия BrowserAutomationStudio:

    Большинство доков на 2 языках, только доки по веб интерфейсу не переведены. Когда-то будет.

    Собственно, о непереведенных и речь.



  • @olegtut said in Выпущена 21.5.1 версия BrowserAutomationStudio:

    самом BAS хочется иметь возможность варьировать expression именно для названия переменной, а не только для значения. К примеру, хочется чтобы имя задавалось не словом VARIABLE, а, к примеру, [[NAME_OF_VARIABLE]][[VARIABLE_NUMBER]]

    Это можно реализовать через конструкцию eval в выполнить код, пример

    [[NAME_VALUE]]  = "MY_VALUE";
    eval("VAR_" + [[NAME_VALUE]] + " = 10") 
    

    но в диспетчере ее не будет видно. И честно сказать так никто не делает даже из тех кто пишет кодом :) Просто видимо не правильно решаете поставленную задачу.

    Кроме того, в JS нельзя создавать ассоциативные массивы. Любое подобие массива в JS - это всего лишь объект. Действие "Выполнить код" будет адекватно реагировать на такие "массивы"?
    В выполнить код все это работает

    [[MY_COLLECTION]] = {
      tomato:10,
      watermelon:1,
      potato:2
    }
    


  • @usertrue said in Выпущена 21.5.1 версия BrowserAutomationStudio:

    [[MY_COLLECTION]] = {
    tomato:10,
    watermelon:1,
    potato:2
    }

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



  • @olegtut said in Выпущена 21.5.1 версия BrowserAutomationStudio:

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

    А Вы проверяли мои примеры, чтобы утверждать, что в них есть ошибки? Они все рабочие! А во вторых, что Вы понимаете под термином объект? Объект это некая сущность, которая имеет свои свойства и методы дак вот, объектом является практически все, даже примитив вроде строки на самом деле также является объектом xD. Ну и разумеется, что и массив, как и ассоциативный массив это тоже объекты. Кстати ассоциативный массив это лишь названия для объектов типа коллекция. А массивом в строгом смысле может быть только набор данных, расположенных в числовой последовательности:

    var arr = [
    "Яблоки",
    "Помидоры",
    "Огурцы"
    ];
    log("Ты массив? Ответ:" +Array.isArray(arr) );
    
    


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



  • За механизм перетягивания блоков, отдельное спасибо =)



  • Путем тестов заметил, что из версии 21.4.1 действие "Прокси" нужно пересоздать еще раз для этой новой версии 21.5.1, иначе язык не смениться под прокси. Какие еще действия нужно заново сгенерировать?



  • @fastspace said in Выпущена 21.5.1 версия BrowserAutomationStudio:

    Какие еще действия нужно заново сгенерировать?

    @support said in Выпущена 21.5.1 версия BrowserAutomationStudio:

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

    Только создал вопрос про начальное положение курсора, а тут и исправление подъехало). Супер!

    P.S. Рано радовался:
    @support said in Выпущена 21.5.1 версия BrowserAutomationStudio:

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

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



  • Самое важное заслоупочил - недочитал до конца(


  • administrators

    @olegtut said in Выпущена 21.5.1 версия BrowserAutomationStudio:

    Кроме того, в JS нельзя создавать ассоциативные массивы.

    Это немного странное утверждение.

    var x = {} //Так нет?
    

    Любое подобие массива в JS - это всего лишь объект.

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

    В любом случае https://drive.google.com/uc?id=1UeWTFPF858InDsRKe3kY62KjruosKi53&export=download - вот пример работы с ассоциативными массивами в BAS.

    Чтобы вносить какие-то изменения мне нужно знать потребность которая за ними стоит. Если вы опишите пример, который невозможно/неудобно реализовать сейчас, скорее всего это будет добавлено. Если это какая-то абстракция, то изменения вряд ли будут.