У новій версії було здійснено перехід на новий браузерний рушій. Це означає, що архітектура проекту значно змінилася, тепер автоматизація браузера працює так:
Що отримують наші користувачі?
Таку автоматизацію дуже складно виявити. Можна робити це за непрямими ознаками, такими як: повторення одних і тих самих дій, неправдоподібні паузи між діями, і т. д. Але зробити це за відсутністю якогось функціоналу вже вкрай проблематично, а система зміни відбитків ускладнює збір інформації про обладнання.
Старі проекти BAS легко портувати. Незважаючи на те, що всередині софту помінялося дуже багато, дещо було і зовсім переписано з нуля, портувати старий проект просто. У деяких випадках достатньо відкрити його в новій версії, є невеликі винятки, вони описані нижче.
Нові можливості. Нова система керування браузером дає також і можливості додати нові фічі. Деякі вже додано зараз, деякі ми сподіваємося додати пізніше. Підтримка розширень. У новій версії з'явилася можливість підключати розширення браузера. Для цього потрібно:
На жаль поки робота з інтерфейсом розширення не підтримується. Планується реалізувати це в наступних версіях. Оновлення версії браузера в майбутньому. Дуже важливим фактором автентичності браузера є наявність усіх методів, класів, констант javascript. Іншими словами, якщо версія рушія стара - це можна виявити. Щоб уникнути цього, планується оновлювати браузер досить часто. В ідеалі, це буде робитися щомісяця разом з оновленням Chrome.
Для забезпечення постійних оновлень було написано тести для дій по роботі з браузером (це робив @GhostZ), було додано детальну документацію по кожному патчу, покращено інструменти для впровадження патчів, найближчим часом будуть написані тести для зміни відбитків.
Перехід на новий рушій так само допоможе в цій справі. Багів автоматизації при оновленні версії браузера в ньому очікується значно менше. Тест pixelscan. Багато наших користувачів запитували про цей тест, зараз BAS успішно його проходить, для цього:
На момент написання статті в тесті є баг. Звичайний браузер визначається як фреймворк для автоматизації, . Відбувається так тому, що зовсім нещодавно властивість navigator.webdriver у звичайному Chrome поміняла значення з undefined на false і тест не встигли оновити. У цьому випадку, BAS також визначається як фреймворк для автоматизації, так само як і звичайний Chrome.
Ще один момент, при використанні проксі в цьому тесті, потрібно мати резидентський ip.
У новій версії "рідні" дані canvas не є унікальними, це можна перевірити на сторінці https://browserleaks.com/canvas Оптимізації в роботі CPU. Додаткове навантаження на процесор порівняно зі звичайним Chrome може виникати при постійній передачі зображення з браузера в BAS. Знизити його виявилося зовсім не простою задачею, для цього було переписано протокол передачі даних. Оригінальна версія витрачала час на стиснення даних і передачу їх по websocket, цей підхід давав просто непристойні результати при великій частоті кадрів.
Новий протокол допоміг, але рішення все ще не було досконалим. Тому було додано адаптивне зниження частоти кадрів. Якщо користувач активує браузер - fps підвищується, при згортанні браузера, він знову падає. Цей метод допомагає значно знижувати навантаження в багатопотоці, а також не є небезпечним для виконання скриптів, оскільки оптимізація не зачіпає жодної іншої частини браузера крім передачі зображення.
Якщо хочете дізнатися більше, рекомендую ознайомитися з відео
Оптимізація використання жорсткого диска. Розмір профілів було значно зменшено порівняно зі звичайним браузером.
Розмір профілів позначився позитивно не лише на кількості використовуваного дискового простору, але і на часі запуску потоку. Widevine У новій версії widevine потрібно вмикати в налаштуваннях, або в дії "Налаштування Браузера". На жаль, ліцензування BAS не проведено, тому сайти на кшталт spotify відтворювати контент не будуть. Дія "Яваскрипт" Додано нову дію "Яваскрипт", як і стара, вона може виконувати код у контексті браузера, але робить це набагато якісніше:
Більшість роботи зробив @Oyasumi-Punpun
Стара дія продовжить працювати, але тепер вона вважається застарілою. Встановлення referrer. Встановлення referrer тепер здійснюється через дію "Завантажити" або "Додати вкладку". Це потрібно враховувати при портуванні проекту. Смайлики. У новій версії додано підтримку смайликів при введенні тексту. Такий метод введення все одно не є достовірним, тому що смайликів немає на клавіатурі, а отже події keyup, keydown і keypress не емулюються.
Наявність смайликів у ресурсах проекту не дозволить скомпілювати проект із захистом.
Введення символів що складаються з 4 байт ще не реалізовано, сюди відносяться прапори країн. Нові фактори відбитка. Для нової версії було додано нові фактори відбитка. База ще не встигла оновитися, тому рекомендується використовувати відбитки не старше 2 тижнів. Оновлення модулів. Було додано нові модулі "Рядок" і "SQL". Перший розширює можливості BAS по роботі з рядками, є дії для форматування, редагування, пошуку рядків, а також для парсингу тексту. Другий - дозволяє працювати з популярними SQL базами даних: mysql, mariadb, postgres, sqlite, mssql. Є можливість виконувати примітивні дії не вникаючи в синтаксис, а також виконувати довільні запити до бази.
Дякую @GhostZ за модулі. Обмеження нової версії. Деякі речі ми зробити не встигли.
Це не найважливіші речі, тому відкладати випуск версії до їх завершення недоцільно. Проте, усі вони будуть виправлені в майбутніх релізах. Досягнення максимальної автентичності. Якщо сайту все одно вдається виявити нову версію BAS і ви впевнені, що справа не в проксі, не в номері телефону, послідовності дій, а саме в браузері, то ось список дій, які необхідно вжити:
Якщо нічого не допомогло, використайте алгоритм у цій темі https://community.bablosoft.com/topic/12198/. Як портувати старий проект. Для цього потрібно відкрити старий проект у новій версії і внести такі зміни:
Встановити заголовок з параметром Referer потрібно замінити на дії Завантажити або "Додати вкладку".Скидання, Встановити Значення Комбобокса, Встановити Індекс Комбобокса, Вибрати Випадковий Елемент З Комбобокса, Попередня Сторінка, Додати вкладку, Перевірити ІснуванняПотрібно пам'ятати, що формат cookies і профілів змінився. Якщо проект покладається на використання профілів старого формату, їх потрібно оновити. Подальший розвиток проекту. Плани по подальшому розвитку браузера наступні:
План може змінюватися з часом.
У відео багато особливостей нової версії показано детальніше
.
!ВАЖЛИВО Власники 32-бітної версії Windows не зможуть оновитися в автоматичному порядку. Після завантаження станеться краш. Нову версію потрібно перекачати. Для 64-бітної версії проблем не буде.
Патч 24.0.3
У ньому ми постаралися виправити основні критичні помилки знайдені користувачами.
Виправлено помилки в роботі деяких сайтів.
Стрім на twitch міг перерватися з помилкою 3000 на деяких проксі і лише при виборі автоматичної якості.
Сторінка входу в акаунт epic games store не завантажувалася повністю.
Ці проблеми виправлено. Але для авторизації в EGS потрібно увімкнути канвас/використовувати відбитки і вимкнути AjaxRecaptcha2.
Ці фікси мають універсальний характер і застосовні не лише до цих сайтів. Виправлено помилки в роботі з ssl. Помилка "This site can't provide a secure connection" більше не повинна з'являтися.
Нам вдалося відтворити проблему, але лише одним певним чином.
Якщо проблема з'являється і після апдейту, потрібно надати детальні кроки для відтворення і проксі. Частота оновлення кадрів за замовчуванням встановлена в 30. Це значно знижує навантаження на CPU.
Насправді тепер нова версія в багатопотоковому режимі стала споживати менше часу CPU ніж минула і навіть менше ніж звичайний Chrome.
Дякую одному з наших користувачів за ідею.
Цей код дуже сильно залежить від заліза. Якщо на вашому моніторі фікс не працює, зверніться до @Fox з описом проблеми. Покращення антидетекту. Захист imperva, який визначав BAS при зміні проксі тепер так не робить. Зміна проксі на льоту. Виправлено проблеми минулої версії по зміні проксі без перезавантаження браузера. Тепер дія "Проксі" стала працювати на 3 секунди довше. Вимкнено передвстановлені розширення. За наявності певних значень у реєстрі, у нові профілі створювані BAS можуть додаватися розширення встановлені на ПК користувача.
Цей момент виправлено.
https://www.chromium.org/administrators/pre-installed-extensions Покращено режим плавного запуску потоків. Тепер потік вважається запущеним лише коли запущено і допоміжний процес BAS і реальний браузер, а не лише допоміжний процес, як було раніше.
Ці значення потрібні для роботи системи плавного запуску потоків.
Раніше кількість одночасно запускаваних браузерів була 1, тепер вона стала 3. Це значення можна змінювати в налаштуваннях. Модифікація заголовків для всіх запитів. Стандартні методи зміни заголовків, таких як User-Agent і Accept-Language, не змінюють їх для всіх запитів.
Це дозволяє легко виявити браузери, які покладаються лише на ці методи.
У BAS було додано механізм, який дозволяє здійснити заміну для абсолютно всіх запитів.
Він діє схожим чином на те, як тунелювання працює для проксі, лише в цьому випадку йдеться про заголовки.
Нижче скріншот, на якому видно, що заміні піддаються навіть внутрішні запити Chrome:
Дуже велике прохання не судити, про те, чи замінюються заголовки чи ні по інструментах розробника.
Патч 24.0.5 Оптимізація.
З'явилася можливість встановити максимальний FPS. Це можна зробити в налаштуваннях або через дію "Налаштування Браузера". Зменшення частоти кадрів може бути корисним для зниження навантаження на сайтах з анімацією.
За замовчуванням значення встановлено в 30.
Раніше, при створенні нового профілю, браузер виконував кілька ресурсомістких задач. Це призводило до сильного короткочасного навантаження на CPU. Зараз це виправлено. Навантаження при старті потоку знизилося.
Виправлення багів.
Патч 24.0.7
У цьому патчі було додано безліч фіксів що стосуються продуктивності. Оптимізації піддалося навантаження практично на всі типи ресурсів ПК.
CPU
Було вимкнено безліч функцій що інтенсивно споживають час процесора: різноманітні метрики, деякі функції crashpad, постійні перевірки віртуальних дисплеїв, отримання hwid, батьківський контроль та інше.
Функціонал, який впливає на працездатність браузера ми не прибирали. Ці патчі дозволяють знизити навантаження при створенні профілю в середньому на 10% відсотків.
Прибрано перевірку контрольних сум для внутрішніх розширень і моніторинг цих файлів. Пам'ять. Розмір області пам'яті виділяваний на передачу зображення тепер динамічний. Це дозволило знизити обсяг споживаної пам'яті, особливо для екземплярів браузера з маленькою роздільною здатністю.
Виправлено помилку, коли розмір доступної фізичної пам'яті на машині міг визначатися неточно. Жорсткий диск. Було додано механізм кешування профілів. Для того щоб створити профіль, браузеру необхідно ініціалізувати кожен файл розташований у папці профілю. Це покращення дозволяє копіювати файли профілю, а не створювати їх щоразу заново. Новий функціонал стосується і тимчасових профілів, які створюються щоразу при запуску нового потоку. Його можна вимкнути в налаштуваннях.
Список модулів BAS кешується щоб не читати їх при старті кожного потоку. Плавний запуск і зупинка браузерів. Було доопрацьовано механізм плавного запуску браузерів. Тепер обмеження на мінімальний розмір завантаженості процесора повинні дотримуватися протягом деякого часу. Іншими словами, браузер можна запустити лише якщо процесор не був сильно зайнятий протягом останніх кількох секунд.
Кілька браузерів тепер не можна запустити в одну мить, перед наступним запуском повинен пройти невеликий інтервал часу. Це дозволяє уникнути великих стрибків навантаження на CPU.
Зупинка браузерів тепер теж відбувається плавно, одразу всі браузери не будуть зупинені одночасно. Така поведінка могла призводити до зависання системи на кілька секунд.
При зупинці браузера враховується де розташований профіль. Якщо він перебуває в тимчасовій папці, відбувається аварійна зупинка процесу, це швидше, але може призвести до втрат даних профілю. Якщо профіль не є тимчасовим, зупинка відбувається коректно.
Змінити параметри плавного запуску можна в налаштуваннях. Зависання системи. Виправлено зависання системи при роботі в кілька десятків потоків після відкриття диспетчера задач. Дякую користувачу, який вказав на цей баг.
При нестачі оперативної пам'яті різноманітні компоненти браузера починають її звільняти або проводити інші дії. Це теж може призводити до зависання системи коли обсяг вільної пам'яті зменшується. Після апдейту браузер буде вважати, що пам'яті достатньо, навіть якщо це не так.
Патч 24.0.8 Автентичність браузера.
Покращено алгоритм приховування змінних у браузері.
Виправлено деякі проблеми з виявленням BAS у режимі запису.
Модуль AjaxRecaptcha2 може бути виявлено. Небезпечний код переміщено в модуль ReCaptcha, який вимкнено за замовчуванням.
Якщо старі проекти працюють з рекапча, його необхідно увімкнути тут
Покращення роботи редактора. Виправлено роботу з будь-якими діями, які перезавантажують редактор. Наприклад, "Скидання" або "Створити або переключитися на локальний профіль". Ці покращення стосуються лише режиму запису.
Точка виконання більше не скидається, а скрипт може коректно продовжити роботу:
Переміщення точки виконання більше не скидає стек викликів, стан циклу і т. д.
Виправлення. Виправлено роботу вкладок на деяких сайтах.
У минулих версіях при активації перетягування браузер зависав. Зараз це виправлено. Повноцінна підтримка перетягування буде додана після наступного оновлення версії браузера. UDP. BAS вміє тунелювати UDP протокол. Але не всі socks5 проксі це підтримують. QUIC - протокол заснований на UDP розроблений і використовуваний переважно Google. Це може призводити до деяких проблем там де він використовується. Наприклад, на сайтах з рекламою Google можуть спостерігатися фризи, сторінки можуть завантажуватися не повністю.
Для розв'язання цієї проблеми в BAS за замовчуванням тепер вимкнено QUIC. Рекомендується переконатися, що ваші проксі підтримують UDP і увімкнути QUIC якщо це так. Зробити це можна в налаштуваннях або в дії "Налаштування Браузера".