Стена вконтакте.

Discussion in 'PHP' started by Deathdreams, 9 Mar 2010.

  1. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    всем привет.


    При постинге на чью-либо стену к ID чудесным образом добавляется неведомая четырёхсимвольная соль (не зависит от длины ID).

    Ну вот, вопрос, есть наработки по генерации этой соли ?

    Или идеи ?
     
  2. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10
    а если без неё?
     
  3. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Выплёвывает, что неверный ID
     
  4. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10
    покажи что там за какашка, посмотрим
     
  5. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
  6. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    А если у пользователя стена закрыта, как тогда ?

    Генерируется не с помощью JS.
     
  7. Tigger

    Tigger Elder - Старейшина

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    парсишь сурс, там она указана вместе с ID. И посылай на тот ID что спарсил.
     
  8. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Помоему если закрыта стена, то ты не спарсишь параметр wall_hash без которого сообщение опять же не отправится...
     
  9. eLWAux

    eLWAux Elder - Старейшина

    Joined:
    15 Jun 2008
    Messages:
    860
    Likes Received:
    616
    Reputations:
    211
    попробуй рандомное число добавить
     
  10. dr.Web

    dr.Web Member

    Joined:
    2 Feb 2009
    Messages:
    7
    Likes Received:
    22
    Reputations:
    10
    эта херня генится на пхп она статичная для конкретного акка.
    парсь регэкспом её
     
  11. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Хеш парситься довольно-таки просто:
    http://vkontakte.ru/wall.php?act=write&id=[СОЛЁНЫЙ_ID]
     
  12. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Если бы всё было так просто, я бы тему не стал создавать :)

    Читай выше, допустим страница закрыта.
     
  13. Fepsis

    Fepsis Elder - Старейшина

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Я не про это тебе говорю... Ты видел какой запрос идёт на сервер при отправке сообщения на стену..?!
    Там передаётся параметр (значение скрытго поля вормы) wall_hash вместе с сообщением и как ты говоришь солёным айди... Типа этого:

    to_id=солёный айди
    act=sent
    wall_hash=aab9314dbf655a2188cebea4b207e1c2
    message=Hi%2C%20man

    и если ты не отправишь в запросе параметр wall_hash, то сообщение не улетит на стену... А это значение можно спарсить, помоему только в том случае, если открыт доступ к стене...
     
  14. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    я-то тебя понял, а ты по ссылочке перейди и глянь, hash можно спарсить в любом случае.
     
  15. mazaxaka

    mazaxaka Elder - Старейшина

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    парни подскажите как сейчас с помошью php отправлять сообщение на стенку. чтото у меня вообще не получается. парсю хеш пишет секюрити ерор . подставляю шес с запроса . ошибка
     
  16. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    В переменной $content содержимое страницы пользователя.
    Показываю пример парсинга хеша , солёного id и постинга записи
    PHP:
    preg_match"#decodehash\('(.+)'\)#Uis"$content$hash_tmp );
    preg_match'#name="to_id" value="([0-9]+)"#U'$content$to_tmp );
    $hash strrev(substr($hash_tmp[1], -5).substr($hash_tmp[1], 4, -8));
    потом идёт пост на http://vkontakte.ru/wall.php с данными:
    Code:
    "act=get10&wall_hash=".$hash."&wpage=100000&seed=".iconv('CP1251', 'UTF-8', $text)."&fpage=1&mid=".$to_tmp[1]."&n=3"
     
  17. Failure

    Failure Elder - Старейшина

    Joined:
    21 Sep 2008
    Messages:
    179
    Likes Received:
    46
    Reputations:
    16
    хеш просто так не спарсишь,
    найти его можно только в таком виде:
    Code:
    window.wall_post_hash = decodehash('32_bit_hash');
    
    сама же функция decodehash
    Code:
    window.decodehash = function(hash) {
        dec_hash(hash);
        return window.decoded_hashes[hash];
      }
    
    еще одна функция decoded_hashes
    Code:
    window.decoded_hashes = {};
      var dec_hash = function(hash) {
        (function(_){window.decoded_hashes[_]=(function(__){var ___=ge?'':'___';for(____=0;____<__.length;++____)___+=__.charAt(__.length-____-1);return geByClass?___:'___';})(_.substr(_.length-5)+_.substr(4,_.length-12));})(hash);
      }
    
    тот хэш который нужен для отправки на стену отличается (в этом и мысл функции decodehash)
    запрос постом:
    PHP:
    $post = Array(
    'act'=>'get10',
    'wall_hash'=>'hash'// тот который уже decodehash()
    'wpage'=>'100000',
    'seed'=>'ololo'// текст который слать
    'fpage'=>'1',
    'mid'=>'id'//парсится из <input type="hidden" id="to_id" name="to_id" value="[1-9]{8,}"/>
    'n'=>'3'
    );
    $post http_build_query($post);
     
  18. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Failure, я помоему написал саму функцию отправки.
    Даже функцию hash_decode на php.
     
  19. mazaxaka

    mazaxaka Elder - Старейшина

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    хм.. что то у меня не как не выходит отправить
    PHP:
    $text "ololo";
        
    $ch curl_init();
        
    curl_setopt($chCURLOPT_URL'http://login.vk.com/?act=login');
        
    curl_setopt($chCURLOPT_USERAGENT'Opera/9.64 (Windows NT 5.1; U; ru) Presto/2.1.1');
        
    //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        
    curl_setopt($chCURLOPT_HEADER1);
        
    curl_setopt($chCURLOPT_TIMEOUT20); // таймаут
        
    curl_setopt($chCURLOPT_REFERER'http://vkontakte.ru/index.php');
        
    curl_setopt($chCURLOPT_COOKIE'remixlang=0; remixchk=5; remixsid=nonenone');
        
    curl_setopt($chCURLOPT_POST1); 
        
    curl_setopt($chCURLOPT_POSTFIELDS'email='.($email).'&pass='.($pass).'&expire=&vk=');
         
        
    $data curl_exec($ch);
        if(!
    $data) return('connection shit 3<br><br>');
        
    curl_close($ch);
        
    // Парсим хеш для отправки сообщения
        
        
    preg_match"#decodehash\('(.+)'\)#Uis"$data$hash_tmp ); 
        
    preg_match'#name="to_id" value="([0-9]+)"#U'$data$to_tmp ); 
        
    $hash strrev(substr($hash_tmp[1], -5).substr($hash_tmp[1], 4, -8)); 
        
    // Отправляем

        
    $url "http://vkontakte.ru/wall.php?act=get10&wall_hash=".$hash."&wpage=100000&seed=".iconv('CP1251''UTF-8'$text)."&fpage=1&mid=".$to_tmp[1]."&n=3";
     
  20. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    mazaxaka
    я же написал, получи страницу того, кому нужно отправить (id1, например)
    lol