Анализируй свою работу, или почему у меня на сайте 300000 посетителей

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
Эгэй!! Всем КУ Пацаки )))).

Вот и я решил отметится в конкурсе. Тут не будет истории успеха, палево тем и всякой чепухи. Только хардкор, только жесткий и брутальный технический мануал.

Итак, к делу!! Я бы хотел с вами обсудить такой момент:
  • Где вы держите зенопостер? на своем ПК/Ноутбуке? На ВДС с виндовс?
  • Как часто зенка требует вашего внимания? Как часто вы можете себе позволить отлучится от компа и почему?
  • Вы вообще контролируете работу, особенно баги в шаблонах и как вы это делаете?
  • У всех ваших шаблонов однотипная структура файлов, или все валяется как попало?
  • Если вы продаете свои шаблоны: А вы знаете какой шаблон запускается чаще всего?
  • Зачем вам отчеты о работе шаблонов, вы их как-то анализируете?
Короче, все эти вопросы у меня появились еще в 14 году, после того, как мои шаблоны по ОК.РУ стали разлетаться как горячие пирожки и ответами на эти вопросы я хотел бы поделиться с вами. Отвечать буду не по порядку ))).

Сейчас все мои шаблоны выглядят так:


Как писать в таком стиле полнофункциональный шаблон это целая наука а именно изучение C#, но вот с чего начинается мой шаблон и чем он заканчивается читайте далее.

Держите логичный порядок в своих рабочих файлах.

У меня все шаблоны создают директорию с названием шаблона в том каталоге, в котором находится сам шаблон. Еще я использую 2 переменные (текущая дата, проект), для систематизации и рабочих, и выходных файлов шаблона. Для разных проектов и задач я использую свою иерархию(в разрезе проектов, в разрезе дат, в разрезе дата-проект). Все мои шаблоны содержат входные настройки с текстовым полем "Проект" ОБЯЗАТЕЛЬНО!




Но думаю не стоит тут разводить демагогию на предмет как правильно и как не правильно делать, я просто показываю как это делаю я.
Вот кусок кода с комментариями, отвечающий за эту часть:​

C#:
//чистим куки и кешь
instance.ClearCookie();
instance.ClearCache();

//получаем текущую дату
string dt = DateTime.Now.ToShortDateString();
project.Variables["data"].Value = dt;//Дату передаем в переменную проекта, я ее использую для формирования отчетов, названий файлов.
// end
//переменные шаблона
string prnam = project.Name; //имя проекта это то как назвается фаил шаблона например test.xmlz
string prdir = project.Directory; //директория проекта, не путайте с папкой шаблона, она на уровень выше. это тот коталог в котором лежит шаблон.
string path = "";//путь, используем для создания директорий
// end
//создаем папку с названием шаблона в директории проекта
string prnam1 = Regex.Match(prnam, @".*?(?=\.)").ToString();
project.Variables["prtName"].Value = prnam1.ToString();// название шаблона отправляем в переменную проекта, она нам пригодится, допустим для составление лога-отчета
path = prdir + @"\" + prnam1 + @"\" + project.Variables["projectName"].Value;//это путь до папки с названием проекта указанным в настройках
DirectoryInfo dir = new DirectoryInfo(path);
dir.Create();//Создаем директорию
project.Variables["projectDir"].Value = path.ToString();// полный путь до папки проекта переносим в переменную проекта, по этому пути мы будем записывать разные файлы косающиеся работы шаблона.
project.Variables["shabDir"].Value      = prdir + @"\" + prnam1+@"\"; // директория самого шаблона тоже переносим в переменную проекта. Я допустим в какихто проектах веду черные списки в разрезе проектов указанных в настройках, а в какихто сквозной чс.
//------------------------------------------------------------------------------------------------------//
// Проверки входных настроек и содержания файлов, для разных шаблонов проверки будут разные
// это делается для исключения рукожопости пользователя, или когда вы решите намайнить бабло в пьяном угаре и накосячите :)
/*
if (!File.Exists(project.Variables["listUsers"].Value))
{
    throw new Exception(":: Фаил с ИД не указан или не существует! Исправте настройки!"); // сообщим юзеру о проблеме и завершим работу выход по красной
}
if (Convert.ToInt32(Macros.FileSystem.FileCountOfLines(project.Variables["listUsers"].Value))<100){
    throw new Exception(":: Фаил с ИД кого отмечать содержит менее 100 строк, добавте строки!!!"); // сообщим юзеру о проблеме и завершим работу выход по красной
}

if (!File.Exists(project.Variables["filePic"].Value))
{
    throw new Exception(":: Фаил с фотками не указан или не существует! Исправте настройки!"); // сообщим юзеру о проблеме и завершим работу выход по красной
}
if (Convert.ToInt32(Macros.FileSystem.FileCountOfLines(project.Variables["filePic"].Value))<2){
    throw new Exception(":: Фаил с фотками содержит  1 строку, добавте строки!!!"); // сообщим юзеру о проблеме и завершим работу выход по красной
}*/
// конец проверкам
// возмем прокси если есть
var proxylist = project.Lists["proxy"]; // запихаем содержание списка прокси в переменную

if (proxylist.Count>0){
    lock(SyncObjects.ListSyncer){//всегда блокируйте списки при работе во много потоке
        string proxy = proxylist[0];//берем прокси
        proxylist.RemoveAt(0);//удалям
        proxylist.Add(proxy);//вернем в конец
        project.Variables["proxy"].Value = proxy.ToString();//отправим прокси в проект, чтоб использовать в других кубиках
        }
    }
else
    {
    project.SendInfoToLog("Работаем без прокси!!!", true);//из содержания понятно что мы пишем в лог окно зенопостера
    project.Variables["proxy"].Value = "127.0.0."+new Random().Next(1,5).ToString();// удалите эту строку Если будите использовать этот сниппет в своих шаблонах
    }


// поработаем с аккаунтом

string account = "";// тут будет лежать текст вида ЛОГИН:ПАРОЛЬ
string pass = ""; //Сюда положим пароль
string login = "";//Сюда положим логин

var accountList = project.Lists["akk"];//подцепим список аккаунтов
if (accountList.Count>0){//проверим чтоб там были строки
    lock(SyncObjects.ListSyncer){//всегда блокируйте списки при работе во много потоке
        account = accountList[0];//берем аккаунт
        accountList.RemoveAt(0);//удалям
        accountList.Add(account);// удалите эту строку Если будите использовать этот сниппет в своих шаблонах
        //тут аккаунт не возвращается обратно в список, если он не валидный мы его записываем в другом файле
        login = Macros.TextProcessing.Split(account,":","0").First();//разделяем строчку получая логин
        pass = Macros.TextProcessing.Split(account,":","1").First();//разделяем строчку получая пароль
        }
    }
else throw new Exception(" :: Не указан фаил аккаунтов, или он не содержит ни одной строки.");//вызываем исключение, полная остановка шаблона.return "OK";

project.Variables["login"].Value = login.ToString();//тут логин передается в переменную проекта
project.Variables["pass"].Value = pass.ToString();//тут пароль передается в переменную проекта

/*
ВАЖНО!!!! не забудьте записать логин и пароль от аккаунта обратно в файл или в файл с невалидными аккаунтами
Я записываю логины и пароли одной строкой
Macros.FileSystem.FileAppendString(shabDir+proverka+".txt", login+":"+pass, true);//запишем логин пароль в соответсвующий файл
переменная proverka это результат работы функции проверки после авторизации на сайте, на разных сайтах она принимает разные значения,
но я стараюсь использовать всего 4 значения
VALID - рабочий аккаунт
noValid - не рабочий аккаунт не верный логин пароль
SMS - аккаунт требующий подтверждения по СМС
BAN - аккаунт забанен сайтом
*/
Комментариев в коде достаточно, чтобы понять суть каждой строчки: разберется любой НУБ, ну мне так кажется.

ЛАЙФХАК: Оценивайте на сколько популярен ваш шаблон!!!

Когда продажи моих шаблонов перевалили за первую сотню, я решил, что нужно распределить мои шаблоны по приоритету поддержки, т.е. шаблоны, которыми чаще пользуются, имеют более высокий приоритет на устранение багов, соответственно, чем реже шаблон используется, тем ниже приоритет. Вы думаете количество продаж покажет реальную картину использования шаблонов? Конечно нет. У меня был клиент который скупил все мои шаблоны, пачкой, а это было 12 шт * 1800 рублей(среднее) и он не пользовался ими, запустил пару раз и все. Ну а потом, как я и предположил, на рынке появились клоны моих шаблонов ))).... Но сейчас не об этом. Хотите себе такую же картинку в метрике (или любом другом веб счетчике)?


На самом деле получить такую статистику просто, не верите? Вот весь код:

C#:
 string url ="http://counter111.blogspot.ru/";//замените на свой сайт
instance.ActiveTab.Navigate(url+"?from="+project.Variables["prtName"].Value,""); // этой строкой мы открываем вкладку и переходим на сайт содержащий метрику
Ну как? Теперь по пунктикам:
  1. Заводим блогспот, ну или любой другой сервис создания сайтов с возможностью редактировать HTML или подключать счетчики статистики типа Я.Метрика. Главное условие чтобы выбранный сервис смог удержать трафик, который вы сгенерите со своих шаблонов. (Кстати, этот трафик можно использовать как бот траф для прокачки статы ))))). Еще вариант иметь свой хостинг или ВПС/ВДС.
  2. В блогспот вставляем код счетчика.
  3. В шаблон вставляем снипет.
Как все это работает?

Счетчики мониторят с каких УРЛ заходят на ваш сайт, а вы в шаблоне открываете ТАБ с УРЛ содержащим метку from. Ну и, в итоге, посмотрев отчет по меткам вы получите реальную статистику работы своих шаблонов. Я думаю, вы будете удивлены )))))). Если вам необходимо собирать более детальную статистику, то можно использовать УТМ метки :-)

Вот вам и 300к ботов на ваш сайт


Анализируйте отчеты по работе шаблонов!

Все мои шаблоны пишут логи в txt/csv файлы локально, но еще .......


У меня есть замечательный помощник и это.... Верно - ГУГЛОТАБЛИЦЫ!!! и, чтобы оценить текущую ситуацию в ключе работы по какой либо из тем, я смотрю не в лог файлы шаблонов, а вот на такие картинки:



ГТ - на столько мощный инструмент, что ими можно вообще заменить базу данных, правда есть ограничения на 50к строк в одной таблице, меня это ограничение вполне устаревает ))), ну а если вам оно не подходит, то в предыдущих конкурсах, да уже и в этом, есть пара статей как работать с базами данных типа MySQL.

Сразу вам пример таблички, чтобы вы могли посмотреть в живую. ПРИМЕР ТАБЛИЦИ
Скачайте шаблон прикрепленный к этой статье и просто его запустите, увидите как меняются данные.

Ну расскажу как сделать себе такой же отчет.

Перво наперво нам понадобится сама гугло табличка, можете скопировать пример, можете создать новую (я уверен, что все читатели уже умеют создавать гугло таблички и у всех есть гуглоАКК, да не один :D)

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



Далее в самой форме нужно создать нужное вам количество текстовых полей, смотрите картинку:


Тут нужно отметить, как вы назовёте поля при создании так они и будут у вас называться в таблице. Каждая привязанная форма в таблице создает отдельный лист "Ответы на форму", я их обычно переименовываю в "ЛОГ", чисто для красивости.

Как только ваша форма будет готова, вам нужно будет нажать кнопку "Просмотр" - это газ на верху справа. И скопировать полный УРЛ адрес вашей формы.

Этот УРЛ нужно будет указать в настройках шаблона, и вы получите лог файл работы шаблона, который доступен с любого устройства в любом месте, где бы вы не находились :-).

А что нужно писать в шаблоне? Спросите вы! Вот вам два куска кода (в приложенном шаблоне они оба находятся в одном C# сниппете)

1. Первая часть кода делает ГЕТ запрос на вашу форму и разбирает ответ для составления следующего запроса:

C#:
 string GASurlForm = project.Variables["GASurlForm"].Value; // возмем полный урл формы из настроек
string proxy = project.Variables["proxy"].Value; // возмем прокси из проекта, прокси может быть и пустой )))
string[] heders = {};// тут можно прописать заголовки которые отправляются при запросе, в данном конкретном случае можно обойтись без них.
// получим тело формы, что бы его разобрать, и сформировать тело пост запроса на эту форму
// данное действие позволяет отправлять данные на любую гуглоформу без редактирования кода шаблона ну и поиска нужных соотвествий в форме. Автоматизация епта!
if (GASurlForm !=""){//обязательно проверим, есть ли ссылка на форму, а то мало ли че :)
    string response = ZennoPoster.HttpGet(GASurlForm,proxy,"UTF-8",InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,30000,"","",true,3, heders ,"",true);
    // начинается магия, разбираем полученую форму на кусочки
    string GASurlPostForm = Regex.Match(response,"(?<=action=\")htt.*?(?=\")").ToString();//тут получаем УРЛ для пост запроса
    //теперь получим поля формы
    List<string> list = new List<string>(); // тут создадим лист в который потом запихаем наши поля entry которые нужны для отправки запроса
    list.AddRange(Regex.Matches(response,@"(?<=name="")entry\..*?(?="")").Cast<Match>().Select(x=>x.Value).ToList()); // данная строчка добовляет в наш список, то что нашли регуляркой
    //ну вот , все что нам нада получили теперь готовим пост запрос.
2. Теперь мы подготовим данные которые нужно отправить в таблицу, и отправим их:

C#:
 /*а можно по другому*/
    List<string> listdata = new List<string>();
    /*это тестовые данные для примера*/
    listdata.Add(project.Profile.Login);
    listdata.Add(project.Profile.Password);
    listdata.Add(project.Variables["proxy"].Value);
    listdata.Add("ЗАДАНИЕ "+ new Random().Next(1,5).ToString());
    listdata.Add(new Random().Next(0,3).ToString());
    listdata.Add(project.Variables["projectName"].Value);
    listdata.Add(project.Variables["prtName"].Value);
    /*конец тестовым данным*/

    int[] b = {list.Count,listdata.Count};//создаем масив чисел чтобы выбрать минимальное b.Min();

    string data = "";
    if (list.Count>0){//если в форме есть поля для заполнения делаем
        for(int i=0; i< b.Min(); i++){
            //b.Min() берем то самое минимальное значение данных которое отправляем в гугл, если
            //в форме не будет хватать полей то заполним только то что имеем
            //в этом цикле мы проверяем чтобы у формы были поля и чтобы не добавить лишних данных
            //А так же кодируем в урленкодинг данные, потому что гугл капризный ска
            data += list[i]+"="+HttpUtility.UrlEncode(listdata[i])+"&";
  
        }
        data = data.Substring(0,data.Length-1);//убрать последний знак &
        response = ZennoPoster.HttpPost(GASurlPostForm,data,"application/x-www-form-urlencoded",proxy,"UTF-8",InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,30000,"","",true,3,heders,"",true);
    }

    //все, данные отправили. По идеи после каждого запроса нужно проверять ответ, на удачное выполнение действия. Но исходя из моей практики в конкретном месте такой необходимости нет.
    //я еще записываю отчет в лог .csv фаил и делаю это вот так
    Macros.FileSystem.FileAppendString(project.Variables["projectDir"].Value+@"\"+project.Variables["data"].Value+"отчет.csv",string.Join(";",listdata), true);
    //project.Variables["projectDir"].Value+@"\"+project.Variables["data"].Value+"отчет.csv" - это мы составили путь к файлу отчета,
    //string.Join(";",listdata) - это мы обеденили все элементы списка listdata в одну строку и разделили знаком ";",
    //true - сказали что нужно добавить перенос строки в фаил
}
Как я говорил ранее, я записываю отчет локально и работаю с гугл таблицами, и в последнем примере кода, видно как одной строкой записать данные в локальный отчет.

Подбираемся к самому концу! Собирайте ЛОГИ ошибок!

Об этом уже писали в предыдущих конкурсах, но у меня свое решение, которое позволяет отслеживать ошибки работы шаблона в режиме реального времени. Догадайтесь где я собираю лог ошибок в шаблонах? ..... Правильно в гугл таблице, для примера я не стал делать отдельную табличку, так что вы можете посмотреть на соседних листах как я собираю ошибки. Ну а сниппет вот:
C#:
 string GASurlForm = @"https://docs.google.com/forms/d/e/1FAIpQLSeBqnQgdDWflIhhurO-PZws_jxJNryQyWVMYfhZOsoHuYTXEQ/viewform"; // возмем полный урл формы для записи ошибок
string proxy = ""; // возмем прокси из проекта, прокси может быть и пустой )))
string[] heders = {};// тут можно прописать заголовки которые отправляются при запросе, в данном конкретном случае можно обойтись без них.
// получим тело формы, что бы его разобрать, и сформировать тело пост запроса на эту форму
// данное действие позволяет отправлять данные на любую гуглоформу без редактирования кода шаблона ну и поиска нужных соотвествий в форме. Автоматизация епта!
if (GASurlForm !=""){//обязательно проверим, есть ли ссылка на форму, а то мало ли че :)
    string response = ZennoPoster.HttpGet(GASurlForm,proxy,"UTF-8",InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,30000,"","",true,3, heders ,"",true);
    // начинается магия, разбираем полученую форму на кусочки
    string GASurlPostForm = Regex.Match(response,"(?<=action=\")htt.*?(?=\")").ToString();//тут получаем УРЛ для пост запроса
    //теперь получим поля формы
    List<string> list = new List<string>(); // тут создадим лист в который потом запихаем наши поля entry которые нужны для отправки запроса
    list.AddRange(Regex.Matches(response,@"(?<=name="")entry\..*?(?="")").Cast<Match>().Select(x=>x.Value).ToList()); // данная строчка добовляет в наш список, то что нашли регуляркой
    //ну вот , все что нам нада получили теперь готовим пост запрос.
    //укажим случайные данные дляотправки в ГУГЛ форму, вот вам та как раз и нужно тут указать те переменные проекта которые вы хотите отправить в гугл.


    List<string> listdata = new List<string>();
    listdata.Add(project.GetLastError().ActionId+new Random().Next(0,4).ToString());
    listdata.Add(project.Variables["prtName"].Value+new Random().Next(0,2).ToString());

    int[] b = {list.Count,listdata.Count};//создаем масив чисел чтобы выбрать минимальное b.Min();

    string data = "";
    if (list.Count>0){//если в форме есть поля для заполнения делаем
        for(int i=0; i< b.Min(); i++){ // b.Min() берем то самое минимальное значение данных которое отправляем в гугл, если в форме не будет хватать полей то заполним только то что имеем
            //в этом цикле мы проверяем чтобы у формы были поля и чтобы не добавить лишних данных
            //А так же кодируем в урленкодинг данные, потому что гугл капризный ска
            data += list[i]+"="+HttpUtility.UrlEncode(listdata[i])+"&";
   
        }
        data = data.Substring(0,data.Length-1);//убрать последний знак &
        response = ZennoPoster.HttpPost(GASurlPostForm,data,"application/x-www-form-urlencoded",proxy,"UTF-8",InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,30000,"","",true,3,heders,"",true);
    }

    //все, данные отправили. По идеи после каждого запроса нужно проверять ответ, на удачное выполнение действия. Но исходя из моей практики в конкретном месте такой необходимости нет.
}
Делаем новую табличку, привязываем форму, копируем УРЛ, вставляем в сниппет.

Я почти закончил, осталось рассказать как делать красивые отчеты.

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

Что мы имеем в итоге?

Ребятки, у меня реально не хватает времени на личные дела, даже сейчас, потому что, освободившееся время я направляю на новые теории эксперименты и т.п. Все те вопросы которые я задавал в начале топика, возникают у каждого кто работает в СММ арбитраже, или иных онлайн сферах. Используя знания и шаблон из этой статьи вы снимите с себя как минимум 50% гемороя, это мое ИМХО.

ПС: Диман держи алаверды: Как раз Димка Юниор, в свое время заставил меня купить ЗеноСтандарт, чтобы продать ему, точнее его конторе Шаблон по Постингу на АВИТО. Диман СПАСИБ!

ППС: Говорил что палить темы не буду, но сам спалился, править топик уже не буду, самые внимательные поймут. Остальные лесом.

ПППС: За ошибки прошу простить, у меня всегда были проблемы с русским языком.
 
Тема статьи
Другое
Номер конкурса статей
Шестой конкурс статей

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

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

Последнее редактирование:

Nord

Client
Регистрация
22.03.2012
Сообщения
2 408
Благодарностей
1 474
Баллы
113
Теперь не только разрабы следят за нами, а еще и шаблонопесцы):D
 
  • Спасибо
Реакции: Geograph, GHU и Sanekk

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63
походу не только гугл следит за нами...
p\s Nord,походу во время прочтения статьи не только у нас мысли совпали)))не видел твоего поста...
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
Да не переживайте вы, собирать и анализировать данные о работе софта придумал еще мелкософт ...... :D
 

DenisK

Client
Регистрация
28.06.2016
Сообщения
591
Благодарностей
289
Баллы
63

Creaman

Client
Регистрация
11.07.2014
Сообщения
21
Благодарностей
5
Баллы
3
Это топчег пацаны, лайк, подписка, аффтор пеши исчо!
 

Semyon

Client
Регистрация
19.09.2016
Сообщения
43
Благодарностей
36
Баллы
18
Вау, не только C# который изучаю обогатил, так еще тема которая очень волнует, аналитика того как работает. А еще особо порадовало, что поделился тем как именно организовываешь данные, для аналитики. Спасибо большое за статью =))
 
  • Спасибо
Реакции: ZHAG

Webimbo

Client
Регистрация
03.06.2014
Сообщения
77
Благодарностей
5
Баллы
8
Тема топ, автору плюс в карму, многим очень интересна и полезна данная статья будет!)
 

GoodX

Client
Регистрация
20.03.2016
Сообщения
270
Благодарностей
102
Баллы
43

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43

teodocomo

Client
Регистрация
28.09.2016
Сообщения
7
Благодарностей
5
Баллы
3
Голосую за тему, однозначно зачот:-) Спасибо автору и респект!!!
 
  • Спасибо
Реакции: ZHAG

hostcredit

Client
Регистрация
03.05.2015
Сообщения
167
Благодарностей
32
Баллы
28
Отличный материал, автору жирный+, вот только для законченности не хватает статы с 300 000 посетителей :-) Ну и конечно скрытый маркетинг сыграл свою роль, ссылку на сайт в студию :-) В рекламе теперь вас никто не обвинит - читатель сам просит:-)
 

Semyon

Client
Регистрация
19.09.2016
Сообщения
43
Благодарностей
36
Баллы
18
Голосую за тему, однозначно зачот:-) Спасибо автору и респект!!!
Отличный призыв к действию =)) Только вот, автор уже и так очень хорошо выжимает соки из своих работ=))) Надо было ему такой призыв в конец статьи добавить, а то она такая классная и для людей, а момент выжимки соков пропустил. :ah:

p.s. Еще раз спасибо за статью автору! Пойду делать свои проектики, с учетом всех этих знаний. Не ну реально, отслеживать как работает твое приложение(скрипт и так далее), как им пользуются и отлавливать ошибки, крутая вещь, сейчас делаю как раз проект и об этом не думал.

p.p.s. Вообще все статьи как для меня, мне как раз сейчас нужно взаимодействие с БД, организовать работу с ней, отслеживать и отлаживать... а так же кучу прокси для автоматизации ручного ввода на небольшой кучке деревянных сайтов. =) Что не статья то радость.


Решил объединить с этим =)) чтоб посты не плодить.

Это ведь получается что мы можем брать кусок кода из таблицы или БД, средствами C# и вставлять в наш код на исполнение? И тем самым создадим "самообновляющийся" скрипт, стоит автору поправить и у всех он будет поправлен.. так выходит? Или я что-то не правильно понимаю? (не я сейчас не про уязвимость, по типу если кто-то левый получит доступ то через это, он может всех пользователей скрипта использовать ради своих целей, а именно про возможность)
 
Последнее редактирование:
  • Спасибо
Реакции: ZHAG

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
Отличный материал, автору жирный+, вот только для законченности не хватает статы с 300 000 посетителей :-) Ну и конечно скрытый маркетинг сыграл свою роль, ссылку на сайт в студию :-) В рекламе теперь вас никто не обвинит - читатель сам просит:-)
Я же написал откуда взялись 300к посетителей :-)

Как все это работает?

Счетчики мониторят с каких УРЛ заходят на ваш сайт, а вы в шаблоне открываете ТАБ с УРЛ содержащим метку from. Ну и, в итоге, посмотрев отчет по меткам вы получите реальную статистику работы своих шаблонов. Я думаю, вы будете удивлены )))))). Если вам необходимо собирать более детальную статистику, то можно использовать УТМ метки :-)

Вот вам и 300к ботов на ваш сайт
Ну вот дополнительно скрин статы )))))))))))))))

 

Вложения

hostcredit

Client
Регистрация
03.05.2015
Сообщения
167
Благодарностей
32
Баллы
28
Я же написал откуда взялись 300к посетителей :-)
Про "самообразовавшихся" в итоге получения статы ботов я понял:-) А можно ссылку на сайт, хотя бы в личку? Интересно посмотреть. Спасибо!
 

Semyon

Client
Регистрация
19.09.2016
Сообщения
43
Благодарностей
36
Баллы
18
Я же написал откуда взялись 300к посетителей :-)



Ну вот дополнительно скрин статы )))))))))))))))

У меня вот вопрос, получается "Время на сайте" - это среднее время на выполнение одного задания одним потоком? Т.е. вкладка закрывается в конце посещения? Получается так можно отслеживать и время выполнения?
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
  • Спасибо
Реакции: Semyon

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
Про "самообразовавшихся" в итоге получения статы ботов я понял:-) А можно ссылку на сайт, хотя бы в личку? Интересно посмотреть. Спасибо!
На сайте напиасано, "Счетчик запусков" и более ни чего нет, а надпись только для того чтоб клиенты понимали зачем открывается бровсер, если я говорю что шаблон работает без открытия оного )))
 

Semyon

Client
Регистрация
19.09.2016
Сообщения
43
Благодарностей
36
Баллы
18
фточечку

таб закрывается по завершении работы одного выполнения
Все таки какая шикарная реализация и как много вещей можно отслеживать. Хоть я и не делал ничего "для других", но даже запуская для себя иметь возможность анализировать эти данные, просто красота какая-то... спасибо!

Я даже уже себе представил отчет такого плана -
@имя-проекта
@аккаунт-выполнения
@прайс для загрузки
@количество выполненных операций
@время выполнения

Так как сейчас реализую привязку к одному аккаунту через бд - 5 и более прайсов различных товаров(в каждом штук по 150 наименований), которые потом надо выгружать на сайты в которые надо вводить это по идее руками - а в данном случае меня и спасает Zennoposter

Ушел все это делать... :-)
 
Последнее редактирование:
  • Спасибо
Реакции: ZHAG

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
Решил объединить с этим =)) чтоб посты не плодить.

Это ведь получается что мы можем брать кусок кода из таблицы или БД, средствами C# и вставлять в наш код на исполнение? И тем самым создадим "самообновляющийся" скрипт, стоит автору поправить и у всех он будет поправлен.. так выходит? Или я что-то не правильно понимаю? (не я сейчас не про уязвимость, по типу если кто-то левый получит доступ то через это, он может всех пользователей скрипта использовать ради своих целей, а именно про возможность)
Нет, свои скрипты экшен C# не возможно подгружать на исполнение. Эту задачу можно решить через "общий код", если указать путь к файлу для загрузки при старте шаблона. Но я так не пробовал, только предположение.
А если автоматом хотите обновлять свои шаблоны у клиентов, то пользуйтесь разделом "боты" в личном кабинете зенолаба.
 

Semyon

Client
Регистрация
19.09.2016
Сообщения
43
Благодарностей
36
Баллы
18
Нет, свои скрипты экшен C# не возможно подгружать на исполнение. Эту задачу можно решить через "общий код", если указать путь к файлу для загрузки при старте шаблона. Но я так не пробовал, только предположение.
А если автоматом хотите обновлять свои шаблоны у клиентов, то пользуйтесь разделом "боты" в личном кабинете зенолаба.
Понял =) не я до этого еще не дорос. Я пока сам себе клиент и такого функционала не требуется, это я так на будущее пытаюсь понять. Но по сути, что нам мешает взять подгрузить переменную из db , в которой будет уже код на выполнение? А потом его просто в снипете объявить...
 

EccoArts

Client
Регистрация
07.04.2016
Сообщения
23
Благодарностей
9
Баллы
3
А вы разве не видели пакеты которые отправляет ZP разработчикам зены :-) ?
Сейчас ВСЕ следят за ВСЕМИ! :df::bk:8-)
 
  • Спасибо
Реакции: ZHAG и Semyon

AgentRassilok

Известная личность
Регистрация
08.11.2016
Сообщения
1 272
Благодарностей
466
Баллы
83
сильно, киньте сайт с шабами где продаются )
 

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43

AgentRassilok

Известная личность
Регистрация
08.11.2016
Сообщения
1 272
Благодарностей
466
Баллы
83

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
куда дальше развились после шаблонов если не секрет? )
Развиваться нужно в сторону написания приватных шаблонов для себя и своей КОМАНДЫ, и не зацикливаться на оказании услуг по разработке шаблонов.
как понять не те?
Когда ты начинаешь управлять парой десятков ВДС с зенобоксами/постерами и двумя, тремя сотнями шаблонов, тогда ты поймешь что такое ТЕ масштабы.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 794
Благодарностей
2 466
Баллы
113
А зачем запускать браузер?
Только с целью получить время которое было затрачено на выполнение шаблона?

Я когда мне необходимо например подсчитать количество Успехов и количество Ошибок просто отправляю обычный GET запрос с реферером в метрику:
Здесь просто указываю номер счетчика на который нужно отправлять статистику.
Код:
https://mc.yandex.ru/watch/{-Variable.id_metrika-}
Здесь указываю сайт, к которому привязан счетчик + метку, по которой собрался отслеживать.
Код:
http://{-Variable.site-}?from={-Variable.name_shablon-}
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 685
Благодарностей
4 642
Баллы
113
А зачем запускать браузер?
Только с целью получить время которое было затрачено на выполнение шаблона?

Я когда мне необходимо например подсчитать количество Успехов и количество Ошибок просто отправляю обычный GET запрос с реферером в метрику:
Здесь просто указываю номер счетчика на который нужно отправлять статистику.
Код:
https://mc.yandex.ru/watch/{-Variable.id_metrika-}
Здесь указываю сайт, к которому привязан счетчик + метку, по которой собрался отслеживать.
Код:
http://{-Variable.site-}?from={-Variable.name_shablon-}
Меня тоже этот момент смутил. Особенно при упоминании такой схемы в шаблонах на запросах. Увеличить потребление ресурсов в несколько раз из ничего
 
  • Спасибо
Реакции: DenisK

ZHAG

Client
Регистрация
01.05.2014
Сообщения
228
Благодарностей
220
Баллы
43
А зачем запускать браузер?
Только с целью получить время которое было затрачено на выполнение шаблона?
Это решение ко мне пришло в то время когда мои шаблоны тыкали по ХТМЛ элементам в бровсере. :-) С тех пор оно не поменялось.
Ну а сейчас, у меня нет необходимости его использовать, соответственно и модернизировать.
 
  • Спасибо
Реакции: DenisK и Andrew Shell

AgentRassilok

Известная личность
Регистрация
08.11.2016
Сообщения
1 272
Благодарностей
466
Баллы
83
Развиваться нужно в сторону написания приватных шаблонов для себя и своей КОМАНДЫ, и не зацикливаться на оказании услуг по разработке шаблонов.

Когда ты начинаешь управлять парой десятков ВДС с зенобоксами/постерами и двумя, тремя сотнями шаблонов, тогда ты поймешь что такое ТЕ масштабы.
понял тебя спасибо. расширил границы. лайк
 

Кто просматривает тему: (Всего: 5, Пользователи: 0, Гости: 5)