Добрый день. Давайте разберем два способа, как можно отправить личное сообщение ВКонтакте задним числом.
Причем первый способ является обязательным дополнением второго способа. Если не получиться первой методом, то обязательно получиться вторым. Если Вы не программист – не переживайте. Вам не нужно быть им, чтобы все сделать правильно. Поверьте, за Вас уже все давно сделано.
Однако, возникает вопрос, а зачем и кому это вообще нужно? Все очень просто. Ситуации в жизни бывают разные. Например, кто-то от Вас ждет важного документа, а Вы забыли его отправить… Данная статья поможет Вам исправить такого рода ситуации.
Но если ВКонтакте это защищенная сеть, то как такое возможно? Да, это правда, что взломать аккаунт ВКонтакте сложно. Но никто о взломе и не говорит. Мы говорим о небольшом лайфхаке, при условии, полного доступа к двум аккаунтам ВК.
Метод #1. Изменение временного пояса на сервере.
Перед тем как мы приступим, создадим два аккаунта ВКонтакте. Нам нужно иметь полный доступ к ним. А так же нужно получить доступ к API.
После того, как мы создали два аккаунта — авторизуемся. Процесс авторизации приложения состоит из 3-х шагов (https://vk.com/dev/auth_mobile):
1. Открытие окна браузера для аутентификации пользователя на сайте ВКонтакте.
2. Разрешение пользователем доступа к своим данным.
3. Передача в приложение ключа access_token для доступа к API.
Для авторизации нужно послать запрос на адрес https://oauth.vk.com/token, передав следующие обязательные GET параметры: grant_type, client_id, client_secret, username,password.
Пример запроса:
https://oauth.vk.com/token?grant_type=password&client_id=1914441&…=***&username=***&password=***
Пример ответа:
{«access_token»:»9d77c727986d7668986d7668049870402D1986d986d76684bbc9b1bf8488de9″, «expires_in»:0,»user_id»:85635407}
Получили token. Отлично.
Далее, нам нужно заказать качественный и абузоустойчивый VPS на CentOS. Думаю, с этим справиться каждый.
Теперь нам нужно изменить время на нашем сервере. Настройка самого сервера описывается здесь:
http://habrahabr.ru/post/246223/
Не забываем про серверные данные ВКонтакте:
• ip: 87.240.182.185
• browser: Mozilla/5.0 (vkShare; +http://vk.com/dev/Share)
• host: srv185-182-240-87.vk.com
• port: 36035
Изменение времени можно найти здесь:
http://moonback.ru/page/centos-time
После того как мы изменили время на сервере, можно начать отправлять сообщения через message.send().
Дело в том, что в документации к объекту message поля “date” говориться следующее: объект message возвращает поле “date” — дату отправки сообщения в формате unixtime. (https://vk.com/dev/message)
Поэтому мы отправляем сообщение просто с другим unixtime. Здесь главное, чтобы сервер ВКонтакте “узнал” Ваш VPS как свой. CentOS позволяет это сделать.
Все очень просто, не правда ли?
Метод #2. Отправка сообщений в качестве пересылаемого сообщения.
Если первый метод у Вас не сработал – ничего страшного. Он все равно необходим для второго способа.
И так, у нас есть настроенный VPS сервер. Заходим в социальную сеть ВКонтакте. Создаем переписку обычным способом между двумя аккаунтами. Теперь наша задача — обратиться к этим сообщениям и изменить их unixtime.
Приступим. Для того чтобы получить личные сообщения, мы можем использовать данный исходный код:
https://github.com/coldmind/vk-dialogue-export.py/blob/master/vk-dialogue-export.py
Но, если он для Вас выглядит слишком сложным, можно попробовать сделать только при помощи VK API:
https://vk.com/dev/messages.getHistory
Здесь все просто. Самое важное для нас это то, что мы должны правильно обратиться к полю “date” объекта message:
Берем за основу данный исходный код:
https://github.com/mrDoctorWho/VK-Exporter/blob/master/exporter.py
Из него нам нужно взять следующее:
getMessageHistory(self, count, uid, rev=0, start=0):
«»»
Gets messages history
«»»
values = {«count»: count, «user_id»: uid, «rev»: rev, «start»: start}
return self.method(«messages.getHistory», values)
Либо просто пользуемся php:
[php]
global $array;
$vk = new VK;
$vk->Start(’email’, ‘pass’);
$res = $vk->Send(‘messages.getHistory’, ‘count=1&user_id=12345&v=4.100’);
$x = 1;
$ofX = 0;
$count = $res[‘response’][0] / 200;
$floor = $count + 1;
pre(‘Time of work ‘.floor($floor*1).’ sec.’);
while($x < floor($floor))
{
$y = 1;
$offset = 200 * $ofX;
$res = $vk->Send(‘messages.getHistory’, ‘count=200&offset=’.$offset.’&user_id=12345&v=4.100′);
sleep(1);
while($y < count($res[‘response’]))
{
if(trim($res[‘response’][$y][‘date’][‘type’]) != false)
{
$array[] = $res[‘response’][$y][‘date’];
}
$y++;
}
$ofX++;
$x++;
}
file_put_contents(‘date.txt’, serialize($array));
echo ‘Done.’;
[/php]
Это просто, так как таких методов очень много в интернете.
Получили файл, где хранятся данные про unixtime. Меняем их на свою дату. И возвращаем назад на сервер аналогичным способом как и в первом случае, только в виде пересылки.
В данном случае, успех гарантирован.
Хочу заметить, что я не писал полностью все исходные коды, а только самые важные и необходимые. Все остальное написать очень легко. В итоге, как видите, отослать личные сообщение задним числом ВКонтакте очень просто. Всем спасибо.
Здраствуйте.можно ли еще переслать сообщение задним числом??
Думаю, что нет.
Действительно, очень просто! И оказалось, что это работает не только для ВК! Привет из 2061 года!
Скажие пожалуйста какой нибудь из методов еще работает?
Нет к сожалению уже не работает.
Здраствуйте. Подскажите, пожайлуста, а можно делать публикации в контакте задним числом? Если это возможно, буду очень рада помощи. ce100394@mail.ru
Заранее благодарна за ответ
Нет, данный способ уже не работает.
Подскажите, а возможно сделать пост на стене задним числом?
Нет, это уже не актуально к сожалению.
Помогите пожалуйста, можно таким или похожим способом выложить фото задним числом? (без претензий на авторское право) просто свои фото?
Думаю что нет. Уязвимость мне кажется уже закрыли.
Асид, пожалуйста, ЕСЛИ ТЫ ЭТО ВИДИШЬ — ОТПИШИ В СКАЙП:
Temalucks
Отпиши — я отвечу!
Написал.
Спасибо. За то что объяснили где что находится. Мой программист если, что обратится к Вам за консультацией на почту или по скайпу в основном по поводу API.