Скорее всего, токен рефрешить надо. Вот из документации яндекса
Добавьте скопированный ClientID в ссылку вида https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор приложения> Перейдите по ссылке и на открывшейся странице скопируйте ваш авторизационный токен.Яндекс Метрика
-
Возможно ли сделать полную эмуляцию браузера, или хотя бы просто сделать возможность как-то включать ее, когда нужно?
Обижаете, BAS и так эмулирует браузер.
Все гораздо проще, дело в document.referrer
Вот фикс.
И не забывайте, чтобы посещение зачлось нужно подвигать мышкой
-
@blackhacker Если хотите, можете оформить и выложить скрипт в магазин, тут многие интересовались метрикой.
-
@support Спасибо, скоро выложу) Придется вырезать часть кода из моего скрипта, у меня гораздо больше функций, чем просто прогулка по сайту. Но я не знаю, какую примерно выставить цену, чтобы и не завышать сильно, и не за бесценок выставлять. Что-то нужно знать для фикса (устанавливать document.referer), или мой текущий скрипт будет работать? Насколько скрипт будет защищен? У меня все функции скрипта находятся в секции "выполнить код", его любой желающий сможет выложить потом. Я скачал скрипт SiteVisitor из магазина, и без труда получил его исходники.
И еще появился вопрос. Во время выполнения иногда вываливается ошибка
1 - TypeError: Result of expression '_result().split' [undefined] is not a function. Номер строки:3 Во время выполнения скрипта_on_error стоит, игнорирование ошибок тоже включено. Но скрипт все равно завершается.
-
Но я не знаю, какую примерно выставить цену, чтобы и не завышать сильно, и не за бесценок выставлять.
Я тоже не знаю, слышал, что есть такие сервисы, значит должен быть и спрос. Ну и такой скрипт не будет требовать постоянных доработок.
Что-то нужно знать для фикса (устанавливать 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 Бесплатный не значит открытый. Например, может быть такой вариант. Разраб делает 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 потоков для теста, хоть и с тормозами, но все запустилось.
-
Возможно, в новой версии уже так сделано, но перед обновлением 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, и каждый раз заменяются на новые, т.е. нет утечки памяти. Может ли это быть связано с циклом и вызовом в нем асинхронных функций?
-
Есть ли функция для получения количества потоков?
-
каждый поток потребляет около 70 МБ оперативной памяти
Это в процессе BrowserAutomationStudio.exe? или в Worker.exe?
Если в первом, то нужен проектЕсть ли функция для получения количества потоков?
Нет, но ее обычно или задает разраб, либо она берется из ресурса. Для получение количества ресурсов можно взять ресурс еще 1 раз
-
@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?