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


  • administrators

    В этой версии присутствует несколько больших изменений:

    Действие 'Прокси' теперь не только меняет прокси, но и делает так, чтобы смена прокси выглядела более правдоподобно.
    Работа в основном окне программы (оно черного цвета) теперь происходит более интуитивно.
    Исправлен один очень неприятный баг связанный с несвоевременным освобождением памяти при работе с одним браузером на протяжении долгого времени.

    https://i.imgur.com/ddfAi4C.png


    https://i.imgur.com/A8ByAwC.png

    Давайте рассмотрим каждое изменение более подробно.

    Для начала немного информации про WebRTC, так как этот функционал встроен в любой современный браузер, а с помощью него можно получить данные о реальном ip даже используя прокси. WebRTC - набор апи, которые помогают устанавливать соединение между браузерами и передавать между ними информацию. Причем предпочтение отдается именно прямому соединению, и только если оба браузера находятся за фаерволом или NAT, то используется специальный сервер чтобы передавать трафик через него. Установить соединение бывает непросто учитывая то, что ipv4 адресов недостаточно для всех устройств и большинство из них находятся в приватных сетях, имеют адреса вида 192.168.. или 172.16.. и обмениваются информацией с остальными через NAT. WebRTC ипользует такой алгоритм чтобы установить соединение - сначала устройства получают информацию о конфигурации своих сетей и обмениваются ей через какой-то другой канал, потом они пытаются соединиться используя разные варианты конфигурации. Допустим, если устройства находятся в одной сети, то для установления соединения достаточно использовать ip в этой сети, если одно из устройств имеет внешний ип, то оно выступает в роли "сервера" и к нему подключается второе устройство, или наоборот. Нам интересна как раз конфигурация сети, поскольку она содержит реальные ip адреса. WebRTC допускает ее чтение, и даже редактирование через javascript перед отправкой собеседнику. Информация имеет формат SDP описанный в данных документах https://tools.ietf.org/html/rfc5245#section-15 https://tools.ietf.org/html/rfc4566. По следующей ссылке ее можно получить через ваш браузер https://jsfiddle.net/wrbyLqkn/1/, скорее всего там есть ваш реальный ip. В качестве одного из парметров данной информации выступает внешний ip браузера, он получается через запрос к STUN серверу. Функционал данного сервера очень прост - возвращать устройству сделавшему запрос его реальный ip адрес. Сайт сам задает STUN сервер, который хочет использовать, например, в коде выше использовался такой сервер stun.l.google.com:19302. Запросы к этому серверу идут через протокол UPD(вместо TCP) минуя прокси. Суммируя вышесказанное, javascript может совершать запрос к произвольному серверу без прокси и получать ответ в виде реального внешнего ip. Вот ссылка на хорошую статью если вы хотите ознакомиться с вопросом более детально https://www.html5rocks.com/en/tutorials/webrtc/infrastructure/

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

    1. Подмена ip происходит на уровне браузера, через js обнаружить ее невозможно.
    2. Разные браузеры могут выдавать информацию в формате SDP, тем не менее немного отличающуюся. Подмена может осуществлятся через замену текста, и такой метод можно обнаружить проверив некоторые детали специфичные для браузера. BAS выдает информацию именно так, как это делает Chrome, без замены текста.
    3. Запросы к любому STUN серверу запрещены. Даже если запретить получение информации непосредственно через js, но оставить возможность браузеру делать запрос к серверу, то реальный ip не будет известен клиенту, но будет известен серверу и если настроить несколько серверов или несколько портов и связать пользователя с конкретным сервером, то ip можно получить уже на стороне клиента. BAS защищает от подобного метода.

    Есть простой метод, как можно проверить, пытается ли сайт получить ваш ip через WebRTC или нет, достаточно установить Wireshark, в поле фильтра установить строку stun и зайти на сайт, в случае использования WebRTC в окне приложения будут запросы. Вот видео, которое это демонстрирует: https://i.imgur.com/LwKQY7S.gifv

    В случае BAS, запросов не будет, хоть ip и будет возвращаться.

    Почему бы не сделать запросы к STUN серверу через туннелирование?
    Дело в том, что не все прокси поддерживают протокол UPD, хотя это и указано в спецификации. Пример такого прокси https://i.imgur.com/ubKq7nZ.gifv В будущем BAS будет проверять прокси на такую возможность, но сейчас все запросы к STUN серверу запрещены.

    Как видите, данная реализация хоть и не является идеальной, но достаточно близка к ней.

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

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

    BAS научился корректно возвращать измененную дату с учетом летнего времени.

    Еще один способ, которым можно обнаружить примерное реальное месторасположение является использование internationalization api( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat ). Пример использования: https://jsfiddle.net/0Lq2km96/, по ссылке должно отобразится ваше примерное реально месторасположение независимо от прокси и впн.

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

    Наконец, бывают ситуации, когда ip, который вы используете для доступа к прокси не соответствует его внешнему ip, в таких случаях BAS будет получать внешний ip через сервис ip.bablosoft.com. К сожалению, не существует способа получить адрес без сетевого запроса. Сервис должен стабильно работать при 20к запросах в секунду. Настройка отключаема.


    Немало внимания в новом апдейте было уделено удобству использования основного окна.

    Для элементов, значение которых может быть не совсем понятным, появились подсказки.
    Реализовано множество удобных мелочей: список недавних проектов теперь находится всегда на основной панели, путь к текущему проекту можно скопировать, все иконки заменены на такие, что смотрятся лучше при маленьком размере элементов, изменены значки запущенных браузеров.
    Добавлена возможность быстрого обмена проектами - открытие проекта по ссылке и загрузка на гугл диск.
    Обновлено окно компиляции проекта, оно стало более интуитивным и интегрированным с облаком. Теперь проект можно обновлять/создавать прямо из BAS, появилась возможность не создавать архив при каждой компиляции.


    Было потрачено много времени на поиск причины и исправление бага с несвоевременным освобождением памяти. Баг существуетвовал все время на протяжении жизни проекта и проявлялся только тогда, когда несколько браузеров работали 10 и больше часов без перезапуска. Потребление памяти увеличивалось приблизительно на 5-10 мб в час, через несколько дней непрерывной работы проект становился неработоспособным. Ошибка была связана с библиотекой Qt, был найден метод как обойти этот баг.


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



  • Класс!Спасибо разработчик!



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

    Cервис должен стабильно работать при 20к запросах в секунду. Настройка отключаема.

    Предлагаю добавить проверку на выбор на https://www.ipify.org/ что бы снизить нагрузку на Ваш сервер


  • administrators

    @drprime Я тоже думал добавить именно этот сервис, как вариант если родной откажет, но остановился все-таки на решении поднять свой, потому что:

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

    Поэтому я решил поднять свой, купил 3 сервера, в каждом работает чистый nginx с настройками оптимальными для данной задачи. Вроде бы данный вариант должен держать очень большие нагрузки, если нет, то мощности можно добавлять без выпуска новой версии. По крайней мере сейчас при непрерывных запросах в 100 потоков один сервер даже набирал 1% использования cpu.

    Да, и проблему с таблицами в базе, о которой вы сообщали в этой версии тоже исправлена.



  • Низкий Вам поклон за ваше детище!



  • Куда целовать? только вчера матерился на работу с прокси и сегодня исправлено (совпадение? не думаю)



  • Наконец-то модуль тайм зоны обновили, приходилось вечно скачивать, т.к базы старые.
    Еще бы телеграм модуль от Fox обновили бы!



  • This post is deleted!


  • @support В новой версии браузер постарел:
    0_1542284245296_0c6bcd2c-5539-4ed1-8b12-ca2d6094e1c1-image.png



  • @senerg Браузер постарел ещё в версии 21.2.2 а не в новой :)



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

    @support В новой версии браузер постарел:
    0_1542284245296_0c6bcd2c-5539-4ed1-8b12-ca2d6094e1c1-image.png

    @alex88 негодует.



  • Не все проекты открываются корректно. Почему то увеличивается масштаб окна.

    Видео для наглядности: https://i.imgur.com/gulo6bQ.gif

    Проект в котором "поехал масштаб" - для теста 0_1542286971983_1487078079264-шоддэж.xml

    Проблема с масштабом проявляется и в главном окне. После остановки скрипта, масштаб растягивается так, что не видно нижнею панель (лечится "Свернуть в оно" => "Развернуть"). Но при этом съезжается масштаб главного окна со списком "Последние объекты"

    Видео для наглядности: https://i.imgur.com/jAMvJKM.gif

    Если в режиме "Запись" закрыть окно, то нет возможности вернуться обратно к интерфейсу редактора

    https://i.imgur.com/n0gq8Ql.gif

    Программа запускалась на ноутбуке с экраном 15.6, разрешение 1366х768, OS Windos 10


  • administrators

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

    Проект в котором "поехал масштаб" - для теста 0_1542286971983_1487078079264-шоддэж.xml

    Открыл ваш проект, зашёл в настройки, а там изменённый масштаб:
    0_1542289371732_203be402-21ce-4da1-bfd5-23d6410fa218-изображение.png


    изменил на 100 и стало всё нормально:
    0_1542289398676_6fe04cee-e20a-4344-b931-7cdda8ce4185-изображение.png


    свернул развёрнутое окно кнопкой:
    0_1542289453930_c1243032-9f41-40d4-9ef6-86a0f8af4b0e-изображение.png


    И всё стало нормально. Закрыл BAS, открыл BAS, открыл проект, всё осталось в норме. Возможно вы не знали об этих настройках?



  • Действие прокси уже дошло до того, что применяется по 1-3 секунды. Видимо ваши серваки уже не держат.



  • Открыл ваш проект, зашёл в настройки, а там изменённый масштаб:

    @fox Про настройки масштаба знал, но при таком масштабе не было возможности зайти в настройки 🙂 . А что можно посмотреть в исходном коде проекта, не знал.

    Проект из примера, был скачан с другой темы https://community.bablosoft.com/post/7621
    Глянул исходный код, масштаб по какой то причине изменен на 200%

    EnableFlash=false ForceUtf8=true SkipFrames=75 ToolboxHeight=750 ScenarioWidth=970 Zoom=200 IsMaximized=true Restart=true UseHumanLikeMouseMoves=true
    

    свернул развёрнутое окно кнопкой:

    Не возможно открыть окно редактора, если закрыть (кнопкой) alt text

    https://i.imgur.com/56gkBUL.gif

    "Растягивание" (из-за большого списка "Последние проекты") главного окна программы настройками изменить можно, или это все таки проблема малого разрешения экрана?

    https://i.imgur.com/VBZSdAr.gif



  • Тоже наблюдал различные мелкие проблемы при работе с BAS всех версий на ноутбуке с экраном 15.6, разрешением 1366х768, OS Windos 10
    Например:
    Если навести на ? чтобы автоматически выплыла подсказка и там большой текст, то нет возможности его весь прочитать "прокрутив вниз".
    0_1542296865773_3666462.JPG
    Подсказка отображается только при наведенной мышке, но при столь маленьком разрешении верхняя часть получается очень маленькой. Постоянно приходится либо увеличивать до максимум нижнюю, чтобы увидеть браузер, либо увеличить верхнюю, чтобы нормально пользоваться.

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

    Очень жаль, что до сих пор нет возможности нижнюю правую часть с настройками/окном браузера вынести в отдельное окно (и вернуть обратно при необходимости). При разрешении 1366х768 на 15 дюймах это будет как глоток свежего воздуха. Сейчас для каждого действия с открытым окном браузера, нужно еще сделать 2 действия на растягивание нижней/верхней части...



  • @solt я если вдруг натыкаюсь на такой масштаб (среди проектов, выложенных здесь такие почему-то бывают, слепые пользователи, будь они неладны, не все в теме что оно хорошо только на крупных мониторах), то поворачиваю экран винды (https://www.google.com/search?q=повернуть+экран+windows&oq=повернуть+экран+&aqs=chrome.1.69i57j0l5.5162j0j7&client=ubuntu&sourceid=chrome&ie=UTF-8) захожу, меняю настройки, поворачиваю обратно. Лайфхак работает, только мышью попадать в поля сложновато с непривычки.



  • @support огромное спасибо за ваш труд. Сколько людей над таким прекрасным софтом трудится? Разраб и ещё один прогер? Успехов вам в совершенствовании!

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



  • Вы ахуенны :) Простите мне мой французский ))) Спасибо за обновку! Смотрю еще и в компиляции чот поменялось. Смс модуль теперь не надо в ручную перезаливать в автономный бот :D Круто в общем!



  • @qwaros Полностью поддерживаю ваш французский.