 |
C# VK POST постить сообщения программно - Вопросы и ответы, обсуждения - Ваши вопросы по C# только в данном разделе |
06.07.2014, 01:32
|
#1
|
|
|
|
Разведчик
|
 Регистрация: 06.07.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
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
|
|
|
|
Сержант
|
 Регистрация: 18.07.2013
 Сообщений: 148
 Популярность: 84352
 Сказал(а) спасибо: 566
Поблагодарили 258 раз(а) в 195 сообщениях
|
Re: C# VK POST постить сообщения программно
Есть пара предположений... Возможно это защита от спама(частые или похожие сообщения), но откуда вы берёте hash для запроса? И обновлять не следует ли его?
|
|
|
06.07.2014, 02:13
|
#3
|
|
|
|
Разведчик
|
 Регистрация: 06.07.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: C# VK POST постить сообщения программно
программно я пробовал постоянно перепроверять страницу, но результат был тем же... + я отправлял более 10сообщений на страницу, для каждой страницы хеш постоянно статический. т.е. фигня где-то в другом месте...
Ну и вы говорили про "защиту", странно, потому что я пытался через ВК напрямую отсылать много постов, отсылает без проблем, в результатах скриптов ничего другого не посылается на ПОСТ...
|
|
|
06.07.2014, 06:58
|
#4
|
|
|
|
Сержант
|
 Регистрация: 18.07.2013
 Сообщений: 148
 Популярность: 84352
 Сказал(а) спасибо: 566
Поблагодарили 258 раз(а) в 195 сообщениях
|
Re: C# VK POST постить сообщения программно
|
|
|
06.07.2014, 12:15
|
#5
|
|
|
|
Разведчик
|
 Регистрация: 06.07.2014
 Сообщений: 0
 Популярность: 10
 Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: C# VK POST постить сообщения программно
ну вот и я о том же... возможно какае-то фигня в коде, вот и спрашиваю, может чем-то помочь сможете...
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 23:24.
|
 |