Дивимося частину чужого обраного ВКонтакте


Кадри з фільму «50 відтінків сірого»

На цей раз за допомогою нехитрого шматка коду на javascript заглянемо в таємничі глибини людських уподобань. А саме отримаємо частину списку закладок («лайків» записів спільнот) аккаунта ВКонтакте.

За даними wordstat.yandex.ru, до 2000 разів на місяць у пошукового робота запитують «як подивитися хто що лайкает». Відповіддю в пошуковій видачі є вірусна програмка LikeCheсker, яка на поставлене питання насправді не відповідає. А ми відповімо.

Навіщо це потрібно? Якщо вірити інтернету (а йому краще не вірити), наприклад, почерку людини можна визначити його характер. Наприклад,
Саркастичных людей можна розпізнати по написанню букви «е». Чим незвичніше зображення точок, розміщених над цією буквою, тим гостріше його почуття гумору і яскравіше його здатність до наслідування.
Є в мене припущення, що по картинках і постам, які людина «лайкает» можна побудувати більш точний портрет особистості, ніж за його почерку. Однак для отримання цієї інформації треба трохи попрацювати.

Опис ситуації
ВКонтакте
Раніше інформація про те, які записи користувач зазначає сердечком була повністю конфіденційна і видно тільки самому користувачеві. Після чергового редизайну конфіденційність пропала. Якщо користувач А є другом користувача Б і вони підписані на одне і те ж співтовариство, то він може дізнатися під конкретної записом цього співтовариство «лайкнув» її користувач Б.

У разі десктопної версії VK.com інформація про те, що користувач Б її «лайкнув» відображається у вигляді його аватара, якщо навести мишку на сердечко:


Постановка завдання
Нашою метою буде отримати список записів, які користувач зазначив сердечком. Не знаю чи можна за допомогою VK API дістатися до цієї інформації (побіжним поглядом документації такої можливості не виявив) ми підемо простим шляхом — через браузер.

Отже, для того, щоб отримати список чужого обраного нам потрібно:

  • Бути з жертвою друзями в ВК
  • Підписатися на ті ж спільноти і він
  • Пробрутфорсить всі записи спільнот
З першим пунктом все зрозуміло, другий і третій будемо автоматизувати.

До справи
Щоб не чіпати реально існуючих друзів зареєструємо два аккаунта і подружим їх.
Витрачаємо 30 рублів, купуємо дві віртуальні сімки (без телефону VK не реєструє) і реєструємо героїв фільму «50 відтінків сірого»:



Акаунтом Грея користуємося як зазвичай — підписуємося вручну на різні спільноти і відзначаємо «лайками» різні записи в стрічці.

З аккаунта Анастейші починаємо полювання на «Лайки». Допомагати нам сьогодні буде Javascript. Можна використовувати букмарклет, можна зробити Google Extension. Ми підемо по-простому, через Developer Console (F12).

1. Отримуємо список спільнот на сторінці жертви:

var x = document.getElementsByClassName("module_body clear_fix");
for (var i = 0; i < x[1].children.length; i++) {
console.log(x[1].children[i].children[0].children[0].href + " " + x[1].children[i].innerText)
}

2. Підписатися на них можна ось так:

document.location="https://vk.com/sci";
document.getElementById("public_subscribe").click()

3. Відкриваємо новинну стрічку і прокручуємо n раз:

document.getElementById("show_more_link").click();

4. Брутфорс записів у стрічці:

var z = document.getElementsByClassName("post_like _like_wrap")
for (var k= 0; k< z.length; k++){
z[k].onmouseover();
z[k].focus();
}
var y = document.getElementsByClassName("like_tt_owners me_hidden _content")
for (var j= 0; j< y.length; j++){
for (var i = 0; i < y[j].children.length; i++) {
if (y[j].children[i].title == "Крістіан Грей"){
console.log( "https://vk.com/feed?w=wall" + z[j].onmouseover.toString().split("'")[1]);
}
}
}

Результат:



Успіх!

Висновок
«it's not a bug — it's a feature» скажіть ви і можливо я з вами погоджуся, але мені б хотілося бачити в налаштуваннях приватності галочку виключення такої «feature».

Звичайно, ця інформація не прям така особиста і її важко використовувати проти людини. Тим не менше я впевнений, що бувають випадки, коли такий аналіз, на додаток до чого-небудь або самостійно допоможе зрозуміти думки людини, його характер, політичні, релігійні погляди та інше. Повторюся — не для всіх і не завжди.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.