VK API Спамим на странице

  • Автор темы Автор темы Lomanu4
  • Дата начала Дата начала
Если кому надо, могу сделать урок как писать на русском и с пробелом
 
Неплохо. Однако, получение токена - это не авторизация. Прав на публикацию сообщений не будет. Сделай нормальное видео, с авторизацией в ВК. Например такой код:
/// функция парсинга - начало
function Pars(T_, ForS, _T:string) :string;
var a, b:integer;
begin
Result :='';
if (T_='')or(ForS='')or(_T='') then Exit;
a:=Pos(T_, ForS);
if a=0 then Exit else a:=a+Length(T_);
ForS:=Copy(ForS, a, Length(ForS)-a+1);
b:=Pos(_T, ForS);
if b>0 then
Result:=Copy(ForS, 1, b - 1);
end;
// конец
var
// объявим переменные
http:thttpsend;
html:tstringlist;
data:tstringstream;
ip_h:string;
lg_h:string;
q_hash,hash:string;
vk_id:string;
// конец

begin
http:=thttpsend.Create; // создаём
html:=tstringlist.Create; // создаём
data:=tstringstream.Create; // создаём
// конец

http.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1'; // подключаем агент
http.KeepAlive:=true; // свободное подключение (принимаем данные)
if http.HTTPMethod('get','https://vk.com/login.php') then // переходим на vk.com и парсим ip_h и lg_h из исходного кода
begin
html.LoadFromStream(http.Document); // загружаем исходный код в html
Memo1.Lines.Add('['+TimeToStr(Time)+'] Авторизируемся в ВК...');
ip_h:=pars('name="ip_h" value="',utf8toansi(html.Text),'" />'); // парсим значение ip_h
lg_h;=pars('name="lg_h" value="',utf8toansi(html.Text),'" />'); // парсим значение lg_h
http.Headers.Clear; // чистим заголовки
http.Document.Clear; // чистим документ
// обязательно перед новым запросом нужно всё чистить ибо будет аншлаг-аншлаг
data.WriteString('act=login&_origin=https%3A%2F%2Fvk.com&ip_h='+ip_h+'&lg_h='+lg_h+'&email='+Edit1.Text+'&pass='+Edit2.Text); // генерируем пост запрос
http.MimeType:='application/x-www-form-urlencoded'; // заголовки
http.KeepAlive:=true; // свобода (принимаем данные)
http.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1'; // юзерагент ( мы не робот )
http.Document.LoadFromStream(data); // подгружаем наши данные в запрос (POST)
http.HTTPMethod('post','https://login.vk.com/?act=login'); // отправляем пост запрос с данными
if pos('&__q_hash=',http.Headers.Text)<>0 then // если нашли q_hash в заголовках, тогда мы авторизовались ( почти )
begin // копируем hash
hash:=copy(http.Headers.Text,pos('hash=',http.Headers.Text),100)+';';
q_hash:=pars('hash=',hash,';');
// конец

http.Headers.Clear; // опять таки чистим все заголовки
http.Document.Clear; // clear document
http.HTTPMethod('get',' https://vk.com/login.php?act=login&role=fast&redirect=1&to=&s=1&__q_hash='+trim(q_hash)); // запрос, trim - удаляет пробелы
Memo1.Lines.Add('['+TimeToStr(Time)+'] Авторизация прошла успешно!');
http.Headers.Clear; // clear
http.Document.Clear; // clear
http.HTTPMethod('get','https://vk.com/feed');
html.LoadFromStream(http.Document); // загрузка документа
vk_id:=pars('id: ',utf8toansi(html.Text),','); // парсим ID в vk_id
Memo1.Lines.Add('['+TimeToStr(Time)+'] Получен ID аккаунта: '+vk_id); // вывод id
end else
begin Memo1.Lines.Add('['+TimeToStr(Time)+'] Не верный логин или пароль.'); // ну думаю ясно
end;

end else
begin
// если не попали на vk.com - ип в бане или хз что
Memo1.Lines.Add('['+TimeToStr(Time)+'] Вы забанены!');
end;
http.Free; // освобождаем память
data.Free; // освобождаем память
end;

end.
 
Последнее редактирование:
Неплохо. Однако, получение токена - это не авторизация. Прав на публикацию сообщений не будет. Сделай нормальное видео, с авторизацией в ВК. Например такой код:
/// функция парсинга - начало
function Pars(T_, ForS, _T:string) :string;
var a, b:integer;
begin
Result :='';
if (T_='')or(ForS='')or(_T='') then Exit;
a:=Pos(T_, ForS);
if a=0 then Exit else a:=a+Length(T_);
ForS:=Copy(ForS, a, Length(ForS)-a+1);
b:=Pos(_T, ForS);
if b>0 then
Result:=Copy(ForS, 1, b - 1);
end;
// конец
var
// объявим переменные
http:thttpsend;
html:tstringlist;
data:tstringstream;
ip_h:string;
lg_h:string;
q_hash,hash:string;
vk_id:string;
// конец

begin
http:=thttpsend.Create; // создаём
html:=tstringlist.Create; // создаём
data:=tstringstream.Create; // создаём
// конец

http.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1'; // подключаем агент
http.KeepAlive:=true; // свободное подключение (принимаем данные)
if http.HTTPMethod('get','https://vk.com/login.php') then // переходим на vk.com и парсим ip_h и lg_h из исходного кода
begin
html.LoadFromStream(http.Document); // загружаем исходный код в html
Memo1.Lines.Add('['+TimeToStr(Time)+'] Авторизируемся в ВК...');
ip_h:=pars('name="ip_h" value="',utf8toansi(html.Text),'" />'); // парсим значение ip_h
lg_h;=pars('name="lg_h" value="',utf8toansi(html.Text),'" />'); // парсим значение lg_h
http.Headers.Clear; // чистим заголовки
http.Document.Clear; // чистим документ
// обязательно перед новым запросом нужно всё чистить ибо будет аншлаг-аншлаг
data.WriteString('act=login&_origin=https%3A%2F%2Fvk.com&ip_h='+ip_h+'&lg_h='+lg_h+'&email='+Edit1.Text+'&pass='+Edit2.Text); // генерируем пост запрос
http.MimeType:='application/x-www-form-urlencoded'; // заголовки
http.KeepAlive:=true; // свобода (принимаем данные)
http.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1'; // юзерагент ( мы не робот )
http.Document.LoadFromStream(data); // подгружаем наши данные в запрос (POST)
http.HTTPMethod('post','https://login.vk.com/?act=login'); // отправляем пост запрос с данными
if pos('&__q_hash=',http.Headers.Text)<>0 then // если нашли q_hash в заголовках, тогда мы авторизовались ( почти )
begin // копируем hash
hash:=copy(http.Headers.Text,pos('hash=',http.Headers.Text),100)+';';
q_hash:=pars('hash=',hash,';');
// конец

http.Headers.Clear; // опять таки чистим все заголовки
http.Document.Clear; // clear document
http.HTTPMethod('get',' https://vk.com/login.php?act=login&role=fast&redirect=1&to=&s=1&__q_hash='+trim(q_hash)); // запрос, trim - удаляет пробелы
Memo1.Lines.Add('['+TimeToStr(Time)+'] Авторизация прошла успешно!');
http.Headers.Clear; // clear
http.Document.Clear; // clear
http.HTTPMethod('get','https://vk.com/feed');
html.LoadFromStream(http.Document); // загрузка документа
vk_id:=pars('id: ',utf8toansi(html.Text),','); // парсим ID в vk_id
Memo1.Lines.Add('['+TimeToStr(Time)+'] Получен ID аккаунта: '+vk_id); // вывод id
end else
begin Memo1.Lines.Add('['+TimeToStr(Time)+'] Не верный логин или пароль.'); // ну думаю ясно
end;

end else
begin
// если не попали на vk.com - ип в бане или хз что
Memo1.Lines.Add('['+TimeToStr(Time)+'] Вы забанены!');
end;
http.Free; // освобождаем память
data.Free; // освобождаем память
end;

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

Перед тем как делать запрос,нужно авторизация !

С помощью метода photos.getWallUploadServer приложение узнает http-адрес для загрузки фотографии на стену текущего пользователя, другого пользователя или группы в зависимости от переданных параметров user_id или group_id.

2. Приложение формирует POST-запрос на полученный адрес.
Запрос должен включать поле photo, содержащее файл с изображением (JPG, PNG, BMP или GIF)

Пример результата загрузки фотографии:

{"server": "1234", "photo": "1234", "hash": "12345abcde"}


Обратите внимание, что ответ сервера всегда приходит в формате JSON, а поля server, photo и hash в нем содержат строки, внутренний формат которых может изменяться со временем. В частности, строка photoможет содержать другой json-объект, который не следует декодировать, разбирать на части или иным образом модифицировать.

3. С помощью метода photos.saveWallPhoto приложение передает серверу полученные данные (server, photo, hash и опциональные user_id и group_id) и получает данные о загруженной фотографии. Обратите внимание, за один вызов photos.saveWallPhoto не может быть загружено более 6 фотографий.

После успешной загрузки фотографии Вы можете разместить её на стене, используя метод wall.post и указав идентификатор фотографии в параметре attachments. Обратите внимание, что при размещении фотографии на стене другого пользователя или группы необходимо указывать параметры user_id и group_id, соответствующие используемым в п.1.
 
{"server": "1234", "photo": "1234", "hash": "12345abcde"}
.
Проблема в том что не приходит такой ответ сервера точнее приходит но не от того URL куда заливаешь файл = то есть приходит 2 пост ответа. программа ловит только 1. не нужный.
 
Проблема в том что не приходит такой ответ сервера точнее приходит но не от того URL куда заливаешь файл = то есть приходит 2 пост ответа. программа ловит только 1. не нужный.
попробуйте посмотреть снифером где вы ошиблись.
 
Назад
Сверху Снизу