Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project1;
- {Coded by VANS - vans-soft.ru}
- {$APPTYPE CONSOLE}
- uses
- Windows,
- SysUtils,
- Classes,
- HTTPSend,
- SSL_OpenSSL,
- Clipbrd;
- type
- TRes=record //это для возврата результатов запроса
- page:string;
- redirect:string;
- end;
- TCheetos=record //структура хранилища карт
- image:integer;
- active:boolean;
- end;
- var
- Cookie, page, CheCookie, red, useragent:string;
- i, j, n, CardCount:integer;
- NextLevel:boolean;
- card:array [0..40] of TCheetos; //массив для хранения карт
- send:TStringStream;
- HTTP:THTTPSend;
- rez:TStringList;
- 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;
- function GetLocation(const headers:TStringList):string; //функция получения редиректа
- var i:integer;
- begin
- result:='';
- for I := 0 to headers.Count - 1 do
- if pos('Location: ',headers[i])>0 then
- begin
- Result:=copy(headers[i],11,length(headers[i]));
- break;
- end;
- end;
- function LoginVK: boolean; //авторизация вконтакте
- var str, ip_h, sid, login, pass:string; i:integer;
- begin
- write('Copy to clipboard User-Agent and press ENTER');
- readln;
- useragent:=clipboard.AsText; //копируем юзерагент из буфера
- write('Enter login: ');
- readln(login); //читаем логин
- write('Enter password: ');
- readln(pass); //читаем пароль
- //авторизируемся
- HTTP:=THTTPSend.Create;
- HTTP.UserAgent:=useragent;
- HTTP.Protocol:='1.1';
- HTTP.HTTPMethod('GET', 'https://vk.com/login.php');
- Cookie:=HTTP.Cookies.Text;
- rez:=TStringList.Create;
- rez.LoadFromStream(HTTP.Document);
- str:=rez.Text;
- rez.Free;
- HTTP.Free;
- ip_h:=Pars('name="ip_h" value="', str, '"');
- HTTP:=THTTPSend.Create;
- HTTP.UserAgent:=useragent;
- HTTP.Protocol:='1.1';
- HTTP.Cookies.Text:=Cookie;
- HTTP.MimeType:='application/x-www-form-urlencoded';
- send:=TStringStream.Create('');
- send.WriteString('act=login&_origin=https%3A%2F%2Fvk.com&ip_h='+ip_h+'&email='+login+'&pass='+pass);
- HTTP.Document.LoadFromStream(send);
- send.Free;
- HTTP.Cookies.Text:=Cookie;
- HTTP.HTTPMethod('POST', 'https://login.vk.com/?act=login');
- Cookie:=HTTP.Cookies.Text;
- red:=GetLocation(HTTP.Headers);
- HTTP.Free;
- if pos('hash=', red)<>0 then begin
- HTTP:=THTTPSend.Create;
- HTTP.UserAgent:=useragent;
- HTTP.Protocol:='1.1';
- HTTP.Cookies.Text:=Cookie;
- HTTP.HTTPMethod('GET', red);
- Cookie:=HTTP.Cookies.Text;
- rez:=TStringList.Create;
- rez.LoadFromStream(HTTP.Document);
- str:=rez.Text;
- rez.Free;
- HTTP.Free;
- result:=true;
- end else result:=false;
- end;
- function HTTPGet(url: string; var Cookies:string):TRes;
- begin
- HTTP:=THTTPSend.Create;
- HTTP.Cookies.Text:=Cookies;
- HTTP.AddPortNumberToHost:=false;
- HTTP.UserAgent:=useragent;
- HTTP.Protocol:='1.1';
- HTTP.HTTPMethod('GET', url);
- Cookies:=HTTP.Cookies.Text;
- rez:=TStringList.Create;
- rez.LoadFromStream(HTTP.Document);
- result.page:=rez.Text;
- rez.Free;
- result.redirect:=GetLocation(HTTP.Headers);
- HTTP.Free;
- end;
- begin
- writeln('===============================================================================');
- writeln('=========================== Cheetos.ru Game bot ===============================');
- writeln('====================== Coded by VANS - VANS-SOFT.RU ===========================');
- writeln('===============================================================================');
- Cookie:='';
- CheCookie:='';
- NextLevel:=false;
- if LoginVK then begin
- writeln('VK Login Success!');
- //авторизуемся на сайте через ВК
- red:=HTTPGet('http://cheetos.ru/auth/vkontakte', CheCookie).redirect;
- red:=HTTPGet(red, Cookie).redirect;
- red:=HTTPGet(red, Cookie).redirect;
- red:=HTTPGet(red, CheCookie).redirect;
- red:=HTTPGet(red, CheCookie).redirect;
- page:=HTTPGet('http://cheetos.ru/api/users/current', CheCookie).page; //получаем статистику
- writeln('Points: '+Pars('"points_all":"', page, '"'));
- for n:=1 to 3 do begin //цикл по трём играм
- if not NextLevel then begin //если переход на новый уровень
- writeln('Create new game...');
- page:=HTTPGet('http://cheetos.ru/api/game/new', CheCookie).page;
- NextLevel:=true;
- end else begin //если первый уровень
- writeln('Next game...');
- page:=HTTPGet('http://cheetos.ru/api/game/next_level', CheCookie).page;
- end;
- CardCount:=StrToInt(Pars('"card":', page, ','))-1; //получаем кол-во карт
- writeln('Level: '+Pars('"level":', page, ','));
- writeln('Card: '+IntToStr(CardCount+1));
- writeln('Time: '+Pars('"time":', page, '}'));
- page:=HTTPGet('http://cheetos.ru/api/users/code_is_activate', CheCookie).page; //запускаем игру
- writeln('Activate: '+Pars('"activate":', page, '}'));
- writeln('Get card, please wait...');
- for i:=0 to CardCount do begin //загружаем все карты в массив
- page:=HTTPGet('http://cheetos.ru/api/game/card_get?number='+IntToStr(i), CheCookie).page;
- card[i].image:=StrToInt(Pars('"image":', page, ','));
- card[i].active:=(Pars('"success":', page, ',')='true');
- if card[i].active then card[i-1].active:=true; //если 2 карты совпали то и предыдущую помечаем
- writeln(IntToStr(card[i].image)+' = ', card[i].active);
- sleep(random(500)); //эмитируем человека
- end;
- for i:=0 to CardCount do begin
- for j:=0 to CardCount do begin
- if (card[i].image=card[j].image) and (i<>j) then begin //если нашли совпадение и это не 1 и тот же элемент массива
- if card[i].active and card[j].active then break; //если карты угадали раньше то пропускаем
- page:=HTTPGet('http://cheetos.ru/api/game/card_get?number='+IntToStr(i), CheCookie).page; //выбираем первую карту
- page:=HTTPGet('http://cheetos.ru/api/game/card_get?number='+IntToStr(j), CheCookie).page; //и вторую
- card[i].active:=true; //помечаем их
- card[j].active:=true;
- Writeln(IntToStr(i)+'('+IntToStr(card[i].image)+') + '+IntToStr(j)+'('+IntToStr(card[j].image)+') = '+Pars('"success":', page, ',')); //для наглядности происходящего
- if Pars('"finish":', page, ',')='true' then begin //если конец игры то радуемся
- writeln('GAME WINNER');
- writeln(Pars('"score":', page, '}')); //выводим результат
- end;
- sleep(random(500)); //опять эмитируем скрытие карт
- end;
- end;
- end;
- end;
- end else writeln('VK Auth Error');
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement