Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) ВКонтакте - дата регистрации юзера / 5 сообщений из 5, страница 1 из 1
21.09.2014, 15:40
    #38752933
Kukuxumushu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) ВКонтакте - дата регистрации юзера
Доброго времени суток!
Ржавый чайник просит помощи, желательно от людей, уже ПЫТАВШИХСЯ сделать такое или СДЕЛАВШИХ.
Всем известно, что API ВК не выдает дату регистрации юзеров. Также всем известно, что существует сервис , который эту досадную оплошность исправляет. Поковырявшись в кодах сервиса, можно обнаружить, что он имеет на первый взгляд примитивную защиту от ботов - Sid в куках и хэш-функцию, которую я легко распотрошил и перевел на PHP. Сделал вот такой код
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?php
$k=substr(file_get_contents('http://api.smsanon.ru'),1036,10);
$h="";
for($i=0;$i<10;$i++)
  {
  $tmp=$k[$i];
  for($j=0;$j<10;$j++)
   {
   $tmp=$tmp[0] ^ $k[$j];
   }
  $h.=$tmp;
  }
$s=substr($http_response_header[8],4,44)."\r\n";
$context=stream_context_create(array('http'=>array('method'=>'POST',
                                                   'header'=>'Content-Type: application/x-www-form-urlencoded\r\n'.$s,               
                                                   'content'=>'paramId='.$_POST['viewer_id'].'&hash='.$h
                                                  )
                                    )
                               );
echo file_get_contents('http://api.smsanon.ru/vk.com',false,$context);
?>


но сервак упорно распознает, что я бот и выдает "-1".
Вопросы:
1. Правильно ли я вытаскиваю и отсылаю обратно куки?
2. Правильно ли я вообще формирую контекст?
3. Может быть в заголовках должно быть что-то еще?
4. А может вообще существуют более простые способы узнать дату регистрации?
Предчувствую злорадство, сразу хочу сказать:
1. Да, я ржавый чайник, не надо отсылать меня ставить PHP-сервер с дебаггером, у меня на его конфиг уйдет месяц, поэтому и прошу высказаться тех, кто уже в курсе дела.
2. Хэш-функция работает ПРАВИЛЬНО, это всё проверено.
3. Сервис нормально функционирует, если в куках ему отправлять только SID, остальные там какие-то мусорные, это тоже проверено.
4. Подключать CURL ради 5 строк кода у меня тоже желания мало, и я сильно сомневаюсь что это как-то поможет.
...
Рейтинг: 0 / 0
21.09.2014, 15:42
    #38752935
Kukuxumushu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) ВКонтакте - дата регистрации юзера
Адрес сервиса что-то вырезался http://api.smsanon.ru
...
Рейтинг: 0 / 0
21.09.2014, 21:50
    #38753077
Kukuxumushu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) ВКонтакте - дата регистрации юзера
Вопрос решён.
Как всегда, дело оказалось во вселенской тупости - вместо одинарных кавычек должны были быть двойные.
Кстати, если что, даже сам гугл не знает способа автоматического определения даты регистрации ВК, так что пользуйтесь))
...
Рейтинг: 0 / 0
21.09.2014, 22:58
    #38753105
Kukuxumushu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) ВКонтакте - дата регистрации юзера
Ну всё, моё творение отлажено и готово к работе))
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
<?php
// В POST-запросе передается только id юзера
header("Content-Type: text/html; charset=utf-8");  // Переключаем кодировку

$k=substr(file_get_contents('http://api.smsanon.ru',false,$context),1036,10);  // Парсим идентификатор
$h="";
for($i=0;$i<10;$i++)  // Вычисляем хэш
  {
  $tmp=$k[$i];
  for($j=0;$j<10;$j++) $tmp=$tmp[0] ^ $k[$j];
  $h.=$tmp;
  }
$s=substr($http_response_header[8],4,44);  // Сохраняем SID из куки
$context=stream_context_create(array('http'=>array  // Формируем запрос
         ('method'=>"POST",
          'header'=>"Content-Type: application/x-www-form-urlencoded\r\n".$s,  // Подставляем SID
          'content'=>"paramId=".$_POST['id']."&hash=".$h  // Подставляем id и хэш
         )));
$date=file_get_contents('http://api.smsanon.ru/vk.com',false,$context);  // Отправляем запрос
$pos1=strpos($date,"&nbsp");  // Парсим дату регистрации в ответе
$pos2=strrpos($date,"&nbsp");
$day=substr($date,$pos1-2,2);  // Парсим день
if($day[0]=='>') $day[0]='0';  // Добавляем ноль к однозначному дню
$mounth=substr($date,$pos1+6,$pos2-$pos1-6);  // Парсим месяц
$year=substr($date,$pos2+6,4);  // Парсим год
switch($mounth)  // Конвертируем месяц из названия в число
 {
 case "января"  :$mounth="01"; break;
 case "февраля" :$mounth="02"; break;
 case "марта"   :$mounth="03"; break;
 case "апреля"  :$mounth="04"; break;
 case "мая"     :$mounth="05"; break;
 case "июня"    :$mounth="06"; break;
 case "июля"    :$mounth="07"; break;
 case "августа" :$mounth="08"; break;
 case "сентября":$mounth="09"; break;
 case "октября" :$mounth="10"; break;
 case "ноября"  :$mounth="11"; break;
 case "декабря" :$mounth="12"; break;
 }
$date=$year."-".$mounth."-".$day." 00:00:00";  // Приводим дату к стандартному виду
echo strtotime($date); // Отправляем дату в POSIX-формате
?>
...
Рейтинг: 0 / 0
23.09.2014, 00:38
    #38754095
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PHP) ВКонтакте - дата регистрации юзера
Kukuxumushu,

Какой-то smsanon, нах... оно вообще кому нужно? Зачем ты сюда запостил это?
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) ВКонтакте - дата регистрации юзера / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]