Guest User

Cheetos bot by VANS

a guest
Mar 6th, 2015
221
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. program Project1;
  2.  
  3. {Coded by VANS - vans-soft.ru}
  4.  
  5. {$APPTYPE CONSOLE}
  6.  
  7. uses
  8.   Windows,
  9.   SysUtils,
  10.   Classes,
  11.   HTTPSend,
  12.   SSL_OpenSSL,
  13.   Clipbrd;
  14.  
  15. type
  16.   TRes=record //это для возврата результатов запроса
  17.     page:string;
  18.     redirect:string;
  19.   end;
  20.  
  21.   TCheetos=record //структура хранилища карт
  22.     image:integer;
  23.     active:boolean;
  24.   end;
  25.  
  26. var
  27.   Cookie, page, CheCookie, red, useragent:string;
  28.   i, j, n, CardCount:integer;
  29.   NextLevel:boolean;
  30.   card:array [0..40] of TCheetos; //массив для хранения карт
  31.   send:TStringStream;
  32.   HTTP:THTTPSend;
  33.   rez:TStringList;
  34.  
  35. function Pars(T_, ForS, _T:string):string; //функция парсинга страницы
  36.   var a, b:integer;
  37. begin
  38.   Result := '';
  39.   if (T_='') or (ForS='') or (_T='') then Exit;
  40.   a:=Pos(T_, ForS);
  41.   if a=0 then Exit else a:=a+Length(T_);
  42.   ForS:=Copy(ForS, a, Length(ForS)-a+1);
  43.   b:=Pos(_T, ForS);
  44.   if b>0 then
  45.   Result:=Copy(ForS, 1, b - 1);
  46. end;
  47.  
  48. function GetLocation(const headers:TStringList):string; //функция получения редиректа
  49. var i:integer;
  50. begin
  51.   result:='';
  52.   for I := 0 to headers.Count - 1 do
  53.     if pos('Location: ',headers[i])>0 then
  54.         begin
  55.           Result:=copy(headers[i],11,length(headers[i]));
  56.           break;
  57.         end;
  58. end;
  59.  
  60. function LoginVK: boolean; //авторизация вконтакте
  61. var str, ip_h, sid, login, pass:string; i:integer;
  62. begin
  63.   write('Copy to clipboard User-Agent and press ENTER');
  64.   readln;
  65.   useragent:=clipboard.AsText; //копируем юзерагент из буфера
  66.   write('Enter login: ');
  67.   readln(login); //читаем логин
  68.   write('Enter password: ');
  69.   readln(pass); //читаем пароль
  70.  
  71. //авторизируемся
  72.  
  73.   HTTP:=THTTPSend.Create;
  74.   HTTP.UserAgent:=useragent;
  75.   HTTP.Protocol:='1.1';
  76.   HTTP.HTTPMethod('GET', 'https://vk.com/login.php');
  77.   Cookie:=HTTP.Cookies.Text;
  78.   rez:=TStringList.Create;
  79.   rez.LoadFromStream(HTTP.Document);
  80.   str:=rez.Text;
  81.   rez.Free;
  82.   HTTP.Free;
  83.  
  84.   ip_h:=Pars('name="ip_h" value="', str, '"');
  85.  
  86.   HTTP:=THTTPSend.Create;
  87.   HTTP.UserAgent:=useragent;
  88.   HTTP.Protocol:='1.1';
  89.   HTTP.Cookies.Text:=Cookie;
  90.   HTTP.MimeType:='application/x-www-form-urlencoded';
  91.   send:=TStringStream.Create('');
  92.   send.WriteString('act=login&_origin=https%3A%2F%2Fvk.com&ip_h='+ip_h+'&email='+login+'&pass='+pass);
  93.   HTTP.Document.LoadFromStream(send);
  94.   send.Free;
  95.   HTTP.Cookies.Text:=Cookie;
  96.   HTTP.HTTPMethod('POST', 'https://login.vk.com/?act=login');
  97.   Cookie:=HTTP.Cookies.Text;
  98.   red:=GetLocation(HTTP.Headers);
  99.   HTTP.Free;
  100.  
  101.   if pos('hash=', red)<>0 then begin
  102.     HTTP:=THTTPSend.Create;
  103.     HTTP.UserAgent:=useragent;
  104.     HTTP.Protocol:='1.1';
  105.     HTTP.Cookies.Text:=Cookie;
  106.     HTTP.HTTPMethod('GET', red);
  107.     Cookie:=HTTP.Cookies.Text;
  108.     rez:=TStringList.Create;
  109.     rez.LoadFromStream(HTTP.Document);
  110.     str:=rez.Text;
  111.     rez.Free;
  112.     HTTP.Free;
  113.     result:=true;
  114.   end else result:=false;
  115. end;
  116.  
  117. function HTTPGet(url: string; var Cookies:string):TRes;
  118. begin
  119.   HTTP:=THTTPSend.Create;
  120.   HTTP.Cookies.Text:=Cookies;
  121.   HTTP.AddPortNumberToHost:=false;
  122.   HTTP.UserAgent:=useragent;
  123.   HTTP.Protocol:='1.1';
  124.   HTTP.HTTPMethod('GET', url);
  125.   Cookies:=HTTP.Cookies.Text;
  126.   rez:=TStringList.Create;
  127.   rez.LoadFromStream(HTTP.Document);
  128.   result.page:=rez.Text;
  129.   rez.Free;
  130.   result.redirect:=GetLocation(HTTP.Headers);
  131.   HTTP.Free;
  132. end;
  133.  
  134. begin
  135.   writeln('===============================================================================');
  136.   writeln('=========================== Cheetos.ru Game bot ===============================');
  137.   writeln('====================== Coded by VANS - VANS-SOFT.RU ===========================');
  138.   writeln('===============================================================================');
  139.  
  140.   Cookie:='';
  141.   CheCookie:='';
  142.   NextLevel:=false;
  143.  
  144.   if LoginVK then begin
  145.     writeln('VK Login Success!');
  146.  
  147. //авторизуемся на сайте через ВК
  148.     red:=HTTPGet('http://cheetos.ru/auth/vkontakte', CheCookie).redirect;
  149.     red:=HTTPGet(red, Cookie).redirect;
  150.     red:=HTTPGet(red, Cookie).redirect;
  151.     red:=HTTPGet(red, CheCookie).redirect;
  152.     red:=HTTPGet(red, CheCookie).redirect;
  153.     page:=HTTPGet('http://cheetos.ru/api/users/current', CheCookie).page; //получаем статистику
  154.     writeln('Points: '+Pars('"points_all":"', page, '"'));
  155.  
  156.     for n:=1 to 3 do begin //цикл по трём играм
  157.       if not NextLevel then begin //если переход на новый уровень
  158.         writeln('Create new game...');
  159.         page:=HTTPGet('http://cheetos.ru/api/game/new', CheCookie).page;
  160.         NextLevel:=true;
  161.       end else begin //если первый уровень
  162.         writeln('Next game...');
  163.         page:=HTTPGet('http://cheetos.ru/api/game/next_level', CheCookie).page;
  164.       end;
  165.  
  166.       CardCount:=StrToInt(Pars('"card":', page, ','))-1; //получаем кол-во карт
  167.       writeln('Level: '+Pars('"level":', page, ','));
  168.       writeln('Card: '+IntToStr(CardCount+1));
  169.       writeln('Time: '+Pars('"time":', page, '}'));
  170.  
  171.       page:=HTTPGet('http://cheetos.ru/api/users/code_is_activate', CheCookie).page; //запускаем игру
  172.       writeln('Activate: '+Pars('"activate":', page, '}'));
  173.  
  174.       writeln('Get card, please wait...');
  175.       for i:=0 to CardCount do begin //загружаем все карты в массив
  176.         page:=HTTPGet('http://cheetos.ru/api/game/card_get?number='+IntToStr(i), CheCookie).page;
  177.         card[i].image:=StrToInt(Pars('"image":', page, ','));
  178.         card[i].active:=(Pars('"success":', page, ',')='true');
  179.         if card[i].active then card[i-1].active:=true; //если 2 карты совпали то и предыдущую помечаем
  180.  
  181.         writeln(IntToStr(card[i].image)+' = ', card[i].active);
  182.         sleep(random(500)); //эмитируем человека
  183.       end;
  184.  
  185.       for i:=0 to CardCount do begin
  186.         for j:=0 to CardCount do begin
  187.           if (card[i].image=card[j].image) and (i<>j) then begin //если нашли совпадение и это не 1 и тот же элемент массива
  188.             if card[i].active and card[j].active then break; //если карты угадали раньше то пропускаем
  189.             page:=HTTPGet('http://cheetos.ru/api/game/card_get?number='+IntToStr(i), CheCookie).page; //выбираем первую карту
  190.             page:=HTTPGet('http://cheetos.ru/api/game/card_get?number='+IntToStr(j), CheCookie).page; //и вторую
  191.             card[i].active:=true; //помечаем их
  192.             card[j].active:=true;
  193.             Writeln(IntToStr(i)+'('+IntToStr(card[i].image)+') + '+IntToStr(j)+'('+IntToStr(card[j].image)+') = '+Pars('"success":', page, ',')); //для наглядности происходящего
  194.             if Pars('"finish":', page, ',')='true' then begin //если конец игры то радуемся
  195.               writeln('GAME WINNER');
  196.               writeln(Pars('"score":', page, '}')); //выводим результат
  197.             end;
  198.             sleep(random(500)); //опять эмитируем скрытие карт
  199.           end;
  200.         end;
  201.       end;
  202.     end;
  203.   end else writeln('VK Auth Error');
  204.   readln;
  205. end.
RAW Paste Data