Як я всіх подивився...

Як я всіх подивився...

… а потім ще й лайків понаставив.


Все почалося з того, що на одному сайті знайомств я виявив, що фотографії там зберігаються без обробки.

Звичайно, для аватарів, стрічок і тому подібного фотографії масштабувалися, обрізалися і піддавалися іншим деформаціям, але при перегляді можна було натиснути на посилання «Оригінал фото» і відкривався дійсно оригінал з усім вмістом (EXIF), якщо воно там звичайно було. Rarjpeg теж працював. Так, якщо заливали фото у форматі PNG, то воно перетворювалося на JPEG.

Було прийнято рішення скачувати фотографії і дивитися, хто що про себе, сам того не підозрюючи, виклав у відкритий доступ. Якщо користувач не поставив у налаштуваннях зворотного, то анкету з однією фотографією видно навіть незареєстрованим користувачам. Взагалі мене цікавили геотеги, все інше було вдруге.

Для початку обмежимося анкетами жіночої статі у віці від 0 до 99 років з фотографіями. Анкет таких на той момент вийшло 10611. Настав час вибирати інструмент, за допомогою якого інформація про анкети, а потім і з анкет, буде оброблятися. Вибір припав на C #. Для пошуку навіть не потрібно авторизовуватися на сайті.

Дивимося, скільки сторінок знайшлося, робимо цикл, скачуємо результати пошуку. Маємо 443 сторінки. Наступним кроком потрібно пройтися цими сторінками і витягнути з них id анкет. На цьому етапі вийшла база даних, що складається з id, ніка і віку.

Потрібно було завантажити сторінки. На цьому етапі вже потрібно було бути авторизованим на сайті. Всім мої спроби авторизуватися через webclient не увінчалися успіхом, як і спроба взяти куки з webbrowser. У справу вступає wget. За допомогою excel був створений файл cmd, що складається з 10611 рядків call getPage% id і файл getPage.cmd, який викликав wget з параметрами збереження сесії, завантаження кук з файлу cookies.txt, який був створений за допомогою firebug, і юзерагентом того ж firefox. Сторінки, до речі, скачувалися зі старої версії сайту, тому, що на ній виводилася дата реєстрації анкети, дата редагування і дата останньої активності, також, іноді, могло бути присутнє поле «ім'я», якщо користувач його вказував. На виході вийшло 850 МБ файлів html. Коли скрипт закінчив роботу, на сайті в розділі «Ви дивилися» було чотири з половиною сотні сторінок переглянутих анкет. Для обробки анкет знову повернувся до C #. Після обробки файлів анкет в наявну базу даних були додані дані про ім'я, а також дати. Траплялися дуже цікаві екземпляри. Наприклад, активна анкета, створена в 2005 році і жодного разу після цього не редагована.

При обробці файлів анкет з'ясувалося, що деякі з них заблоковані і ніякої інформації з них отримати не вдасться. Посилання на фото також були отримані і почалося скачування. Зрештою вийшло 46235 файлів, 12.5 Гб фотографій. Правда, деякі вже встигли видалити фотографії і тоді скачувався файл розміром 1 на 1 піксель. Для роботи з метаданими було обрано exiftool.

Він прекрасно сам обробив всі піддиректорії, а результати видав у текстові файли поруч з фотографіями. Як виявилося, всього 1% від 46 тисяч фото містили геотеги. До цього моменту на мою сторінку стали заходити ті, до кого я зазирнув. Вже до вечора було під сотню гостей. Деякі ставили лайки, чим вивели мої фото в різні топи. Я вирішив відплатити тим же.

Тренування «на кішка» пройшло на власній анкеті. Стало зрозуміло, що все відбувається через ajax і запит json із зазначенням дії, в нашому випадку «ставимо лайк», id фото, id анкети з фото, id json. Площа ураження була зменшена до півтори тисячі анкет. За допомогою C # були створені файли json, 7334 штуки, які за допомогою wget були відправлені на сайт.

Швидка перевірка браузером, показала, що килимове лайкометання пройшло успішно. У залишку маємо 12.5 Гб фотографій і збільшену популярність на сайті знайомств.