Яндекс Метрика

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

    Обижаете, BAS и так эмулирует браузер.

    Все гораздо проще, дело в document.referrer

    Вот фикс.

    http://bablosoft.com/distr/BrowserAutomationStudioDevelopment/16.1.4/BrowserAutomationStudioInstallAllInOne.exe

    И не забывайте, чтобы посещение зачлось нужно подвигать мышкой

  • @blackhacker Если хотите, можете оформить и выложить скрипт в магазин, тут многие интересовались метрикой.

  • @support Спасибо, скоро выложу) Придется вырезать часть кода из моего скрипта, у меня гораздо больше функций, чем просто прогулка по сайту. Но я не знаю, какую примерно выставить цену, чтобы и не завышать сильно, и не за бесценок выставлять. Что-то нужно знать для фикса (устанавливать document.referer), или мой текущий скрипт будет работать? Насколько скрипт будет защищен? У меня все функции скрипта находятся в секции "выполнить код", его любой желающий сможет выложить потом. Я скачал скрипт SiteVisitor из магазина, и без труда получил его исходники.
    И еще появился вопрос. Во время выполнения иногда вываливается ошибка
    1 - TypeError: Result of expression '_result().split' [undefined] is not a function. Номер строки:3 Во время выполнения скрипта

    _on_error стоит, игнорирование ошибок тоже включено. Но скрипт все равно завершается.

  • @blackhacker

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

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

    Что-то нужно знать для фикса (устанавливать document.referer), или мой текущий скрипт будет работать?

    Текущий скрипт будет работать. Такой код:

    Установить referer
    Зайти на сайт
    Подвигать мышью, понажимать на ссылки
    

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

    Вот что выдало, когда установил в реф ag.ru
    http://prnt.sc/dg62gw

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

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

    1 - TypeError: Result of expression '_result().split' [undefined] is not a function. Номер строки:3 Во время выполнения скрипта

    _on_error не спасает от js ошибок, а тут _result() не установлен в функции. Кстати, это тоже можно исправить, но пока можно добавить такой код

    if(!_result())
    {
    // как-то отреагировать, возможно завершить поток.
    }
    
  • @support said in Яндекс Метрика:

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

    так он вроде про бесплатный скрипт, а он ведь не шифруется ?

  • @out если с магазина - должен шифроваться

  • @out Бесплатный не значит открытый. Например, может быть такой вариант. Разраб делает 2 скрипта. Один в один поток - фри, второй без ограничений, и если первый утечет, то второй восстановить будет легко.

  • @support said in Яндекс Метрика:

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

    Возможно, в новой версии уже так сделано, но перед обновлением BAS скачал SiteVisitor из магазина, установил, запустил, в подпапкe Engine вроде нашел исходный проект. Я не знал, что исходник уже выкладывали на форуме, думал, там другой скрипт, поэтому хотел посмотреть исходник, я тогда как раз задавал вопрос по автоматизации посещений

    @support said in Яндекс Метрика:

    _on_error не спасает от js ошибок, а тут _result() не установлен в функции.

    А разве функция не должна генерировать ошибку, например random_point, которая перед этим вызывается, если она не была успешно завершена и не смогла установить _result()?

    вот часть кода, где ошибка:

    _if(el_exists, function () {
            BE.callbacks.element.focus()!
            BE.callbacks.element.random_point()!
            BE.log('Move ' + parseInt(_result().split(",")[0]) + ' ' + parseInt(_result().split(",")[1]));
            move(parseInt(_result().split(",")[0]), parseInt(_result().split(",")[1]))!
    

    Ошибка может быть через пару минут, а может через пару часов. Добавлю проверку, но все равно интересно, почему _result() не устанавливается, и при этом не генерируется ошибка в random_point

    Решил протестировать скрипт, увеличил количество потоков до 30, BAS стал падать. Уверен, что из-за какого-то кода, но опять же, почему? Запускал и 200 потоков для теста, хоть и с тормозами, но все запустилось.

  • @blackhacker

    Возможно, в новой версии уже так сделано, но перед обновлением BAS скачал SiteVisitor из магазина, установил, запустил, в подпапкe Engine вроде нашел исходный проект.

    В папке engine будет файл с таким содержанием

    <Remote ScriptName="sitevisitor" Version="last" Server="https://bablosoft.com/" Username="" Password="" Free="true" Mode="1"/>
    

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

    Я не знал, что исходник уже выкладывали на форуме

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

    Ошибка может быть через пару минут, а может через пару часов. Добавлю проверку, но все равно интересно, почему _result() не устанавливается, и при этом не генерируется ошибка в random_point

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

    Решил протестировать скрипт, увеличил количество потоков до 30, BAS стал падать. Уверен, что из-за какого-то кода, но опять же, почему? Запускал и 200 потоков для теста, хоть и с тормозами, но все запустилось.

    Это из-за BE.callbacks.element

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

    css("#id").move()!
    css("#id").click()!
    

    а такой может упасть

    EL = css("#id")
    EL.move()!
    //Тут EL будет помечен для удаления
    EL.click()!
    
  • @support said in Яндекс Метрика:

    Это из-за BE.callbacks.element

    Спасибо, поправлю. Но с падением разобрался, оказалось, почему-то утекает память. В диспетчере не отображается, куда, каждый поток потребляет около 70 МБ оперативной памяти. На деле же 20 потоков забирают около 10ГБ оперативки. Временные переменные если и создаются, то в пределах объекта BE, и каждый раз заменяются на новые, т.е. нет утечки памяти. Может ли это быть связано с циклом и вызовом в нем асинхронных функций?

  • Есть ли функция для получения количества потоков?

  • @blackhacker

    каждый поток потребляет около 70 МБ оперативной памяти

    Это в процессе BrowserAutomationStudio.exe? или в Worker.exe?
    Если в первом, то нужен проект

    Есть ли функция для получения количества потоков?

    Нет, но ее обычно или задает разраб, либо она берется из ресурса. Для получение количества ресурсов можно взять ресурс еще 1 раз

  • @support в Worker, от 50 до 80МБ потребляется. Могу скинуть проект, но в личные сообщения

  • @blackhacker Если в worker от 50-80 мб, то это нормально, там ведь браузер.

  • @support Да, это так, но остальная память утекает в неизвестном пока направлении, хочу посмотреть каким-нибудь сторонним софтом, куда. Доступно около 10гб памяти, чего в теории должно хватать на 130-140 потоков, а у меня на 20 потоках уже все занимается. При 30 BAS зависает и Windows предлагает его завершить с ошибкой.

    А с вами как-то можно связаться, кроме форума? Или есть какое-то точное время, когда вы здесь появляетесь? Иногда появляются проблемы со скриптом, и без вашей помощи дело не движется дальше (а вы иногда по 2-3 дня не заходите на форум, например в выходные)

  • Память может "пропадать" если число дескрипторов в системе очень большое. Но БАС так не делает.
    Сижу на только форуме. Но появляюсь здесь регулярно.

  • @blackhacker Ну как, получилось найти причину проблем с памятью?
    Вот хорошая тулза для чека состояния системы
    https://technet.microsoft.com/en-us/sysinternals/processexplorer.aspx

  • @support Да, через ProcessExplorer посмотрел, все-таки Worker потребляет больше, чем указывает диспетчер Windows. Около 500Мб. И я подозреваю, что это из-за одной моей криво написанной функции, я ее переделываю как раз.
    Еще появился вопрос, _set_result() может принимать только строковые значения? Если нет, то почему не передавать туда данные в объекте, например из random_point, или true\false из проверки на существование элемента exist()?

    Функцию переделал, но не помогло. Заметил, что загрузка сайта занимает около 250-300Мб, остальное видимо код. Попробую отключить картинки, может поможет. Но очень сомневаюсь. Как в маске указать расширение для конкретного домена? Будет ли работать так *domain.ru/*.png?

  • удалось найти причину, почему берет так много оперативы? у меня вообще каждый поток по 700 мб берет. при запуске 10мб, и потом набирает каждую секунду
    кстати отключение картинок не особо улучшило ситуацию

  • @smurfik Нет пока, жду вот, пока разработчик ответит) Я думал, у меня одного так. У тебя во время загрузки сайта, или просто так набирает?