PDA

Просмотр полной версии : Стена вконтакте.


Deathdreams
09.03.2010, 18:07
всем привет.


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

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

Или идеи ?

dr.Web
09.03.2010, 18:25
а если без неё?

Deathdreams
09.03.2010, 18:26
Выплёвывает, что неверный ID

dr.Web
09.03.2010, 18:29
покажи что там за какашка, посмотрим

Deathdreams
09.03.2010, 18:31
Например (http://vkontakte.ru/id21).
Строка 872, солёный ID.

rushter
09.03.2010, 18:38
Спарси, в чём проблема ? Если генерируется js, то смотри исходники его.

Deathdreams
09.03.2010, 18:42
Спарси, в чём проблема ? Если генерируется js, то смотри исходники его.
А если у пользователя стена закрыта, как тогда ?

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

Tigger
09.03.2010, 18:43
парсишь сурс, там она указана вместе с ID. И посылай на тот ID что спарсил.

Fepsis
09.03.2010, 18:57
А если у пользователя стена закрыта, как тогда ?

Помоему если закрыта стена, то ты не спарсишь параметр wall_hash без которого сообщение опять же не отправится...

eLWAux
09.03.2010, 19:11
попробуй рандомное число добавить

dr.Web
09.03.2010, 19:12
эта херня генится на пхп она статичная для конкретного акка.
парсь регэкспом её

Deathdreams
09.03.2010, 19:13
Помоему если закрыта стена, то ты не спарсишь параметр wall_hash без которого сообщение опять же не отправится...
Хеш парситься довольно-таки просто:
http://vkontakte.ru/wall.php?act=write&id=[СОЛЁНЫЙ_ID]

Deathdreams
09.03.2010, 19:14
попробуй рандомное число добавить
Если бы всё было так просто, я бы тему не стал создавать :)

эта херня генится на пхп она статичная для конкретного акка.
парсь регэкспом её

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

Fepsis
09.03.2010, 22:48
Хеш парситься довольно-таки просто:
http://vkontakte.ru/wall.php?act=write&id=[СОЛЁНЫЙ_ID]
Я не про это тебе говорю... Ты видел какой запрос идёт на сервер при отправке сообщения на стену..?!
Там передаётся параметр (значение скрытго поля вормы) wall_hash вместе с сообщением и как ты говоришь солёным айди... Типа этого:

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

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

Deathdreams
09.03.2010, 23:02
Я не про это тебе говорю... Ты видел какой запрос идёт на сервер при отправке сообщения на стену..?!
Там передаётся параметр (значение скрытго поля вормы) wall_hash вместе с сообщением и как ты говоришь солёным айди... Типа этого:

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

и если ты не отправишь в запросе параметр wall_hash, то сообщение не улетит на стену... А это значение можно спарсить, помоему только в том случае, если открыт доступ к стене...
я-то тебя понял, а ты по ссылочке перейди и глянь, hash можно спарсить в любом случае.

mazaxaka
22.04.2010, 20:19
парни подскажите как сейчас с помошью php отправлять сообщение на стенку. чтото у меня вообще не получается. парсю хеш пишет секюрити ерор . подставляю шес с запроса . ошибка

Deathdreams
22.04.2010, 20:35
В переменной $content содержимое страницы пользователя.
Показываю пример парсинга хеша , солёного id и постинга записи

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 с данными:
"act=get10&wall_hash=".$hash."&wpage=100000&seed=".iconv('CP1251', 'UTF-8', $text)."&fpage=1&mid=".$to_tmp[1]."&n=3"

Failure
22.04.2010, 20:43
хеш просто так не спарсишь,
найти его можно только в таком виде:

window.wall_post_hash = decodehash('32_bit_hash');

сама же функция decodehash

window.decodehash = function(hash) {
dec_hash(hash);
return window.decoded_hashes[hash];
}

еще одна функция decoded_hashes

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)
запрос постом:

$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);

Deathdreams
22.04.2010, 21:10
Failure, я помоему написал саму функцию отправки.
Даже функцию hash_decode на php.

mazaxaka
22.04.2010, 21:47
хм.. что то у меня не как не выходит отправить
$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";

Deathdreams
22.04.2010, 22:44
mazaxaka
я же написал, получи страницу того, кому нужно отправить (id1, например)
lol

mazaxaka
22.04.2010, 22:54
страница получена при авторизаци и хранится в $datа