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


  • administrators

    @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 потоков для теста, хоть и с тормозами, но все запустилось.


  • administrators

    @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, и каждый раз заменяются на новые, т.е. нет утечки памяти. Может ли это быть связано с циклом и вызовом в нем асинхронных функций?



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


  • administrators

    @blackhacker

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

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

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

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



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


  • administrators

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



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

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


  • administrators

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


  • administrators

    @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 Нет пока, жду вот, пока разработчик ответит) Я думал, у меня одного так. У тебя во время загрузки сайта, или просто так набирает?



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



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



  • @smurfik у меня с одной вкладкой, но все равно много потребляет. Создал новый проект, добавил загрузку сайта и бесконечный цикл с ожиданием, потом посмотрел - около 300Мб оперативки занимает каждый процесс. Хотя в проекте ничего больше нет, кроме загрузки страницы и цикла. Тоже не представляю, куда память уходит



  • @blackhacker у меня кстати примерно похожее... только у меня есть переменная которая увеличивается, если регистрация не удалась... и вот бывает что 3-6 рег неудачных, поэтому работает долго. утсановлена переменная со значением "5" после идет For от 1 до переменная которая была установлена. и в самом конце идет if если рега неудачная, то идет увеличение переменной в которой было значение "5"


  • administrators

    @blackhacker

    Еще появился вопрос, _set_result() может принимать только строковые значения?

    Может принимать любые значения.

    Как в маске указать расширение для конкретного домена? Будет ли работать так *domain.ru/*.png?

    Да, будет. * любая последовательность символов.


  • administrators

    @blackhacker @smurfik

    Можете прикрепить сайт или проект, на котором ест оперативу?


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.