всем привет. При постинге на чью-либо стену к ID чудесным образом добавляется неведомая четырёхсимвольная соль (не зависит от длины ID). Ну вот, вопрос, есть наработки по генерации этой соли ? Или идеи ?
Помоему если закрыта стена, то ты не спарсишь параметр wall_hash без которого сообщение опять же не отправится...
Я не про это тебе говорю... Ты видел какой запрос идёт на сервер при отправке сообщения на стену..?! Там передаётся параметр (значение скрытго поля вормы) wall_hash вместе с сообщением и как ты говоришь солёным айди... Типа этого: to_id=солёный айди act=sent wall_hash=aab9314dbf655a2188cebea4b207e1c2 message=Hi%2C%20man и если ты не отправишь в запросе параметр wall_hash, то сообщение не улетит на стену... А это значение можно спарсить, помоему только в том случае, если открыт доступ к стене...
парни подскажите как сейчас с помошью php отправлять сообщение на стенку. чтото у меня вообще не получается. парсю хеш пишет секюрити ерор . подставляю шес с запроса . ошибка
В переменной $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"
хеш просто так не спарсишь, найти его можно только в таком виде: 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);
хм.. что то у меня не как не выходит отправить PHP: $text = "ololo"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://login.vk.com/?act=login'); curl_setopt($ch, CURLOPT_USERAGENT, 'Opera/9.64 (Windows NT 5.1; U; ru) Presto/2.1.1'); //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 20); // таймаут curl_setopt($ch, CURLOPT_REFERER, 'http://vkontakte.ru/index.php'); curl_setopt($ch, CURLOPT_COOKIE, 'remixlang=0; remixchk=5; remixsid=nonenone'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_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";