Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

C# VK POST постить сообщения программно

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 06.07.2014, 01:32   #1
 Разведчик
Аватар для num2
 
num2 никому не известный тип
Регистрация: 06.07.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
Question C# VK POST постить сообщения программно

Доброго времени..

Столкнулся тут с проблемой написания постов в ВК группу с помощью кода без API.. суть в том что постить получается, но вот постится только 2 раза... может где-то в коде продолбался... подскажите плз

Код:
public string Login(string url, string postData) //Возвращает содержимое поданной страницы
        {
            string HTML = "";
 
            Regex rex1 = new Regex("remixsid=(.*?);", RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
            if (url == "0") return "0"; //Проверка на ошибку
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
            //myHttpWebRequest.Proxy = new WebProxy("127.0.0.1", 8888); 
            if (!String.IsNullOrEmpty(postData)) myHttpWebRequest.Method = "POST";
            myHttpWebRequest.Referer = "https://vk.com";
            myHttpWebRequest.UserAgent = "Mozila/14.0 (compatible; MSIE 6.0;Windows NT 5.1; SV1; MyIE2;";
            myHttpWebRequest.Accept = "image/gif, image/x-xbitmap, image/jpeg,image/pjpeg, application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword";
            myHttpWebRequest.Headers.Add("Accept-Language", "ru");
            myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
            myHttpWebRequest.KeepAlive = false;
 
            // передаем Сookie, полученные в предыдущем запросе
            if (!String.IsNullOrEmpty(this.remixsid))
            {
                lastCookies = "remixchk=5;remixsid=" + this.remixsid;
            }
            if (!String.IsNullOrEmpty(lastCookies))
            {
                myHttpWebRequest.Headers.Add(System.Net.HttpRequestHeader.Cookie, lastCookies);
            }
            // ставим False, чтобы при получении кода 302, не делать 
            // автоматического перенаправления
            myHttpWebRequest.AllowAutoRedirect = false;
 
            // передаем параметры
            string sQueryString = postData;
            byte[] ByteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(sQueryString); //Вконтакте использует кирилическую кодировку
            try
            {
                if (!String.IsNullOrEmpty(postData))
                {
                    myHttpWebRequest.ContentLength = ByteArr.Length;
                    myHttpWebRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length);
                };
 
                // делаем запрос
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
                StreamReader myStreamReader;
 
                //Сохраняем Cookie 
                lastCookies = String.IsNullOrEmpty(myHttpWebResponse.Headers["Set-Cookie"]) ? "" : myHttpWebResponse.Headers["Set-Cookie"];
                Match matc1 = rex1.Match(lastCookies);
 
                //Если есть имя сессии, то подменяем Cookie 
                if (matc1.Groups.Count == 2) { this.remixsid = matc1.Groups[1].ToString(); lastCookies = "remixchk=5;remixsid=" + this.remixsid; }
                if (myHttpWebResponse.Headers["Content-Type"].IndexOf("windows-1251") > 0)
                {
                    myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.GetEncoding("windows-1251"));
                }
                else
                {
                    myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream(), Encoding.UTF8);
                }
                HTML = myStreamReader.ReadToEnd();
                if (HTML == "") //Проверяем на редирект
                {
                    HTML = this.GetHtml(myHttpWebResponse.Headers["Location"].ToString(), "");
 
                }
            }
            catch (Exception err)
            {
                //Ошибка в чтении страницы
                return "0";
            }
            return HTML;
        }
 
 
 
        public string PostMessage(string url, string idGroup, string postMessage) //Возвращает содержимое поданной страницы
        {
            string HTML = "";
 
            Regex rex1 = new Regex("remixsid=(.*?);", RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
            if (url == "0") return "0"; //Проверка на ошибку
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
            //myHttpWebRequest.Proxy = new WebProxy("127.0.0.1", 8888);
            if (!String.IsNullOrEmpty(idGroup)) myHttpWebRequest.Method = "POST";
            myHttpWebRequest.Referer = "https://vk.com/" + idGroup;
            myHttpWebRequest.UserAgent = "Mozila/14.0 (compatible; MSIE 6.0;Windows NT 5.1; SV1; MyIE2;";
            myHttpWebRequest.Accept = "image/gif, image/x-xbitmap, image/jpeg,image/pjpeg, application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword";
            myHttpWebRequest.Headers.Add("Accept-Language", "ru");
            myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
            myHttpWebRequest.KeepAlive = false;
 
            lastCookies = "remixchk=5;remixsid=" + this.remixsid;
            myHttpWebRequest.Headers.Add(System.Net.HttpRequestHeader.Cookie, lastCookies);
 
 
             // передаем параметры
            string sQueryString = postMessage;
            byte[] ByteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(sQueryString); //Вконтакте использует кирилическую кодировку
            try
            {
                if (!String.IsNullOrEmpty(postMessage))
                {
                    myHttpWebRequest.ContentLength = ByteArr.Length;
                    myHttpWebRequest.GetRequestStream().Write(ByteArr, 0, ByteArr.Length);
                };
 
                // делаем запрос
                HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
            }
            catch (Exception err)
            {
                //Ошибка в чтении страницы
                return "0";
            }
            return HTML;
        }
Ну и вот вызов для написания поста, пытаюсь написать одно и тоже сообщение 4 раза, но почему-то всегда постится только 2 ... думал связанно было с тем что одинаковое, но начал генерить и подставлять символы разные.. всеравно

Код:
for (int i = 0; i < 4; i++)
            {
                string post = "Message=" + messageTB.Text + "" + i + "&act=post&al=1&facebook_export=&fixed=&friends_only=&from=&hash=" + hash + "&official=&signed=&status_export=&to_id=-" + GruopNum + "&type=all";
                http.PostMessage("https://vk.com/al_wall.php", groupID.Text, post);
                Thread.Sleep(1000);
            }
  Ответить с цитированием
Старый 06.07.2014, 01:46   #2
Почетный Пользователь
 Сержант
Аватар для MembRupt
 
MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(
Регистрация: 18.07.2013
Сообщений: 148
Популярность: 83981
Сказал(а) спасибо: 564
Поблагодарили 258 раз(а) в 195 сообщениях
 
По умолчанию Re: C# VK POST постить сообщения программно

Есть пара предположений... Возможно это защита от спама(частые или похожие сообщения), но откуда вы берёте hash для запроса? И обновлять не следует ли его?
  Ответить с цитированием
Старый 06.07.2014, 02:13   #3
 Разведчик
Аватар для num2
 
num2 никому не известный тип
Регистрация: 06.07.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: C# VK POST постить сообщения программно

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

Ну и вы говорили про "защиту", странно, потому что я пытался через ВК напрямую отсылать много постов, отсылает без проблем, в результатах скриптов ничего другого не посылается на ПОСТ...
  Ответить с цитированием
Старый 06.07.2014, 06:58   #4
Почетный Пользователь
 Сержант
Аватар для MembRupt
 
MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(MembRupt сломал счётчик популярности :(
Регистрация: 18.07.2013
Сообщений: 148
Популярность: 83981
Сказал(а) спасибо: 564
Поблагодарили 258 раз(а) в 195 сообщениях
 
По умолчанию Re: C# VK POST постить сообщения программно

Цитата:
Сообщение от num2Посмотреть сообщение
программно я пробовал постоянно перепроверять страницу, но результат был тем же... + я отправлял более 10сообщений на страницу, для каждой страницы хеш постоянно статический. т.е. фигня где-то в другом месте...

Ну и вы говорили про "защиту", странно, потому что я пытался через ВК напрямую отсылать много постов, отсылает без проблем, в результатах скриптов ничего другого не посылается на ПОСТ...

То есть при отправке вручную, браузер отправляет одинаковые и такие же пакеты, как вы через программу? В таком случае реакция от сайта должна быть одинаковая
  Ответить с цитированием
Старый 06.07.2014, 12:15   #5
 Разведчик
Аватар для num2
 
num2 никому не известный тип
Регистрация: 06.07.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: C# VK POST постить сообщения программно

ну вот и я о том же... возможно какае-то фигня в коде, вот и спрашиваю, может чем-то помочь сможете...
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Информация] Тут можно постить скрины. Mad_Master Общение и обсуждение 151 01.06.2013 07:26
[Помогите!] Программно узнать Name Babls77 Вопросы и ответы, обсуждения 5 22.05.2012 23:16
Получаем IP программно. .:InSiDe:. C# 8 22.02.2012 20:27
куда постить тему? achehin Общение и обсуждение, архив Lineage 2 4 12.12.2011 22:41

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 14:44.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net