Показаны сообщения с ярлыком VK. Показать все сообщения
Показаны сообщения с ярлыком VK. Показать все сообщения

суббота, 27 октября 2012 г.

[видео] Накрутка показателей популярности в контакте. Накрутка сердечек, опросов, групп, пабликов

Это программа. Её работа полностью автоматизирована. Называется БОТОВОД. Для её использования вам надо будет пожертвовать хотя бы один аккаунт от контакте (только не свой), так как суть работы программы заключается в обмене. То есть вам ставят лайки или наживают на опрос, и соответственно без вашего ведома программа ставит другим.

Почему надо использовать не свой аккаунт: 
  • есть большая вероятность того, что его забанят
  • суть того, что кто-то кому-то отправляет совй логин ит пароль уже вызывает подозрения
Если вы включили накрутку, подождите минут 5-10 и вы увидите явный рост числа того элемента, который хотите накрутить. Также и останавливается программа примерно с таким промежутком запоздания.

Скачиваем ботовод от сюда:
http://viking-studio.com/botovod-vkontakte/

Если вы воспользовались программой, желательно в комментарий написать о ней отзыв, так как подобный софт может вызвать недоверие.

Если кому-то нужны левые аккаунты, могу посоветовать человека, который дешего продаст и очень много. За этим пишите в личку.
http://vk.com/id143185128

Вот видео, где я подробно описываю принцип работы программы и показываю, что она умеет:

среда, 4 июля 2012 г.

C# vk api Загрузка списка друзей

Выкладываю готовый исходник. Это может послужить примером работы библиотеки apicore, которая непосредственно взаимодействует с сайтом vk.com.

Первая часть статьи уже есть на этом блоге, где частично рассматривается работа с сервисом api контакта. ССЫЛКа

Здесь вы увидите пример работы именно с классом FriendsFactory.

Для работы необходимо делать импорт библиотек ApiCore и HttpDownloader.

Скачать их можно тут:
ApiCore.dll   54.0 KB
HttpDownloader.dll   11.5 KB


Исходники проекта лежат здесь:
GetFriends_VKAPI.rar   87.0 KB


Исходники функций:

        //Объявляем переменные
        private SessionInfo sessionInfo;
        private ApiManager manager;
        private bool isLoggedIn = false;
        private List<Friend> friendList;
        private FriendsFactory friendFactory;
        private Regex userIdCheck;

        public Form1()
        {
            InitializeComponent();
        }

        //Авторизация
        private void Reauth()
        {
            if (!this.isLoggedIn)
            {
                SessionManager sm = new SessionManager(1928531, Convert.ToInt32(ApiPerms.Audio | ApiPerms.ExtendedMessages | ApiPerms.ExtendedWall | ApiPerms.Friends | ApiPerms.Offers | ApiPerms.Photos | ApiPerms.Questions | ApiPerms.SendNotify | ApiPerms.SidebarLink | ApiPerms.UserNotes | ApiPerms.UserStatus | ApiPerms.Video | ApiPerms.WallPublisher | ApiPerms.Wiki));
                this.sessionInfo = sm.GetSession(SessionAuthType.WithBrowser);
                if (this.sessionInfo != null)
                {
                    this.isLoggedIn = true;
                }
            }

            if (this.isLoggedIn)
            {
                manager = new ApiManager(this.sessionInfo);
                manager.Timeout = 10000;
                this.listBox1.Enabled = true;
                this.friendFactory = new FriendsFactory(this.manager);
                this.userIdCheck = new Regex("([\\d])+$");
                this.GetFriendList();
            }
        }

        //Загрузка списка друзей и запись данных в виджет listBox
        private void GetFriendList()
        {
            try
            {
                this.listBox1.Items.Clear();
                this.friendList = this.friendFactory.Get(FriendNameCase.Nominative, null, null, null, new string[] { "uid", "first_name", "nickname", "last_name" });
                for (int i = 0; i < this.friendList.Count; i++)
                {
                    this.listBox1.Items.Add(this.friendList[i]);
                }
            }
            catch (Exception e)
            {
                MessageBox.Show("Error loading friend list:\n" + e.Message);
            }
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            //Вызов функций
            this.Reauth();
            this.GetFriendList();
        }

понедельник, 2 июля 2012 г.

C# Авторизация ВКонтакте через http без API, Часть 2, Пошаговая инструкция

Проще всего показать это в видео, желательно смотреть в полном качестве и со звуком.
Подробно рассмотрены все моменты как создавать алгоритм авторизации с нуля.

C# Авторизация ВКонтакте через http без api

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

При работе будет использоваться библиотека HtmlAgilityPack для парсинга Html. Подробнее об этой библиотеке можно прочесть тут.

Авторизация проходит через мобильную версию сайта контакта, так как это проще в реализации.

Вот функция:
        public bool http_auth_vk(string login, string pass)
        {
            //*****************************
            //Получаем action_url
            //*****************************
            System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            System.Net.WebRequest reqGET = System.Net.WebRequest.Create("http://m.vk.com/");
            System.Net.WebResponse resp = reqGET.GetResponse();
            System.IO.Stream stream = resp.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream);
            string s = sr.ReadToEnd();


            //*****************************
            //Парсим
            //*****************************
            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            doc.LoadHtml(s);
            HtmlNode bodyNode = doc.DocumentNode.SelectSingleNode("//div[@class='cont']/form");
            string result1 = bodyNode.Attributes["action"].Value;

            //*****************************
            //POST запрос
            //*****************************
            var cookies = new CookieContainer();
            ServicePointManager.Expect100Continue = false;
            var request = (HttpWebRequest)WebRequest.Create(result1);
            request.CookieContainer = cookies;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            using (var requestStream = request.GetRequestStream())
            using (var writer = new StreamWriter(requestStream))
            {
                writer.Write("email=" + login + "&pass=" + pass);
            }

            using (var responseStream = request.GetResponse().GetResponseStream())
            using (var reader = new StreamReader(responseStream))
            {
                var result = reader.ReadToEnd();

                //*****************************
                //Парсим, поиск ID
                //*****************************                 
                HtmlAgilityPack.HtmlDocument doc2 = new HtmlAgilityPack.HtmlDocument();                
                doc2.LoadHtml(result);
                string result2;
                try
                {                                     
                    
                    HtmlNode bodyNode2 = doc2.DocumentNode.SelectSingleNode("//div[@class='user_wrap']/a");
                    result2 = bodyNode2.Attributes["href"].Value.Substring(3);
                    //Если ID найден, то авторизация удалась
                    return true;
                }
                catch
                {
                    //Если ID не найден, то авторизация не удалась
                    MessageBox.Show("Ошибка авторизации, проверьте правильность введённых данных.\nВозможно там капча.");
                    return false;
                }
            }
        }

Пример использования:

        private void button1_Click(object sender, EventArgs e)
        {
            string login = textBox1.Text;
            string pass = textBox2.Text;
            bool avt = http_auth_vk(login, pass);
            if (avt == true)
            {
                toolStripStatusLabel1.Text = "Авторизовались успешно";

            }
            else {
                toolStripStatusLabel1.Text = "Данные не верны, попробуйте снова";
            }
        }


Необходимо делать импорт библиотек как показано ниже:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using HtmlAgilityPack;

В своей программе я использовал виджет статусной строки statusStrip и после проверки авторизации результат появлялся там.
Вот так выглядит мой вариант:
Вот исходники:
 VK Simple.rar   155 KB
Работа через Http без использования Api может быть нужна только лишь для проверки валидности аккаунта(ов), так как все остальные действия уже делать во много раз сложнее. Разработчики контакта пожизненно борются с ботами, которые работают через http и результат реально виден. Если вы хотите программным путём работать с группами, друзьями, пабликами и тд, то делать это будет логично только используя api.
Как работать с Api контакта рассказано в этой статье.

понедельник, 18 июня 2012 г.

C# работа с VK через API

Для создания приложения, которое при работе контактирует с контактом надо заметить, что есть множество вариантов. Можно импортировать готовую библиотеку vkAPI, или написать свой фрагмент кода, который осуществляет взаимодействие с сайтом vk.com. Написание своего будет разумны, если вы не доверяете создателю библиотеки и предполагаете, что она может иметь среди функций что то вредоносное. Также это можно делать уменьшения размера программы, но разница там в несколько килобайт...

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

Рассмотрим сначала способ без использования библиотек, чтобы понять суть и технологию работы. Делается это при помощи создания окна браузера, где проходит авторизация или проверка на авторизованность аккаунта. Следом сделаем запрос на получение нужных нам данных.

Выглядит это так:


        private Form main_form;
        private string access_token = null;
        private string user_id = null;

        const int AppID = 1;
        const string vkMethodURL = "https://api.vkontakte.ru/method/";

        public string AccessToken
        {
            get { return this.access_token; }
        }
        public string UserID
        {
            get { return this.user_id; }
        }

        public vkAPI(Form main_form)
        {
            this.main_form = main_form;
        }

        public bool isAuthorized()
        {
            if (access_token == null || user_id == null) return false;

            //дописать проверку на время действия access_token, чтобы не посылать всегда лишний запрос

            string profiles = vkMethodURL+"getProfiles?uid=1&access_token=" + access_token;

            System.Net.WebRequest reqGET = System.Net.WebRequest.Create(profiles);
            System.Net.WebResponse resp = reqGET.GetResponse();
            System.IO.Stream stream = resp.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream);
            string s = sr.ReadToEnd();

            JObject o = JObject.Parse(s);
            JObject error = (JObject)o["error"];

            if (error == null) return true;
            else return false;
        }

        public bool Authorize()
        {
            if (isAuthorized()) return true;

            AuthForm authform = new AuthForm();
            WebBrowser browser = (WebBrowser)authform.Controls["webBrowser"];
            browser.Navigated += new WebBrowserNavigatedEventHandler(Authorize_proceed);
            browser.Navigate("http://api.vkontakte.ru/oauth/authorize?client_id="+AppID.ToString()+
                "&scope=photos&redirect_uri="+
                "http://api.vkontakte.ru/blank.html&display=popup&response_type=token&hash=0");
            authform.ShowDialog();

            if (access_token == null || user_id == null)
            {
                MessageBox.Show("Авторизация не пройдена!\r\nДля работы программы вы должны авторизироваться!\r\nЗапрос авторизации появится автоматически.","Внимание!",MessageBoxButtons.OK,MessageBoxIcon.Warning);
                return false;
            }
            else return true;
        }

        private void Authorize_proceed(object sender, WebBrowserNavigatedEventArgs e)
        {
            string[] parts = e.Url.AbsoluteUri.Split('#');
            WebBrowser browser = (WebBrowser)sender;
            AuthForm authform = (AuthForm)browser.Parent;

            if (parts[0] == "http://api.vkontakte.ru/blank.html")
            {
                if (parts[1].Substring(0, 5) == "error") authform.Close();

                else if (parts[1].Substring(0, 12) == "access_token")
                {
                    //MessageBox.Show("Complete!");
                    parts = parts[1].Split('&');

                    access_token = parts[0].Split('=')[1];
                    user_id = parts[2].Split('=')[1];
                    authform.Close();
                }
            }
            else
            {
                parts = e.Url.AbsoluteUri.Split('?');
                if (parts[0] == "http://api.vkontakte.ru/oauth/grant_access")
                    browser.Navigate("http://api.vkontakte.ru/oauth/authorize?client_id=" + AppID.ToString() + "&scope=photos&redirect_uri=http://api.vkontakte.ru/blank.html&display=popup&response_type=token&hash=0");
            }
        }

        //Тестовая функция API
        public string[] GetMyProfile()
        {
            Authorize();

            string profiles = vkMethodURL + "getProfiles?uid=" + user_id + "&fields=photo_medium_rec,sex,bdate,online&access_token=" + access_token;

            System.Net.WebRequest reqGET = System.Net.WebRequest.Create(profiles);
            System.Net.WebResponse resp = reqGET.GetResponse();
            System.IO.Stream stream = resp.GetResponseStream();
            System.IO.StreamReader sr = new System.IO.StreamReader(stream);
            string s = sr.ReadToEnd();
            //MessageBox.Show(s);
            JObject o = JObject.Parse(s);
            JArray response = (JArray)o["response"];

            string[] profile = new string[6];
            profile[0] = (string)response[0]["first_name"];
            profile[1] = (string)response[0]["last_name"];
            //profile[2] = (string)response[0]["sex"];
            if ((int)response[0]["sex"] == 1) profile[2] = "Женский";
            else profile[2] = "Мужской";
            profile[3] = (string)response[0]["photo_medium_rec"];
            profile[4] = (string)response[0]["bdate"];
            if ((int)response[0]["online"] == 1) profile[5] = "онлайн";
            else profile[5] = "не онлайн";

            return profile;
        }


Эти функции можно перенести в отдельный класс и дать ему название vkAPI.
После этого к нашему классу можно обращаться и извлекать полученные данные.
Покажу пример на своей форме:


    public partial class MainForm : Form
    {
         //Объявляем наличие класса
        vkAPI api;

        public MainForm()
        {
            InitializeComponent();
            //Создаём экземпляр класса
            api = new vkAPI(this);
            api.Authorize();
        }

        private void GetProfile_Click(object sender, EventArgs e)
        {
            string[] prof=api.GetMyProfile();
            //MessageBox.Show(prof[2]);
            pictureBox1.ImageLocation = prof[3];
            label1.Text = prof[0];
            label2.Text = prof[1];
            label3.Text = prof[2];
            label4.Text = prof[4];
            label5.Text = prof[5];
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string[] prof = api.GetHisProfile(textBox1.Text);
            //MessageBox.Show(prof[3]);
            pictureBox1.ImageLocation = prof[3];
            label1.Text = prof[0];
            label2.Text = prof[1];
            label3.Text = prof[2];
            label4.Text = prof[4];
            label5.Text = prof[5];
        }
        
    }

Сама форма в моём случае выглядела так:


Вот исходник этого проекта C#.
vk.rar 454 KB

Далее рассмотрим уже другой пример, с использованием библиотеки vk api core, которую можно скачать тут.

ApiCore.dll 63.0 KB
Для данной работы я выбрал уже готовый исходник, который нашёл когда-то давно в интернете.

Программа умеет отправлять на стену сообщение тому, чей ID будет указан. Сработает если аккаунт авторизован и если всё будет удовлетворять настройкам приватности.

Вот функция, которая делает авторизацию. Она использует при работе библиотеку apicore.dll. Импорт делать обязательно.


        private void Connect()
        {
            if (!this.isLoggedIn)
            {
                SessionManager sm = new SessionManager(2834598, Convert.ToInt32(ApiPerms.ExtendedWall));
                this.sessionInfo = sm.GetSession();
                if (this.sessionInfo != null)
                {
                    this.isLoggedIn = true;
                    manager = new ApiManager(this.sessionInfo);
                    manager.Timeout = 10000;
                    wallFactory = new WallFactory(manager);
                    panel1.Visible = true;
                }
            }



        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                Connect();

            }
            catch
            {
                MessageBox.Show("Internal error");
            }
        }



Далее пример функции, которая отправляет сообщение на стену:


        private void PostWall()
        {
            try
            {
                if (this.sessionInfo != null)
                {
                    idUser = textBox1.Text;
                    messtext = textBox2.Text;

                    idnum = Convert.ToInt32(idUser);
                    wallFactory.Post(idnum, messtext);
                }
            }
            catch (ApiRequestErrorException ex)
            {
                MessageBox.Show(ex.Code.ToString() + "\n" + ex.Description);
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            PostWall();
        }

Обязательно надо объявить в самом начала переменные, которые используются в программе. Если это вызывает трудности, то вот фрагмент кода, где они все есть:

        private SessionInfo sessionInfo;
        private ApiManager manager;

        private bool isLoggedIn = false;
        private string idUser;
        private int idnum;
        private string messtext;

        public bool onstat;
        private WallFactory wallFactory;

Вставить их надо перед этим:

        public Form1()
        {
            InitializeComponent();  
            
        }

Таким образом выглядит форма у меня:


Вот исходник данного проекта:

vkwall.rar 64.3 KB

Точно также можно использовать любые функции библиотеки apicore.
Их список и описание можно посмотреть в обозревателе объектов.

TROCKII БЛОГ Copyright © 2012 | Template created by Lev Trockii |