Как я всех посмотрел…

в 7:01, , рубрики: C#, data mining, wget, антипрограммирование, метки:

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

Всё началось с того, что на одном сайте знакомств я обнаружил, что фотографии там хранятся без обработки.

Конечно, для аватаров, лент и тому подобного фотографии масштабировались, обрезались и подвергались другим деформациям, но при просмотре можно было нажать на ссылку «Оригинал фото» и открывался действительно оригинал со всем содержимым (EXIF), если оно там конечно было. Rarjpeg тоже работал. Да, если заливали фото в формате PNG, то оно преобразовывалось в JPEG.

Было принято решение скачивать фотографии и смотреть, кто что о себе, сам того не подозревая, выложил в открытый доступ. Если пользователь не поставил в настройках обратного, то анкета с одной фотографией видна даже незарегистрированным пользователям. Вообще меня интересовали геотеги, всё остальное было вторично.

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

Смотрим, сколько страниц нашлось, делаем цикл, скачиваем результаты поиска. Имеем 443 страницы. Следующим шагом нужно пройтись по этим страничкам и вытянуть из них id анкет. На этом этапе получилась база данных, состоящая из id, ника и возраста.

image

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

image

При обработке файлов анкет выяснилось, что некоторые из них заблокированы и никакой информации из них получить не удастся. Ссылки на фото также были получены и началось скачивание. В конечном итоге получилось 46235 файлов, 12.5 Гб фотографий. Правда, некоторые уже успели удалить фотографии и тогда скачивался файл размером 1 на 1 пиксель. Для работы с метаданными был выбран exiftool.

image

Он прекрасно сам обработал все поддиректории, а результаты выдал в текстовые файлы рядом с фотографиями. Как оказалось, всего 1% от 46 тысяч фото содержали геотеги. К этому моменту на мою страницу стали заходить те, к кому я заглянул. Уже к вечеру было под сотню гостей. Некоторые ставили лайки, чем вывели мои фото в различные топы. Я решил отплатить тем же.

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

image

Быстрая проверка браузером, показала, что ковровое лайкометание прошло успешно. В остатке имеем 12.5 Гб фотографий и возросшую популярность на сайте знакомств.

image

Автор: kpetob

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js