1 место Использование Зеннопостера для социальной сети Pinterest

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Здравствуйте!
Меня зовут Юрий Йосифович, и сегодня я решил показать парочку своих шаблонов для Зеннопостера, которые работают с базой данных MySQL.

Первая часть шаблонов занимается сбором информации с одного интернет магазина с использованием API данного сервиса.

Вторая часть шаблонов занимается генерацией уникальных изображений (методом создания странички html + css с дальнейшим сохранением её скриншота), созданием сокращенных ссылок с использованием API одного из сервисов сокращения ссылок и дальнейшая публикация этих изображений из ссылками в социальную сеть Pinterest.

Шаблоны используют API сервисов pinterest, blogger, dijiseller, plati.io, coinurl.com

Тема заработка не уникальная - способы получения трафика с Пинтереста обсуждались давно уже на форуме SearchEngines. Но вот на нашем форуме ZennoLab я не встречал применения программы Зеннопостер для данной социальной сети.

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

 

Вложения

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

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

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

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Достойный труд, Юра! Надо же какое совпадение. Не думал, что кто-то ещё об этой сети создаст видос.
Рекомендую вместо RU поработать на EN и ещё Пинтерест легко палит всякие редиректы, нужно хитрее работать.
Ну и уникализация не помогает особо.
 

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43
За что аккаунт забанили?
 
  • Спасибо
Реакции: BAZAg

White trash

Client
Регистрация
09.06.2014
Сообщения
829
Благодарностей
362
Баллы
63
За что аккаунт забанили?
Правильнее спросить - почему только через три недели забанили? Наверно чухнули что пол миллиона пинов с одного аккаунта это многовато.
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Достойный труд, Юра! Надо же какое совпадение. Не думал, что кто-то ещё об этой сети создаст видос.
Рекомендую вместо RU поработать на EN и ещё Пинтерест легко палит всякие редиректы, нужно хитрее работать.
Ну и уникализация не помогает особо.
Благодарю!
К сожалению не умею я работать с социальными сетями - для меня это слишком сложно.
Данную пачку шаблонов я писал только для того, чтобы проверить смогу я реализовать такой процесс или нет.
А после того как все получилось я потерял интерес...

За что аккаунт забанили?
Причина описана примерно так:
бан аккаунта.png

При попытке подать аппеляцию:
бан_не_розбан.png


Впрочем, видимо не особо понравилось им, что было создано более 500 000 пинов которые вели на товары да еще и с сокращенными ссылками :-)

Правильнее спросить - почему только через три недели забанили? Наверно чухнули что пол миллиона пинов с одного аккаунта это многовато.
Я где-то читал, что аккаунты блокируют раньше, до 100 000 пинов.
Если бы я тогда остановился - возможно бан бы не получил.
С другой стороны мне было интересно сколько же действительно пинов нужно забросить чтобы получить бан :-)

Почему не банили раньше - этого я не знаю - видимо никто не жаловался на ПИНы до этого времени.
Впрочем, опыт получен - можно теперь создавать кворк типа - создам 1000 ссылок на ваш сайт или видео на ютубе с Пинтереста за 500 рублей :-)
 

kagorec

Client
Регистрация
24.08.2013
Сообщения
979
Благодарностей
523
Баллы
93
Насыщенное видео, приятно воспринимается, позитивно.
 
  • Спасибо
Реакции: BAZAg

AgentRassilok

Известная личность
Регистрация
08.11.2016
Сообщения
1 272
Благодарностей
466
Баллы
83
слушай Юра )) у меня так и крутится на языке - Юрий будет Вдудь Вдудь будет Юрий )) это относительно твоих проектов в хорошем смысле)):DDDD
 
  • Спасибо
Реакции: BAZAg

Gor

Client
Регистрация
30.09.2016
Сообщения
248
Благодарностей
30
Баллы
28
За шаблоны спасибо!
"Не уверен что кто-то пожелает повторить мой подвиг - но, мне кажется что данный материал может послужить хорошим обучающим материалом."
Я хотел бы повторить )) Если создавать аккаунт на Пинтересте, с которого можно напостить 100 000 - 500 000 пинов, которые будут искаться поисковиками после удаления акка, думаю хорошая перспектива, разве нет? Если профит в месяц будет пусть даже 50 долл./мес (после удаления эти пины будут продолжать приносить деньги, как я понял) и это все можно масштабировать. Какие минусы я не учел?
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
За шаблоны спасибо!
"Не уверен что кто-то пожелает повторить мой подвиг - но, мне кажется что данный материал может послужить хорошим обучающим материалом."
Я хотел бы повторить )) Если создавать аккаунт на Пинтересте, с которого можно напостить 100 000 - 500 000 пинов, которые будут искаться поисковиками после удаления акка, думаю хорошая перспектива, разве нет? Если профит в месяц будет пусть даже 50 долл./мес (после удаления эти пины будут продолжать приносить деньги, как я понял) и это все можно масштабировать. Какие минусы я не учел?
Введите в гугле Юрий Йосифович, перейдите в картинки и посмотрите ПИНы - аккаунта уже давненько нет, а ПИНы - есть.
Проблема в том, что перейти с этого пина по ссылке не получится - когда аккаунт заблокирован - то ПИНы удаляются (либо доступ к ним блокируется).

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

Вот только как это реализовать на пост/гет запросах, если даже регистрацию на данном сервисе на запросах мне сделать пока не получилось...

Собственно принцип работы с видео - это автоматизация процесса, который примерно описан тут: http://blog.admitad.com/?p=9139 тут https://searchengines.guru/showthread.php?t=958573
Также если бы я сейчас работал на этом сайте, то возможно работал бы по другому - я бы создавал к примеру 10 досок, в каждую забрасывал бы по 10 пинов и так тянул бы 1000 аккаунтов (аккаунты с маленьким количеством пинов думаю не будут на себя обращать столько внимания, как аккаунты с большим количеством похожих картинок).
Потом пересохранял бы пины в другие аккаунты (чтобы они сохранились в случае удаления аккаунта).
И также с каждого аккаунта занимался бы лайкингом пинов других людей по подобной теме - чтобы обратить внимание на аккаунты других живих пользователей (им уведомления приходит когда лайкают их ПИНы).

Также вместо сокращенных ссылок использовал бы например http://www.cpatracker.ru чтобы в случае изменения ссылки на товар была возможность перенаправить трафик.
 
  • Спасибо
Реакции: VERSAL, Nike59 и sydoow

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
198
Баллы
43
Юра молодец , постарался. насчет трекера правильно но он тяжелый гад постоянно растет старый кеш на нем , возьми бесплатную zTDS.
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Юра молодец , постарался. насчет трекера правильно но он тяжелый гад постоянно растет старый кеш на нем , возьми бесплатную zTDS.
Спасибо! Будет время - поищу инструкции как установить и использовать zTDS.
Пока еще я упорно в этом направлении не работаю - сокращенных ссылок для проведения опытов пока достаточно.
 

chazer24

Активный пользователь
Регистрация
26.03.2016
Сообщения
271
Благодарностей
49
Баллы
28
Открою секрет, с пинтерест так же можно получать пассивный трафик, при этом не обязательно делать тысячи пинов и репинов. Тестил пол года назад, сделал около 30 аков, живет до сих пор около 10, на каждом по 10-15 пинов, до сих пор что то капает, кстати в последние дни всё лучше)) Ну и конечно есть свои фишки, о которых вам ни кто не расскажет) всё методом проб и ошибок.

 
  • Спасибо
Реакции: kagorec, Platon и BAZAg

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43

chazer24

Активный пользователь
Регистрация
26.03.2016
Сообщения
271
Благодарностей
49
Баллы
28

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
198
Баллы
43

Valiksim

Client
Регистрация
14.04.2012
Сообщения
1 344
Благодарностей
298
Баллы
83
Юра, как всегда, отличная работа, спасибо! Голосую!!!
В шабах отсутствует 005_ - это так было задумано или пропущено?
поделитесь тайной панельки )
Стояла она на панели...
Будет время - поищу инструкции как установить и использовать zTDS.
Нужно его скачать, там есть все инструкции.ю Кроме всего, автор всегда готов помочь
 
  • Спасибо
Реакции: BAZAg

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43
Как вы картинки генерировали?
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Юра, как всегда, отличная работа, спасибо! Голосую!!!
В шабах отсутствует 005_ - это так было задумано или пропущено?
Спасибо!
Сначала я писал шаблоны которые работали уже с готовой базой данных.
Потом пришла мысль доделать шаблон который будет создавать таблицы в базе данных.
Он был под номером 005, но переименовал я для того, чтобы все шаблоны были в той последовательности, в которой их нужно запускать.
И на его место я должен был сделать шаблон регистратор аккаунтов на Пинтересте - на запросах мне это сделать не получилось, а браузерная версия меня не особо интересует (проще тогда уже покупать готовые аккаунты).

Также с коробки шаблоны могут не запуститься потому, что обычно у всех порт соединения с базой данных 3306.
Но у меня интернет провайдер по какой-то причине заблокировал его - пришлось поднимать базу данных на другом порту - из-за чего в шаблонах указан порт 82.

Как вы картинки генерировали?
Скачайте в шапке темы шаблон 007 и выполните его в проджект мейкере - там будет видно весь процесс.
Также можно в сниппете поставить точку останова и пройти по шагам.
Схема работы следующая - на вход подается заголовок, цена, изображение товара.
Дальше шаблон формирует html код, расставив эти переменные в данном коде.
После чего этот код добавляется на страничку активной вкладки браузера.
Дальше делается скриншот этого изображения.
После чего изображение переводится в base64 - и уже в таком виде другой шаблон делал отправку в Пинтерест.
 

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43
Скачайте в шапке темы шаблон 007 и выполните его в проджект мейкере - там будет видно весь процесс.
Также можно в сниппете поставить точку останова и пройти по шагам.
Схема работы следующая - на вход подается заголовок, цена, изображение товара.
Дальше шаблон формирует html код, расставив эти переменные в данном коде.
После чего этот код добавляется на страничку активной вкладки браузера.
Дальше делается скриншот этого изображения.
После чего изображение переводится в base64 - и уже в таком виде другой шаблон делал отправку в Пинтерест.
Гениально) Я думал все проделано на C# Спасибо
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Гениально) Я думал все проделано на C# Спасибо
Данный шаблон - один сниппет C#
Вот так он выглядит:
C#:
string title = project.Variables["text_centr_left"].Value;
string url_logo = project.Variables["url_logo_center_top"].Value;
string url_product = project.Variables["url_product_center_center"].Value;
string title_one=project.Variables["text_top_center"].Value;
string title_two=project.Variables["text_center_center"].Value;
string title_category=project.Variables["text_center_bottom"].Value;
string price=project.Variables["text_bottom_left"].Value;
string currency=project.Variables["text_bottom_right"].Value;
string base64_product_temp=project.Variables["temp_img"].Value;
string code_html = String.Empty;
string base64_logo = String.Empty;
string base64_product = String.Empty;
var font = new List<string>();
var rand = new Random();


#region Шрифты
font.Add("font-family: 'Roboto', sans-serif;");
font.Add("font-family: 'Open Sans', sans-serif;");
font.Add("font-family: 'Roboto Condensed', sans-serif;");
font.Add("font-family: 'Oswald', sans-serif;");
font.Add("font-family: 'PT Sans', sans-serif;");
font.Add("font-family: 'Merriweather', serif;");
font.Add("font-family: 'Roboto Slab', serif;");
font.Add("font-family: 'Lora', serif;");
font.Add("font-family: 'Ubuntu', sans-serif;");
font.Add("font-family: 'Playfair Display', serif;");
font.Add("font-family: 'Arimo', sans-serif;");
font.Add("font-family: 'PT Serif', serif;");
font.Add("font-family: 'Noto Sans', sans-serif;");
font.Add("font-family: 'Noto Serif', serif;");
font.Add("font-family: 'Yanone Kaffeesatz', sans-serif;");
font.Add("font-family: 'Fira Sans', sans-serif;");
font.Add("font-family: 'Roboto Mono', monospace;");
font.Add("font-family: 'Exo 2', sans-serif;");
font.Add("font-family: 'Rubik', sans-serif;");
font.Add("font-family: 'Cuprum', sans-serif;");
font.Add("font-family: 'Cormorant Garamond', serif;");
font.Add("font-family: 'Istok Web', sans-serif;");
font.Add("font-family: 'Philosopher', sans-serif;");
font.Add("font-family: 'Playfair Display SC', serif;");
font.Add("font-family: 'Tinos', serif;");
font.Add("font-family: 'Jura', sans-serif;");
font.Add("font-family: 'Scada', sans-serif;");
font.Add("font-family: 'Arsenal', sans-serif;");
font.Add("font-family: 'Cousine', monospace;");
font.Add("font-family: 'Fira Sans Condensed', sans-serif;");
font.Add("font-family: 'Fira Sans Extra Condensed', sans-serif;");
font.Add("font-family: 'Ubuntu Mono', monospace;");
font.Add("font-family: 'Anonymous Pro', monospace;");
font.Add("font-family: 'Cormorant', serif;");
font.Add("font-family: 'Podkova', serif;");
font.Add("font-family: 'Cormorant Infant', serif;");
font.Add("font-family: 'Cormorant SC', serif;");
font.Add("font-family: 'Cormorant Unicase', serif;");
font.Add("font-family: 'El Messiri', sans-serif;");

font.Shuffle();
#endregion

title = Regex.Replace(title.Trim(), @"(\s+|\s)", " ");
base64_logo = CommonCode.base64_img(url_logo);
base64_product = CommonCode.base64_img(url_product);
string base64_fon = CommonCode.base64_img(@"http://bgrepeat.com/load-new.php?p=128-"+rand.Next(0,218).ToString());
base64_fon="data:image/jpg;base64,"+base64_fon;
string base64_body = CommonCode.base64_img(@"http://bgrepeat.com/load-new.php?p=128-"+rand.Next(0,218).ToString());
base64_body="data:image/jpg;base64,"+base64_body;

if (string.IsNullOrEmpty(base64_logo)) {
    base64_logo=String.Empty;}
else {
    base64_logo = @"<span style=""display:block; background: white; width:100%;"" ><img class=""logo"" src=""data:image/jpg;base64,"+base64_logo+@""" /></span>";
}

if (string.IsNullOrEmpty(base64_product)) {
    base64_product=String.Empty;
    base64_product = CommonCode.base64_img(base64_product_temp);
    if (string.IsNullOrEmpty(base64_product)) {
        base64_product=String.Empty;}
        else {
            base64_product = @"<img class=""product"" style=""transform: rotate("+rand.Next(rand.Next(-25, 1), rand.Next(1, 25)).ToString()+@"""deg); src=""data:image/jpg;base64,"+base64_product+@""" alt="""" />";
        }
}
else {
    base64_product = @"<img class=""product"" style=""border: 5px solid rgba(0,0,0,0.5); box-shadow: -5px 5px -20px rgba(0,0,0,0.5);""src=""data:image/jpg;base64,"+base64_product+@""" alt="""" />";
}


if (string.IsNullOrEmpty(title_one)||title_one=="0")  {
    title_one = String.Empty;
} else {
    title_one = @"<div class=""title"">"+title_one.ToUpper()+"</div>";
}

if (string.IsNullOrEmpty(title_two)||title_two=="0")  {
    title_two = String.Empty;
} else {
    title_two = @"<div class=""title"">"+title_two.ToUpper()+"</div>";
}

if (string.IsNullOrEmpty(title_category)||title_category.ToUpper()=="0") {
    title_category = String.Empty; }
else {
    title_category = @"<div class=""title"">"+title_category.ToUpper()+"</div>";
}
string prices = @"<span style=""display:block; background: Yellow; width:95%; padding:10px; box-shadow: -15px 15px -30px rgba(0,0,0,0.5); border-radius: 0px 100px 100px 0px; z-index:1"">"+price.ToUpper()+" "+currency+"</span>";

string font_head=@"<link href=""https://fonts.googleapis.com/css?family=Roboto|Open+Sans|Roboto+Condensed|Oswald|PT+Sans|Merriweather|Roboto+Slab|Lora|Ubuntu|Playfair+Display|Arimo|PT+Serif|Noto+Sans|Noto+Serif|Yanone+Kaffeesatz|Fira+Sans|Roboto+Mono|Exo+2|Rubik|Cuprum|Cormorant+Garamond|Istok+Web|Philosopher|Playfair+Display+SC|Tinos|Jura|Scada|Arsenal|Cousine|Fira+Sans+Condensed|Fira+Sans+Extra+Condensed|Ubuntu+Mono|Anonymous+Pro|Cormorant|Podkova|Cormorant+Infant|Cormorant+SC|Cormorant+Unicase|El+Messiri|"" rel=""stylesheet"">";
code_html = @"<html><head>"+font_head+"<style>body { background-image:url("+base64_body+@");background-repeat:repeat; } #captcha{ width:735px; height:1102px;} .logo {display:block; height:80px; margin:0 auto; } .body {margin:10px auto; width:735px;    height:1102px; }.title {text-align: center; color: white; font-weight: 900; font-size: 35pt;"+font[rand.Next(0, font.Count)].ToString()+"}.center {background:radial-gradient(circle farthest-side at 50px 20px, #FF6412, #E3440A); width:735px;    height:75%; border-radius: 0 0 100% 0; border-bottom: 10px solid black;    border-right: 10px solid black; position: relative;}.left{float:left; position: relative; padding: 30px 30px 30px 30px; top: 0; width: 450px; padding: 20px; font-size: 45pt; color: white; "+font[rand.Next(0, font.Count)].ToString()+"}.right{position: relative; float:right; margin-right:0px 0px 0px 0px; width:100%; top:-20%; text-align:center; color:green; padding:10px; font-size: 5em;"+font[rand.Next(0, font.Count)].ToString()+" font-weight: 900; }.product {    display:block;     position:relative;     float:left;     width:400px; top:-25%;     left:40%; border-radius: 10px 100px 0px 100px; transform: rotate(-15deg); z-index:2; margin-top:10px; margin-bottom:10px; }</style></head>"
    +@"<body><div id=""captcha""><div class=""body"" id=""layer2"">"+base64_logo+@"<div class=""center"">"+title_one + title_two + title_category + @"<div class=""left"">"+title+"</div></div>"+base64_product+@"<div class=""right"">"+prices+"</div></div><div></body></html>";

Tab tabs = instance.ActiveTab;
if (tabs.IsBusy) tabs.WaitDownloading();
tabs.SetSourceText(code_html);
System.Threading.Thread.Sleep(3000);
string temp_file = project.Directory + rand.Next(0,999).ToString() + rand.Next(50,700).ToString() + ".jpg";
//project.SendInfoToLog("Идем дальше", true);
HtmlElement img = instance.GetTabByAddress("page").FindElementById("captcha");
string recognition = ZennoPoster.CaptchaRecognition("CaptchaSaver.dll", img.DrawToBitmap(false), temp_file);

byte[] imageArray = System.IO.File.ReadAllBytes(@temp_file);
string base64ImageRepresentation = Convert.ToBase64String(imageArray);

long size = new System.IO.FileInfo(@temp_file).Length;
if(size>0) System.IO.File.Delete(@temp_file);
return base64ImageRepresentation;
Результат:
пины.png

Но без использования браузера данные картинки я создавать не умею (точнее создавать можно было еще придумать как, но я создавал и другой тип картинок, где в подсчетах использовал границы блоков в которых находился текст для определения размера шрифта, который собственно должен был занимать всю ширину изображения - а уже такое на шарпе я сделать не умею - из-за чего остановился на генерации html + css для создания таких картинок).
Вот пример картинок о которых я говорю - где я подставлял фон для каждого слова, изменял угол наклона каждого слова - это и давало уникальность..
В свою очередь такой подход я хотел применить для создания превьюшек для видео на ютуб - но, руки как-то не дошли к этому...
картинка.png
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Вижу один шаблон забыл снять замочек...
Перезалил в данное сообщение.
 

Вложения

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43
@BAZAg Как вы получили токен от пинтереста?
Создал app Взял ID и секретку, после чего получил code.
Формирую ссылку выдает ошибку 405.
"message": "405: Method Not Allowed",
"type": "http"
Код:
https://api.pinterest.com/v1/oauth/token?grant_type=authorization_code&client_id=получил&client_secret=получил&code=получил
 

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43
  • Спасибо
Реакции: BAZAg

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43
Уже все сделано
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
@BAZAg Как вы получили токен от пинтереста?
Создал app Взял ID и секретку, после чего получил code.
Формирую ссылку выдает ошибку 405.
"message": "405: Method Not Allowed",
"type": "http"
Код:
https://api.pinterest.com/v1/oauth/token?grant_type=authorization_code&client_id=получил&client_secret=получил&code=получил
Первым делом кликаем на три полосочки.
Выбираем пунктик Для разработчиков.
На вкладке Apps соглашаемся с правилами.
После чего переходим на вкладку Tools
т1.png


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

inilim

Client
Регистрация
16.09.2017
Сообщения
446
Благодарностей
170
Баллы
43
Мне везет я наткнулся на это. Собственно метод как в ВК
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 787
Благодарностей
2 453
Баллы
113
Мне везет я наткнулся на это. Собственно метод как в ВК
Использования этого токена наверно будет более интересным - может с его помощью можно будет лайкать и подписываться...
Хотя, не нашел я этого в документации...
 

Platon

Client
Регистрация
26.09.2015
Сообщения
260
Благодарностей
122
Баллы
43

Вложения

  • 76,3 КБ Просмотры: 980

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