Теле2 свитер

Discussion in 'PHP' started by huntercs, 13 Jan 2013.

  1. huntercs

    huntercs New Member

    Joined:
    31 Jan 2012
    Messages:
    50
    Likes Received:
    0
    Reputations:
    0
    Теле2 проводит конкурс по накрутке лайков за сутки
    http://sviter.tele2.ru/rating/
    Голосование происходит при помощи соцсетей
    Позволяют ставить лайк на несколько свитеров,соответственно 1 раз я авторизировался через контакт,меня запомнили в куки,и дальше авторизация через внешние сайты не требовалась больше.
    Данный пакет отсылается в браузере,тело запроса состоит из строки Vote object

    Code:
        POST http://sviter.tele2.ru/voting/vote/37363/ HTTP/1.1
        Accept: */*
        Accept-Language: ru
        Accept-Encoding: gzip, deflate
        User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0)  Gecko/20100101 Firefox/17.0
        Host: sviter.tele2.ru
        X-Requested-With: XMLHttpRequest
        Content-type:application/x-www-form-urlencoded; charset=UTF-8
        Proxy-Connection: Keep-Alive
        Referer:http://sviter.tele2.ru/sweater/37363
    Cookie:vk_token=7a3f85cb15375bc6f77e878c83e4db1bbe353ead
        Content-Length:46
        Cache-Control:no-cache
        Pragma:no-cache
    
        token=7a3f85cb15375bc6f77e878c83e4db1bbe353ead 


    Указанный выше запрос попробовал повторить в древнем менеджере пакетов InetCrack.
    Вернул в тело error.
    Не врубаюсь как он определяет что крутит бот.Кто поможет разобраться-тому свитер :))))
     
  2. huntercs

    huntercs New Member

    Joined:
    31 Jan 2012
    Messages:
    50
    Likes Received:
    0
    Reputations:
    0
    Делаю так
    1)Авторизируюсь на вк,запоминаю массив куки
    2)Логинза отсылает запрос на sviter.tele2.ru/?oauth&key=(ключ)
    Оттуда он переадресуется на https при помощи заголовка локайшн
    Сохраняю куки и следую локейшену.
    3)Далее локейшн отбрасывает на sviter.tele2.ru/create_social_user/?key=(полученный ключ)
    По этому ключу и при помощи секретного ключа приложение получается как раз токен.Ключ приложение не нужен,главное токен записать в куки.
    4)Далее следует какой то непонятный запрос check_token,заодно вызывает ошибку 500 на сервере,а далее указанный в первом сообщении темы.

    Что бы не делал у браузера получается Vote object а у меня error
    Что не так ,токен прекрасно получается и сохраняется,не понимаю пробовал в инет крак прописать все специфические заголовки.
    Там кстати если принудительно в php прописать токен из браузера-токен тохнет и приходится заново логиниться,при этом выходя из контакта соответственно

    Там какой то такой злой механизм.Использую Snoopy.class.php - 100% имитатор браузера только в php.
     
  3. huntercs

    huntercs New Member

    Joined:
    31 Jan 2012
    Messages:
    50
    Likes Received:
    0
    Reputations:
    0
    Live Http Headers позволяет получить 100% код http заголовка,у меня такой получился:

    Копирую это дело в Инет крак,единственно логично поставить ид другого свитера.Опять же возвражает вместо Voting object - error
    Заголовок 100 % соответствует браузерному.WTH?
     
  4. huntercs

    huntercs New Member

    Joined:
    31 Jan 2012
    Messages:
    50
    Likes Received:
    0
    Reputations:
    0
    Может быть проблема в том что Файерфоксовские снифферы видят не все пакеты?
     
  5. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    может проблема в том, что для голосования надо быть авторизованным? и с одного аккунта только один голос.
     
  6. huntercs

    huntercs New Member

    Joined:
    31 Jan 2012
    Messages:
    50
    Likes Received:
    0
    Reputations:
    0
    justonline
    Мой php класс выполняет авторизацию,Теле2 позволяют лайкить сразу много свитеров.
    Нашел много багов,скрипт в точности повторяет действия браузера от авторизации
    до полученя токена и выполняет ещё 2 заголовка со всеми токенами и куками:
    1)заголовок который выдает 500 ошибку проверяльщик токен(в нормальном браузере)
    2)собственно сам заголовок,который я расписал в этой теме.
    Может быть я не все заголовки видел?По идее остался последний баг
     
    #6 huntercs, 13 Jan 2013
    Last edited: 13 Jan 2013
  7. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    а ты не думал, что Id голосующего(а оно так и есть) пишется в бд? соответственно два раза голосовать за тот же свитер нельзя. и почитай правила акции. за накрутку банят.
     
  8. huntercs

    huntercs New Member

    Joined:
    31 Jan 2012
    Messages:
    50
    Likes Received:
    0
    Reputations:
    0
    justonline
    А за спам в поддержку свитера банит вк.
    Проверял,с одного акка можно хоть 10 свитеров.
    Давай,поможешь разобраться,я тебе свитер накручу

    Мой накрутчик поддерживает прокси,задержку и прочее,можно запалить только если лично ловить кто голосовал
     
    #8 huntercs, 13 Jan 2013
    Last edited: 13 Jan 2013
  9. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    ты читать умеешь? там проверка на то, был ли голос за конкретный свитер. ты можешь хоть за 100500 проголосовать, но не более одного раза за один.
    я тебе в личку скинул то, что я могу тебе предложить))) ничего более у тебя не выйдет)
     
    #9 justonline, 13 Jan 2013
    Last edited: 13 Jan 2013
  10. huntercs

    huntercs New Member

    Joined:
    31 Jan 2012
    Messages:
    50
    Likes Received:
    0
    Reputations:
    0
    justonline
    У меня куча левых аккаунтов голосует за разные свитеры с айпи через прокси,результат один,который описал в начале
     
  11. huntercs

    huntercs New Member

    Joined:
    31 Jan 2012
    Messages:
    50
    Likes Received:
    0
    Reputations:
    0
    PHP:
    <?php
    class Tele2{
    private 
    $s;
    private 
    $t2s;
    private 
    $token;

    public function 
    tele2Golos($id,$proxy='',$port=80){
    $s=&$this->t2s;    
    if(!empty(
    $proxy)){
    $s->proxy_host=$proxy;    
    $s->proxy_host=$port;}   
    $s->fetch("http://sviter.tele2.ru/sweater/$id");
    $s->setcookies();
    $s->cookies["vk_token"]=$this->token;
    $s->fetch("http://sviter.tele2.ru/voting/verify_tokens/?fb_token=&vk_token=".$this->token."&ok_token=&my_token=");
    $s->setcookies();
    $vote=array();
    $vote['token']=$this->token;
    $s->submit("http://sviter.tele2.ru/voting/vote/$id/",$vote);
    $s->setcookies();
    $res=$this->results;
    return 
    false;
    }

    public function 
    sviterToken($id,$proxy='',$port=80){
    $s=&$this->s;
    $s->maxredirs=0;
    $s->fetch("http://oauth.vk.com/authorize?client_id=3295213&redirect_uri=http://sviter.tele2.ru/voting/create_social_user/?social_network=vk");
    $s->setcookies();
    $res=$s->results;
    $headers=$s->headers;$loc="";
    foreach(
    $headers as $v){
    if(
    substr($v,0,8)=="Location"){$loc=trim(substr($v,9));break;}    
    };
    if(empty(
    $loc)){
    $pos=strpos($res,"https://login.vk.com/?act=grant_access");
    $end=strpos($res,'"',$pos+4);
    $c=$end-$pos;
    $loc=trim(substr($res,$pos,$c),'"');
    }
    $loc=urldecode($loc);
    //$loc=  str_replace("https", "http", $loc);

    $cl=curl_init();
    curl_setopt($clCURLOPT_SSL_VERIFYPEERfalse);
    curl_setopt($clCURLOPT_SSL_VERIFYHOSTfalse);
    curl_setopt($clCURLOPT_URL,$loc);
    curl_setopt($clCURLOPT_HEADER,true);
    $cookie="";
    foreach(
    $s->cookies as $k=>$v){
    if(!empty(
    $cookie))$cookie.="; ";
    $cookie.="$k=$v";
    }
    curl_setopt($clCURLOPT_COOKIE$cookie);
    curl_setopt($cl,CURLOPT_RETURNTRANSFER1);
    $res=  curl_exec($cl);
    curl_close($cl);
    $headers=str_replace("\r"""$res);
    $headers=explode("\n",$headers);
    foreach(
    $headers as $v){
    if(
    substr($v,0,8)=="Location"){$loc=trim(substr($v,9));break;}     
    }
    //$s=&$this->t2s;
    //$s->referer="http://sviter.tele2.ru/sweater/$id";
    //$s->fetch("http://sviter.tele2.ru/sweater/$id");
    //$s->setcookies();
    if(!empty($proxy)){
    $s->proxy_host=$proxy;    
    $s->proxy_host=$port;}  
    $s->fetch($loc);

    $s->setcookies();
    $res=$s->results;
    $token=$s->cookies["vk_token"];
    if(empty(
    $token))return -1;
    $this->token=$token;
     
    $s->fetch("http://sviter.tele2.ru/sweater/$id");
    $s->setcookies();
    $s->referer="http://sviter.tele2.ru/sweater/$id";
    $s->fetch("http://sviter.tele2.ru/voting/verify_tokens/?fb_token=&vk_token=".$this->token."&ok_token=&my_token=");
    $res=$s->results;
    $s->setcookies();
    $vote=array();
    $vote['token']=$this->token;
    $s->referer="http://sviter.tele2.ru/sweater/$id";
    $cookie="";
    foreach(
    $s->cookies as $k=>$v){
    if(!empty(
    $cookie))$cookie.="; ";
    $cookie.="$k=$v";
    }
    /*
    $cl=curl_init();
    curl_setopt($cl, CURLOPT_URL, "http://sviter.tele2.ru/voting/vote/$id/");
    curl_setopt($cl, CURLOPT_COOKIE, $cookie);
    curl_setopt($cl, CURLOPT_HEADER,true);
    curl_setopt($cl,CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($cl,CURLOPT_POST, 0);
    curl_setopt($cl,CURLOPT_, 1);
    curl_setopt($cl,CURLOPT_POSTFIELDS, $vote);
    $res=curl_exec($cl);
    curl_close($cl);
    */
    $s->submit("http://sviter.tele2.ru/voting/vote/$id/",$vote);
    $s->setcookies();
    $res=$this->results;
    return 
    false;


    return 
    1;
    }

    public function 
    loginVK($email,$pass,$proxy='',$port=80){
    $s=&$this->s;
    if(!empty(
    $proxy)){
    $s->proxy_host=$proxy;    
    $s->proxy_host=$port;}    
    $s->fetch("http://vk.com");
    $s->setcookies();
    $res=$s->results;
    $pos=strpos($res,"ip_h");
    $b=strpos($res,"'",$pos+1)+1;
    $e=strpos($res,"'",$b);
    $c=$e-$b;
    $ip_h=trim(substr($res,$b,$c),"'");
    $pass=iconv("UTF-8","windows-1251",$pass);
    $login=array();
    $login["act"]="login";
    $login["role"]="al_frame";
    $login["_origin"]="http://vk.com";
    $login["email"]=$email;
    $login["pass"]=$pass;
    $login['captcha_sid']="";    
    $login['captcha_key']="";    
    $login['expire']="";    
    $login['ip_h']=$ip_h;    
    $s->submit("http://login.vk.com/?act=login",$login);
    $s->setcookies();
    $id=$s->cookies["l"];
    if(empty(
    $id))return -1;
    $s->fetch("http://m.vk.com/id$id");
    $res=$s->results;
    $pos=strpos($res,"prof_info");
    if(!
    $pos)return -2;
    return 
    1;
    }

    public function 
    __construct(){
    $s=&$this->s;
    $s=new Snoopy();
    $s->agent="5.0.5 (6533.21.1, r84622) — Mozilla/5.0 (Macintosh; I; Intel Mac OS X 10_6_7; en-EN) ";
    $t2s=&$this->t2s;
    $t2s=new Snoopy();
    $t2s->agent="5.0.5 (6533.21.1, r84622) — Mozilla/5.0 (Macintosh; I; Intel Mac OS X 10_6_7; en-EN) ";
    $t2s->curl_path="C:\Program Files (x86)\PHP\ext\php_curl.php";
    $t2s->host="sviter.tele2.ru";
    }



    }  
    ?>


    include("Snoopy.class.php");
    include 'Tele2.class.php';
    $tele2=new Tele2();
    $res=$tele2->loginVK("79066543317", "timati");
    $tele2->sviterToken(37406);
    //$tele2->tele2Golos(37308);
    echo $res;

    HTTP пакеты скопировал 1 в 1,но результаты голосования разные. Если разберешься -пиши легко натянем оконный гуи интерфейс и накрутчик с блекджеком и проксями