Как найти базу данных в контакте

Где найти базу данных пользователей «ВКонтакте» — полный список страниц вместе с удаленными

На чтение 4 мин Просмотров 1.5к.

Я расскажу подписчикам о каталогах пользователей ВК, которые помогут проверить статистику, проанализировать личный профиль, узнать скрытые данные конкурентов. Сервисы понадобятся не только собственникам коммерческих аккаунтов, но и желающим сделать свою страницу привлекательнее.

Содержание

  1. Для чего нужен каталог пользователей «ВКонтакте»
  2. Сервисы, позволяющие просмотреть список страниц ВК
  3. Насколько безопасно использование
  4. Бесплатны ли подобные каталоги
  5. Как организовать поиск по каталогу «ВКонтакте»
  6. Обзор

Для чего нужен каталог пользователей «ВКонтакте»

Каждая учетная запись имеет уникальный номер. По нему легко найти человека в ВК или на специальных сайтах, содержащих списки пользователей. Они показывают личные данные людей, альбомы с фотографиями, видео, доступные для всех. Порталы не имеют собственного хранилища, не отвечают за достоверность информации. Источником сведений является «ВКонтакте».

Преимущества подобных каталогов:

  1. Работают даже во время технических неполадок в мессенджере.
  2. Доступен поиск без авторизации и регистрации в VK.
  3. Удобно просматривать, как выглядит личный профиль со стороны, проверять настройки приватности.
  4. Можно заглянуть на страницу контакта, который вас заблокировал.

А также порталами можно пользоваться в странах, где «ВКонтакте» запрещен, например, в Китае, Северной Корее, Таджикистане и Украине.

Сервисы, позволяющие просмотреть список страниц ВК

Сайты с каталогами имеют похожий интерфейс и возможности. Расскажу о 5 самых популярных, с которыми мне доводилось работать.

  1. vkfaces. Содержит данные о пользователях, видеороликах, сообществах. Вкладка «Люди» поделена на секции, в каждой – по 1 млн человек. Доступен список знаменитостей, где можно посмотреть, какая ведется активность на страницах любимых артистов. Раздел «Видео» содержит то, что смотрят сейчас, или популярные 250 роликов за заданный период. В «Группах» указан рейтинг, количество подписчиков, другая информация о каналах. На сайте более 700 млн активных и заблокированных аккаунтов. Есть Pro версия с дополнительными функциями.
  2. vk-look.com. Здесь около 600 млн действующих и удаленных профилей. Нельзя найти человека по имени, но можно по ID, ссылке или городу. Интервал состоит из 1 млн человек.
  3. «ВКонтакте 24». Содержит рейтинг звезд, сообществ, топ-хештегов. Поиск работает только по ссылке на аккаунт или идентификационному номеру. Мне показалось неудобным то, что страницы со списками не пронумерованы. Диапазон только по 10 тыс. человек, много рекламы, которая мешает работе.
  4. «ВК Лица». Здесь есть перечисление пабликов, людей, в т.ч. знаменитостей. К тому же имеются советы по пользованию VKontakte, например, как слушать музыку без ограничений, как изменить свой ID и т.д.
  5. vk-barkov.net. Сайт задействуют для поиска целевой аудитории, сбора открытых данных о зарегистрированных не только «ВКонтакте», но и в других социальных сетях. Для получения сведений потребуется вход через ВК.

Эти сервисы имеют сильные и слабые стороны, но способны справиться с поставленной задачей.

Сервис vkfaces

Один из популярных сервисов — vkfaces.

Насколько безопасно использование

Чтобы узнать общую информацию, не требуется регистрироваться или вводить личные сведения, что говорит о безопасности. Но этими списками могут пользоваться распространители спама.

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

Бесплатны ли подобные каталоги

Удобство порталов в том, что за ознакомление с общей информацией платить не нужно. Но для получения дополнительных статистических данных, возможности отслеживать действия друзей, некоторые сервисы предлагают зарегистрироваться. Это делается с целью защитить пользователей социальной сети от массовых рассылок рекламного характера.

Как организовать поиск по каталогу «ВКонтакте»

Обнаружить человека без уникального номера аккаунта сложно. Придется пролистать десяток страниц в поисках подходящего диапазона.

Чтобы узнать ID, откройте нужный профиль в ВК.

В адресной строке расположена ссылка, содержащая цифры. Это и есть идентификатор, по которому легко можно найти пользователя. Также можно попытаться выследить человека по имени или месту нахождения, если на сайте предусмотрена такая возможность.

Обзор

Специалист по социальным коммуникациям Astra Media Group Александр Королев рассказал «Нетологии» о полезных сервисах по поиску и сбору баз пользователей для ретаргетинга в социальной сети «ВКонтакте», а также оценил их функциональность и стоимость.

7 сервисов по сбору баз пользователей
для ретаргетинга во «ВКонтакте»

Находит целевую аудиторию, выгружает базу ID пользователей. Впоследствии ее можно экспортировать и загрузить в рекламный кабинет «ВКонтакте» в качестве собственной группы ретаргетинга.«Церебро» умеет не только искать сообщества, в которых состоит нужная аудитория, но и собирать ID участников обсуждений, администраторов сообществ, друзей пользователя, а также по дням рождения.По моему опыту, при использовании «Церебро» стоимость клика снижается в 2−4 раза в зависимости от тематики. CTR возрастает за счет качественного отбора аудитории, которой можно показывать рекламу.

7 сервисов по сбору баз пользователей
для ретаргетинга во «ВКонтакте»

Функциональность схожа с «Церебро», но есть несколько важных особенностей.Например, Pepper.ninja работает еще и с Facebook, правда, ищет там только по аудитории сообществ. Также сервис умеет собирать аудиторию со страниц сайтов, где установлен виджет комментариев «ВКонтакте».

7 сервисов по сбору баз пользователей
для ретаргетинга во «ВКонтакте»

Выбирает пользователей по пересечению аудитории сообществ. Собирает людей, которые состоят в схожих по тематике группах. Таким образом, мы получаем базу только из тех, кто действительно интересуется тематикой.Учитывает активность на стене и в обсуждениях. Как и «Церебро», сервис считает абсолютно все лайки и репосты, а также комментаторов, фильтрует финальный список под нужный запрос. Для работы с конкретным постом есть функция «Активность в посте».Собирает ID всех друзей и подписчиков пользователя во «ВКонтакте».

7 сервисов по сбору баз пользователей
для ретаргетинга во «ВКонтакте»

Находит нужных пользователей «ВКонтакте» по упоминаниям и записям на стенах. Также есть функция экспорта базы пользователей.

7 сервисов по сбору баз пользователей
для ретаргетинга во «ВКонтакте»

Сервис GetTarget появился в конце лета прошлого года и уже получил множество хороших отзывов от SMM-специалистов. Он позволяет не просто собирать аудиторию сообществ в группы для ретаргетинга, но и выбирать из общей массы только новых, еще горячих участников или, наоборот, уже вышедших из сообщества. В интерфейсе личного кабинета можно добавлять сообщества, наблюдать за аудиторией и отслеживать статистику.

7 сервисов по сбору баз пользователей
для ретаргетинга во «ВКонтакте»

Отличается от «Церебро» красивой графической оболочкой и более низкой стоимостью. Кроме «ВКонтакте», работает еще и с Instagram. Умеет искать группы, активную аудиторию, подписчиков сообществ, друзей пользователей, а также анализировать данные.

7 сервисов по сбору баз пользователей
для ретаргетинга во «ВКонтакте»

Помимо стандартной для похожих сервисов функциональности, отслеживает новичков нужных сообществ интересующей тематики. Один из самых быстрых инструментов — парсинг базы до 500 000 человек — занимает несколько секунд.

Сервис умеет искать любое количество сообществ по ключевым словам и фильтрам. На выходе доступна информация в том числе о количестве ботов, среднем количестве постов в день и показателе активности (ER).

7 сервисов по сбору баз пользователей
для ретаргетинга во «ВКонтакте» P. S. Чтобы больше узнать о том, как превратить сообщество в эффективный канал интернет-маркетинга или стать профи таргета, записывайтесь на онлайн-интенсив «SMM-менеджер».

Мнение автора и редакции может не совпадать. Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.

Время на прочтение
15 мин

Количество просмотров 216K

Etan Hunt
кадр из фильма Миссия Невыполнима II

Эта история началась пару месяцев назад, в первый день рождения моего сына. На мой телефон пришло СМС-сообщение с поздравлением и пожеланиями от неизвестного номера. Думаю, если бы это был мой день рождения мне бы хватило наглости отправить в ответ, не совсем культурное, по моему мнению, «Спасибо, а Вы кто?». Однако день рождения не мой, а узнать кто передаёт поздравления было интересно.

Первый успех

Было решено попробовать следующий вариант:

  • Добавить неизвестный номер в адресную книгу телефона;
  • Зайти по очереди в приложения, привязанные к номеру (Viber, WhatsApp);
  • Открыть новый чат с вновь созданным контактом и по фотографии определить отправителя.

Мне повезло и в моём случае в списке контактов Viber рядом с вновь созданным контактом появилась миниатюра фотографии, по которой я, не открывая её целиком, распознал отправителя и удовлетворенный проведенным «расследованием» написал смс с благодарностью за поздравления.

Сразу же за секундным промежутком эйфории от удачного поиска в голове появилась идея перебором по списку номеров мобильных операторов составить базу [номер_телефона => фото]. А еще через секунду идея пропустить эти фотографии через систему распознавания лиц и связать с другими открытыми данными, например, фотографиями из социальных сетей.

Естественно на пункте 3 (по фотографии определить отправителя) нас может настигнуть неудача и у этой неудачи есть 6 вариантов:

  • Номер не привязан к WhatsApp или Viber
  • Пользователь есть, но он не устанавливал себе Фото профиля
  • Фото установлено, но настроены параметры «приватности» или «конфиденциальности» («Показывать фото только моим контактам», а Вас в этом списке нет)
  • Вам доступно фото, но на нём изображён кот
  • На фото человек, но черт лица и/или особенностей телосложения не разобрать (отсутствие резкости, маленькое разрешение, затемнённые очки, шляпы, кепки, грим)
  • На фотографии владелец номера; анфас; высокая четкость, но вспомнить этого человека вы не можете

Четвертый пункт (на фото кот) имеет множество вариантов: это и фотографии знаменитостей, и персонажи мультфильмов, и фотографии еды, автомобилей, оружия и пр.

Испытания на малых порядках.

В качестве пробы пера было решено экспериментировать на своём списке контактов. На телефонах с ОС Android фотографии контактов Viber хранит в папке /sdcard/viber/media/User photos в виде [Хэш].jpg. Файлы сохраняются только при условии, что вы общались с данным контактом или хотя бы открывали его профиль и удаляются через некоторое время. Для эксперимента вручную откроем/закроем профили 20-ти пользователей.

Часть знакомых, для которых были найдены файлы были также найдены в социальных сетях, загружены в программу Picasa с включенной опцией «Распознавать лица автоматически». Распознанные программой лица затем были названы соответственно их владельцам. На следующем шаге скармливаем Picas’e папку с фотографиями из Viber. Для схожих лиц в окне «Пользователи» появляются иконки с вопросительным знаком.

В моём случае для исходных 20 пользователей Viber Picasa обнаружила только два совпадения. Эти два случая при этом достаточно комично совпали: в каждой паре фотографии различались между собой, но были сняты в один и тот же день (для первого человека на двух фотографиях отличался поворот головы и наличие/отсутствие улыбки, для второго отличалась только улыбка).

image

Промежуточный итог довольно успешный:
Выборка из Viber: 20 (все подряд и с котами и с едой)
Выборка из VK: 5 (только если на фото можно кого-то распознать зрительно)
Совпадений верных: 2
Совпадений ложных: 0

Начинаем перебор

Попробуем получить данные с помощью телефона. Viber берёт контакты из телефонной книги, которая в свою очередь в ОС Android связана с Google Contacts, которые имеют ограничение в 25 000 номеров на аккаунт. На сегодняшний момент количество номеров мобильных операторов, закрепленных за г. Москва — 93 311 000. Так что идея получить базу таким вот «решением в лоб» отпадает. Тем более, что даже если Viber возьмет хотя бы первую пачку в 25 000 номеров, все равно в каждый профиль нужно зайти, а потом еще связать получившийся файл [Хэш].jpg с конкретным номером (что, наверное, можно отследить по дате создания файла, но это всё равно очень трудоёмко и долго).

Решение было найдено быстро: в сети есть программная реализация другого популярного сервиса — WhatsApp. Все вызовы идут через php. Есть готовый скрипт регистрации нового пользователя и собственно пример вызова getProfilePicture. Чтобы начать процесс нужен *nix сервер и нужно понять насколько можно обнаглеть с частотой и скоростью запросов. Для эксперимента был написан php код, который авторизуется в Whatsapp и в бесконечном цикле получает/не получает для номеров +7XXXXXXXXXX getProfilePicture и выдаёт на экран временную метку. Этот код при первом и последующих запусках доходил до 220-250 номеров и уходил в timeout — пробуем после каждого 200-го делать паузу sleep(5) — не помогает, всё равно timeout. Пробуем завершить процесс и сразу запустить заново — успех. Соответственно имеем дело либо с ограничением на сервере (необходимо после 200 запросов заново авторизоваться), либо с ошибкой в этой php реализации. Экспериментировать я не стал, а убил двух зайцев, переписав php скрипт, чтобы он обрабатывал только 200 номеров и добавив управляющий скрипт на Bash, который в цикле запускает php с параметром $startPhoneNumber и дожидается его завершения.

Таким образом получили работающую схему перебора со скоростью 5,7 номеров в секунду.
Для обработки всей московской ёмкости нам потребуется:

93 311 000 (номеров) / 5.7 (номеров в секунду) / 60 (секунд) / 60 (минут) / 24 (часа) ~ 190 дней.

Многопоточность

Авторизация в WhatsApp идет через связку

username — номера телефона в формате +7XXXXXXXXXX
password — полученный через скрипт регистрации (для регистрации нужна работающая симкарта для получения кода подтверждения)
nickname — может быть любым

WhatsApp запрещает >1 авторизации на один username одномоментно. В связи с чем в официальном магазине было закуплено три SIM-карты оператора Мегафон по 200р. каждая. С одного и того же сервера на ОС Centos все три номера были зарегистрированы в WhatsApp и на всех трёх было запущено по скрипту с кусочком емкости «Билайн Бизнес». Соотношение количества номеров к сохраненным фотографиям держалось в районе 10 к 1-му; потом разница увеличилась благодаря «сотням» и «тысячам», которые видимо еще не распределены и для всего диапазона не дают ни одного изображения.

Блокировка

В лицензионном соглашении WhatsApp (с которым я соглашаюсь, когда прохожу регистрацию) сказано:

Отрывок из соглашения ENG

C. You agree not to use or launch any automated system, including without limitation, «robots,» «spiders,» «offline readers,» etc. or «load testers» such as wget, apache bench, mswebstress, httpload, blitz, Xcode Automator, Android Monkey, etc., that accesses the Service in a manner that sends more request messages to the WhatsApp servers in a given period of time than a human can reasonably produce in the same period by using a WhatsApp application, and you are forbidden from ripping the content unless specifically allowed. Notwithstanding the foregoing, WhatsApp grants the operators of public search engines permission to use spiders to copy materials from the website for the sole purpose of creating publicly available searchable indices of the materials, but not caches or archives of such materials. WhatsApp reserves the right to revoke these exceptions either generally or in specific cases. While we don’t disallow the use of sniffers such as Ethereal, tcpdump or HTTPWatch in general, we do disallow any efforts to reverse-engineer our system, our protocols, or explore outside the boundaries of the normal requests made by WhatsApp clients. We have to disallow using request modification tools such as fiddler or whisker, or the like or any other such tools activities that are meant to explore or harm, penetrate or test the site. You must secure our permission before you measure, test, health check or otherwise monitor any network equipment, servers or assets hosted on our domain. You agree not to collect or harvest any personally identifiable information, including phone number, from the Service, nor to use the communication systems provided by the Service for any commercial solicitation or spam purposes. You agree not to spam, or solicit for commercial purposes, any users of the Service.

Отрывок из соглашения; примерный перевод

«Вы соглашаетесь не использовать или не запускать автоматизированные системы, которые посылают больше запросов на сервис WhatsApp, чем способен человек…»

Все мои SIM-карты заблокировали на третий день без объяснения причин. По логам видно, что отключение произошло в 00:22 по Москве по всем картам одновременно (карты успели обработать каждая около 500 000 номеров). Что интересно сервера WhatsApp сначала стали очень долго отвечать на запросы, а потом вообще перестали авторизовывать. На попытку зарегистрировать номер заново сервер отвечает “Failed; Reason: Blocked;“. При попытке зарегистрировать WhatsApp по-человечески с телефона выскакивает сообщение: «Извините, вы больше не можете пользоваться сервисом WhatsApp.»

Кроме того, что все три запущенных скрипта делали одно то же с одной и той же скоростью у них было много общего, чтобы заблокировать их одновременно, а именно: все логинились с одним и тем же nickname «V» и работали с одного и того же IP-адреса.

Усложняем схему

Считаем, что стали чуть-чуть (а именно на 600р. потраченные на те три SIM) умней. На этот раз покупаем 10 сим карт в «неофициальном магазине» у метро по 100р. за штуку. Усложняем скрипт, создаём массив симкарт и даём каждой свой nickname согласно списку актёров одного замечательного фильма:

Объявление массива

// username,"password","nickname"
$SIMDict = array( <br>
"SIM1" => array(7969XXXXXXX,"123123211231231231231231231=","Zooey"),
"SIM2" => array(7916XXXXXXX,"123123211231231231231231231=","Martin"),
"SIM3" => array(7985XXXXXXX,"123123211231231231231231231=","Sam"),
"SIM4" => array(7916XXXXXXX,"123123211231231231231231231=","Bill"),
"SIM5" => array(7985XXXXXXX,"123123211231231231231231231=","Mos"),
"SIM6" => array(7985XXXXXXX,"123123123211231231231231231=","Warwick"),
"SIM7" => array(7916XXXXXXX,"123123211231231231231231231=","Anna"),
"SIM8" => array(7985XXXXXXX,"123123123123123123123123121=","John"),
"SIM9" => array(7,"","Kelly"),
"SIM10" => array(7,"","Jason")
);

Заставляем каждую сим карту выходить через отдельный IP адрес

Наш Centos — виртуальный сервер, запущенный под гипервизором Hyper-V, что позволяет нам добавить в него еще 7 Ethernet адаптеров (ограничение Hyper-v: 8 Ethernet адаптеров + 4 legacy). Останется только заставить процессы php выходить в интернет каждый с разным ip адресом.

В системе по умолчанию есть подсистема ip namespaces (ip netns), которая позволяет полностью виртуализировать сетевой стек. Это означает что можно создавать так называемые namespac’ы (ns), и в рамках каждого отдельного ns будут свои адреса, маршруты, правила, dns и пр. В интернете не так много статей про ip netns, а те которые есть дают разные показания по использованию физических интерфейсов — некоторые пишут, что нельзя физический интерфейс добавить в namespace отличный от default, некоторые, что можно, но только связать через tap интерфейс, некоторые, что можно и без tap.

Создать семь secondary ip (alias) и раскидать их по разным namespace у меня не вышло, ни напрямую ни через tap интерфейсы. А вот вариант создать 7 namespace’ов и к каждому привязять отдельный физический интерфейс, несмотря на заверения интернет сообщества, удалось без проблем.

Команды настройки

LINUX

ip netns add net1 && ip link set netns net1 dev eth1
ip netns exec net1 ip addr add Y.Y.Y.71/24 dev eth1
ip netns exec net1 ip link set up dev eth1
ip netns exec net1 ip route add default via Y.Y.Y.1 
ip netns add net2 && ip link set netns net2 dev eth2
ip netns exec net2 ip addr add Y.Y.Y.72/24 dev eth2
ip netns exec net2 ip link set up dev eth2
ip netns exec net2 ip route add default via Y.Y.Y.1 

CISCO

ip nat inside source static Y.Y.Y.71 X.X.X.71
ip nat inside source static Y.Y.Y.72 X.X.X.72

Legacy adapter не заработал вообще, поэтому остановимся на 8-ми карточках.

Теперь скрипт Bash берёт на вход startNumber, endNumber, SIM, NS, где SIM имя симкарты в массиве, NS — имя namespace в котором запустить процесс php. Пример вызова:

./run.sh 79671380000 79671780000 SIM1 net1 &

Сам скрипт run.sh

...
start=$1
last=$2
net=$4
startParam="ip netns exec $net"
./pushme.sh "$3 $4" "$start begins"

while [ $start -lt $last ]
do

 $startParam php ./getProfiles.php instance=$start prefix=$start count=50 sim=$3 net=$4
 #> $3.log
 start=$(( $start + 50 ))

done
...

Делим емкость на кусочки меньше 2 000 номеров. Также добавляем в Bash и php скрипты Push-уведомления через Pushover («7XXXXX start», «7XXXXX finish», «Houston we have a problem»)

Последнее отправляем при нестандартных ответах сервера WhatsApp, либо при очень долгом (>5 секунд) отсутствии ответа.

Забегая вперёд хочу сказать, что WhatsApp хитрее меня и все эти симкарты тоже были заблокированы через некоторое время и тоже почти одновременно. В любом случае 8 000 000 телефонных номеров скрипты всё-таки успешно проработали и у нас на руках 411 279 фотографий. Соотношение 20 к 1. Что уже вполне неплохо.


Выборка из результатов обработки по г. Москва

Ненецкий автономный округ

Долгое время не было возможности активировать оставшиеся сим-карты и запустить скрипты. Наконец свободная минута появилась, а вместе с ней силы признать, что начинать перебор с Москвы (население 12 197 596 человек) — это лихо. Поэтому прячем поглубже свой юношеский максимализм и берём менее населенный субъект, например, Ненецкий автономный округ. Почему бы и нет. Запускаем скрипт — и через 12 часов перебор всех емкостей Ненецкого округа завершен. Для 169 995 номеров было найдено всего 2 208 фотографий в WhatsApp. Переходим к следующему этапу.

ВКонтакте

Задача: получить все фотографии пользователей VK, у которых указан интересующий нас город.

Немалое количество времени ушло, чтобы разобраться с VK API. И оказалось, что запрос getuser выполнить можно без проблем, не имея access-token. А вот запрос search (чтобы взять только людей из конкретного города) сработает только с токеном, причём полученным на пользователя, а не на standalone приложение. В этом нам поможет статья Как я получал access token для взаимодействия с vk api. Но даже когда мы получили этот токен — мы утыкаемся в ограничение — получить можно только 1000 пользователей (не 1000 за один запрос, а 1000 всего), при том, что, например, город Нарьян-Мар (Ненецкий АО) указан у 15 660 человек.

Пробуем пойти через get_users перебором: перебираем всех пользователей вконтакте от $id = 1 до N следующим запросом:

response=$(curl --silent "https:// api.vk.com /method/users.get?user_id=$id&fields=photo_max_orig,country,city")

В сети вконтакте на момент написания этой статьи было N = 300 000 000 пользователей. На один такой запрос без скачивания фото уходила 1 секунда.

300 000 000 (пользователей) / 1 (в секунду) / 60 (секунд) / 60 (минут) / 24 (часа) ~ 3472 дней.

Итого около 3472 дней в одном потоке, при условии, что VK не будет блокировать наши IP-адреса. Вариант отбрасываем.

Возвращаемся к users.search с ограничением на количество в выдаче, но не на «качество» запроса. Поясняю. В запросе можно бесконечно уточнять параметры: например, взять только женщин или мужчин, уменьшив выдачу в два раза, или взять только тех, у кого есть фото, и что самое удобное — взять только людей конкретного возраста, естественно в цикле от $age = 14 до 80. Итого 66 прогонов по 1000, с замечанием, что, если для некоторых возрастов мы перевалим за 1000 — такие запросы мы повторим с дополнительным разделением по полу.


Распределение пользователей VK из г. Нарьян-Мар по возрасту

Скрипт постепенного скачивания из VK

01: acc_token="abc123abc123abc123abc123abc123abc123abc123abc123"
02: vk_url="api.vk.com/method/users.search?has_photo=1&count=1000&city=2487&country=1&access_token=$acc_token&fields=photo_max_orig"
03:
04: for age in {14..80}
05: do
06:    echo -n $id " " >>vk.log
07:    date +"%T" >>vk.log
08:    mkdir photos/$id
09:    list=$(curl --silent "$vk_url&age_from=$age&age_to=$age" | jq '.response | .[] | (.uid|tostring) + " " + .photo_max_orig' |  
         sed 's/^"(.*)"$/1/')
10:    counter=0
11:    while read -r line; do
12:       let counter++
13:       arr=($line)
14:       echo -n "$counter." >>vk.log
15:       photo=${arr[1]}
16:       filename=${arr[0]}$(echo $photo | sed "s/.*(..*).*$/1/")
17:       wget $photo -O photos/$id/$filename
18:    done <<< "$list"
19:done

Собственно, скрипт, используя полученный заранее (с того же IP) access_token запрашивает через VK API в цикле список всех людей конкретного возраста из конкретного города (city=2487).
Самое интересное здесь — строчка № 9:
Она превращает JSON ответ от вконтакте вида ( {«response»:[COUNT,{«uid»:XXXXXXX,«first_name»:«Иван»,«last_name»:«Иванов»,«photo_max_orig»:«http://QQQ.vk.me/ZZZ/YYY.jpg»} ) в список
id photo_url (XXXXX http:// QQQ.vk.me /ZZZ/YYY и т.д.)
Способов это реализовать масса и наверняка есть более симпатичный вариант. Но в поисках как это сделать я наткнулся на так называемый «jq is a lightweight and flexible command-line JSON processor», синтаксис которого мне приглянулся:
jq ‘.response | .[] | (.uid|tostring) + ” ” + .photo_max_orig’

Если читать с конца, то: взять текстом id пользователя (.uid|tostring) с ссылкой на фото .photo_max_orig для всех элементов массива .[] в рамках объекта response

На 19 годах VK что-то заподозрили, и стали очень медленно отвечать на запросы. Через полтора часа было скачано 13 967 изображений. У остальных 1 700 человек возраст видимо не был указан вообще. Еще 400 скачанных изображений оказались, по каким-то причинам битыми, либо очень маленькими (<10 кб).

Распознавание и сравнение лиц

Как мы уже выяснили среди полученных изображений множество котов и автомобилей, поэтому для начала хочется их отфильтровать. Поможет нам с этим OpenCV (Open Source Computer Vision Library, библиотека компьютерного зрения с открытым исходным кодом).

Существует множество реализаций, на различных языках программирования, основанных на этой библиотеке. Например, facedetect, которая определяет координаты по которым находится лицо на фото. Она же вместе с ImageMagick вырежет по координатам распознанное лицо в отдельный файл.

По распознаванию лиц на фото, есть интересная реализация от компании Betaface. У них платное API для большого количества изображений, но есть отличная демо, которая распознает всех присутствующих на загруженном фото и кроме прочего определяет пол, наличие усов, очков, улыбки и (женщинам это не понравится) показывает предположительный возраст (мне даёт 27, плюшевому кролику на холодильнике — 42).

Мы же возьмем готовые скрипты на python от английского разработчика Terence Eden. Он написал их в рамках очень интересного проекта. В его задаче стояло: скачать открытую коллекцию картин Лондонского музея «Тейт Британия», и распознать на ней изображения людей. Затем с помощью получившейся базы лиц и своей фотографии можно найти картину, на которой изображен человек максимально похожий на тебя. Web API он, к сожалению, не даёт, но все исходники есть на github.

Корректируем скрипт Тэренса — выключаем скачивание из Британской галереи и удаляем обработку по папкам.

Скрипт на python

import sys, os
import cv2
import urllib
from urlparse import urlparse

def detect(path):
img = cv2.imread(path)
cascade = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
rects = cascade.detectMultiScale(img, 1.3, 4, cv2.cv.CV_HAAR_SCALE_IMAGE, (20,20))

if len(rects) == 0:
return [], img
rects[:, 2:] += rects[:, :2]
return rects, img

def box(rects, img, file_name):
i = 0 # Track how many faces found
for x1, y1, x2, y2 in rects:
print "Found " + str(i) + " face!" # Tell us what's going on
cut = img[y1:y2, x1:x2] # Defines the rectangle containing a face
file_name = file_name.replace('.jpg','_') # Prepare the filename
file_name = file_name + str(i) + '.jpg'
file_name = file_name.replace('n','')
print 'Writing ' + file_name
cv2.imwrite('detected/' + str(file_name), cut) # Write the file
i += 1 # Increment the face counter

def main():
for filename in os.listdir('whphotos'):
print filename + " "
rects, img = detect("whphotos/" + filename)
box(rects, img, filename)
os.remove("whphotos/" + filename)

if __name__ == "__main__":
main()

Итог обработки:
13 500 изображений из VK => 6 427 / 5 446 лиц. (с учетом / без учёта случаев с несколькими лицами на одном фото)
2 208 из WhatsApp => 963 / 876 лиц

Проглядывается интересная закономерность — каждый второй пользователь не ставит фото на профиль.

Следом за распознанием идёт создание модели eigenfaces.xml. Скриптом предусмотрено по папке исходных фотографий сформировать XML файл, по которому в будущем будет производиться поиск. Поэтому по одному комплекту готовим такой файл, а из второго потом берём по одному элементу и ищем соответствие. Техника решила за меня какой из комплектов брать за основной: 6 400 фотографий из VK скрипт обработать не смог с ошибкой по памяти “Couldn’t allocate over 4GB“. Время — 11 ночи — разбираться не охота — пропускаем через скрипт 963 фото из WhatsApp и через 20 минут имеем eigenfaces.xml размером 1.6 ГБ. Можно представить какого бы размера он был в случае с VK. Позже оказалось, переделывая скрипт под себя, я случайно удалил строку идентификации в модели, вместо неё все элементы имели идентификатор «0». Смешно бы было прождать несколько дней выполнения скрипта и только потом это обнаружить. Исправляем ошибку и ждём еще 20 минут.

Затем для каждого файла из VK запускаем скрипт проверки.

find detectedVK/ -name *.jpg -exec ./myscript.sh {} ;

#myscript.sh
python recognise.py detectedWH $1 100000 >> result

`100000` здесь — точность совпадения, при 100 — идеальное совпадение.
На одно сравнение имеем 40 секунд. 6 400 * 40 ~ 3 дня на одном процессоре. Оставляем на ночь; идем спать — завтра понедельник.

Сразу скажу, что у меня были мысли, что для такой маленькой выборки совпадений будет ноль. Пока работали скрипты я периодически смотрел на совпадения. С указанной мною точностью результатов было много, но при ближайшем рассмотрении даже на совпадениях порядка `3500` было множество результатов мальчик-девочка. При том создавалось ощущение, что эти двое родственники. Результат интересный, но это не совсем то, что мы искали.

Первое попадание случилось к концу первой тысячи аккаунтов. Девушка Яна из города Нарьян-Мар поставила одинаковую фотографию и в WhatsApp и в VK. Несмотря на то, что фото одинаковые (отличается только разрешение) точность совпадения ~3 000. Для всех результатов с точностью <6000 с помощью convert объединяем совпавшие изображения, чтобы зрительно окончательно принять решение

...
if [ "$precise" -lt 6000 ]
  then
    echo $precise $whIMG $vkIMG
    convert detectedWH.bak/$whIMG detectedVK.bak/$vkIMG -append convertResults/${precise}_$whIMG$vkIMG
  fi
...

Итого к окончанию вторых суток успешно распознаны и привязаны к номеру телефона 25 аккаунтов VK.

Это 2% от числа найденных лиц WhatsApp, либо 1% от всех изображений.


Результаты анализа по г.Нарьян-Мар

Я верю, что это отличный результат, и вот почему:

  • У нас маленькие выборки, с большой разницей между ними (16 600 VK против 2 000 WhatsApp);
  • Для поиска совпадений мы использовали только алгоритм Eigenfaces, а можно добавить, например, Fisherfaces;
  • Можно увеличить шансы на распознание добавив по аналогии перебор через Viber;
  • Из VK можно брать не только последнее фото профиля, но и несколько предыдущих;
  • Наконец, к списку социальных сетей можно добавить Facebook, Одноклассники и пр.

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

Заключение

К чему это всё. Полезного для общества практического применения полученных данных я пока не придумал. Получилось небольшое исследование ради исследования.

Библиотека OpenCV отличный инструмент, используя который на полученных данных, можно провести еще ряд интересных экспериментов.

В награду дочитавшим до конца, такой, например, весёлый вариант: Собрать модель eigenfaces.xml по фотографиям известных актрис, российских и зарубежных, и провести перебор на соответствие по полученной из WhatsApp базе москвичей (у нас их на данный момент ~400 000). Не беря во внимание моральную составляющую (а именно, вопрос: культурно ли звонить незнакомым людям), набираем номер и приглашаем в кино. Прикольно ведь пойти в кино с девушкой, которая с точностью 3000 к 100 похожа на главную героиню.

Еще в качестве вывода можно было бы сказать: «Не забывайте ставить галочки в настройках приватности». Но я не большой сторонник параноидальных настроений (” Они знают где я”, «Интернет-провайдер знает обо мне всё», «Большой брат следит за нами» и пр.). Меня, например, веселит, когда моя жена выключает сбор анонимных геоданных на телефоне, со словами, что её «найдут» (кто, а главное зачем она пока не придумала).

Не знаю будет ли меня когда-нибудь кто-нибудь искать — я в своей жизни вроде бы ничего не нарушал (кроме лицензионного соглашения WhatsApp).

Просмотр пользователей из базы

Как просмотреть базу с ЦА: пользователей с аватарками, именами и фамилиями, ссылками на их страницы ВКонтакте, датой рождения и городом проживания.

Общее представление о работе с модулем “Просмотр базы”: как запустить, просмотреть результаты и скачать нужные.

Видеогид “Просмотр базы”

Как просмотреть базу с ЦА: пользователей с аватарками, именами, фамилиями, ссылками на их страницы ВКонтакте, датой рождения и городом проживания.

Возможности

Общее представление о возможностях, которые дают результаты работы модуля “Просмотр базы”.

Модуль “Просмотр базы” находится во вкладке “Разное” в Pro-версии по ссылке или в VK Apps-версии (браузерной) — по ссылке (доступно для зарегистрированных пользователей).

Результатом работы в большинстве модулей Церебро является txt-файл с ID пользователей, который можно сразу загрузить в рекламный кабинет во ВКонтакте. Но иногда есть необходимость просмотреть найденных пользователей, вручную проанализировать их страницы, чтобы убедиться, что в базе действительно нужные вам пользователи и вы собрали ее правильно. Сделать это можно в модуле “Просмотр базы”.

Он позволяет получить по каждому пользователю такие данные, как аватарка, фамилия и имя, дата рождения, город проживания, чтобы:

  • оценить собранную базу по гео, возрасту, дате рождения и убедиться, что вы ее собрали верно;
  • проверить, правильно ли вы собрали базу ботов;
  • проверить базу, на которую вы давали рекламу и которая перестала приносить результаты. Пользователи из базы могут оказаться заблокированными;
  • просмотреть вручную базу ваших реальных клиентов, чтобы составить портрет покупателя. Например, если у вас есть база с теми, кто оставлял заявку на заказ в группе или на сайте;
  • посмотреть наличие ботов в своем сообществе или сообществе конкурента. ВКонтакте не всегда отображает “собачек”, в модуле “Просмотр базы” они отобразятся;
  • узнать особенности ниши. Например, в киберспортивной тематике очень часто на аватарке стоят не настоящие фото пользователей, а изображения любимых героев. Несмотря на это, страницы принадлежат реальным пользователям, а не офферам.

Описание входных параметров

В модуле “Просмотр базы” можно просмотреть базу с ЦА: пользователей с аватарками, именами, фамилиями, ссылками на их страницы ВКонтакте, датой рождения и городом проживания.

Модуль “Просмотр базы” в Pro-версии

Модуль “Просмотр базы” в VK Apps-версии

Чтобы просмотреть базу с пользователями в Pro-версии:

1. Введите в это поле название задачи, под этим названием она будет отображаться в истории всех задач.

2. Укажите данные для анализа. В качестве исходных данных можно использовать:

  • файл с ID пользователей ВКонтакте. Для этого кликните на иконку загрузки и выберите файл со своего компьютера;
  • файл со ссылками на личные страницы пользователей ВКонтакте. Для этого кликните на иконку загрузки и выберите файл со своего компьютера;
  • ID пользователей из результатов другой задачи в Pro-версии. Для этого кликните на иконку списка и выберите результат задачи из истории

Как только все данные заполнены, необходимо нажать кнопку “Запустить” для выполнения задачи. Сообщение о завершении работы придет на почту, которую вы указали при регистрации.

Чтобы просмотреть базу с пользователями в VK Apps-версии:

1.Укажите тип исходных данных, по которым должен осуществляться просмотр:

  • по списку пользователей;
  • по списку сообществ.

2. Укажите данные для анализа. В качестве исходных данных можно использовать:

  • файл с ID/ссылками на аккаунты пользователей ВКонтакте. Для этого кликните на “Загрузить из файла” и выберите файл со своего компьютера;
    • файл с ID/ссылками на сообщества ВКонтакте. Для этого кликните на “Загрузить из файла” и выберите файл со своего компьютера;

3. Фильтр настройки результатов:

  • поставьте галочку, если необходимо показывать аватарки пользователей.

Как только все данные заполнены, необходимо нажать кнопку “Старт”. Чтобы сохранить результаты работы, необходимо дождаться окончания работы модуля.

Описание результатов выполненной задачи

Как посмотреть результаты работы модуля и скачать данные.

Результат работы модуля “Просмотр базы” в Pro-версии

Результат работы модуля “Просмотр базы” в VK Apps-версии

Результаты работы модуля “Просмотр базы” в Pro-версии:

1.
В “Найдено” отображается общее число анализируемых аккаунтов пользователей.

2. Скачать результаты на компьютер:

  • ID найденных пользователей в .txt-формате;
  • подробные результаты в .csv-таблице.

3. По клику на кнопку “Выбрать” появится окно с возможностью выбрать первые N аккаунтов автоматически.

4. Результаты работы модуля:

  • аватарка пользователя;
  • ссылка на аккаунт пользователя, по клику страница откроется в новом окне;
  • дата рождения пользователя;
  • пол;
  • город проживания.

При необходимости найденных пользователей можно отсортировать по дате рождения, полу и городу проживания. Для этого необходимо кликнуть на нужный параметр.

Результаты работы модуля “Просмотр базы” в VK Apps-версии:

1. Скачать результаты на компьютер:

  • подробные результаты в .csv-таблице

2. Количество пользователей/сообществ, представленных для просмотра.

3. Результаты работы модуля. По каждому пользователю доступна следующая информация:

  • аватарка, по клику на аватарку страница пользователя откроется в новом окне;
  • имя пользователя, по клику страница пользователя откроется в новом окне;
  • дата рождения пользователя;
  • пол;
  • город проживания.

Можно отсортировать результаты по возрастанию/убыванию, кликнув на название нужного параметра.

Обратите внимание, что модули не видят информацию, скрытую настройками приватности, поэтому в параметрах возраста или даты рождения может не быть информации.

Результат скачивания в .csv-формате

Если работать комфортнее в таблицах, результаты задачи можно скачать в формате .csv.

Результат работы модуля “Просмотр базы” в Pro-версии в формате CSV

Результат работы модуля “Просмотр базы” в VK Apps-версии в формате CSV

Ознакомиться с инструкциями по работе с другими модулями можно по ссылке

Получайте клиентов из ВК, используя все возможности Церебро. Подключить можно тут.

На VK.COM целый океан разнообразной информации. Но искать там что-то конкретное бывает сложно. На каждом углу репосты веселых картинок, селфи, реклама доставки суши, розыгрыши призов и прочий спам. Но есть простые, но неочевидные приемы поиска, которые помогут противостоять злу.

1. Ищем фотографии определенного места на стене пользователя

Буквально пару дней назад сталкивалась с ситуацией, когда человек выложил фотографии из отпуска на своей стене (без создания альбома) и щедро разбавил их репостами цитат о смысле жизни. Смотреть было очень утомительно. Спасла возможность отфильтровать на стене только посты с фото по месту съемки.

На стене пользователя или сообщества (как в примере на картинке) можно ввести географические координаты нужного города и получить толко фотографии, сделанные там. Например:


near:57.3,117.2

К сожалению, стандартная «Геолокация» и прочие функции расширенного поиска не работают на стенах пользователей и сообществ.

2. Ищем все упоминания человека

Можно найти посты, где есть упоминания страницы человека и ответы на его комментарии по такой ссылке:

https://vk.com/feed?obj=1&q=&section=mentions

Вместо цифры 1 надо подставить id пользователя или сообщества.

Если в ссылке на страницу пользователя вместо цифр указан никнейм, то узнать id поможет специальное приложение vk.com/linkapp.

3. Как найти общих друзей двух пользователей?

Очень удобный сервис для поиска общих друзей и подписок. Можно найти коллег, одноклассников, одногруппников или кружок кройки и шитья, в которые ходят оба исследуемых объекта. Видите нового человека в друзьях знакомого? Попробуйте вычислить кто их свел или где они могли встретиться.

Там же можно заодно пробить: дату регистрации страницы и кто скрывает пользователя в списке друзей. Если сайт попросит данные вашего профиля, то рекомендую авторизироваться под фейковой страницей.

Ссылка на сервис: 220vk.com

4. Как быстро найти старую переписку с пользователем?

Предположим, вам надо вспомнить о чем шел разговор с человеком несколько месяцев или лет назад. Для этого надо:

1. Открыть страницу с сообщениями, набрать в поиске имя нужного человека и кликнуть на него.
2. После этого нажать Поиск по беседе.
3. Теперь видно значок календаря. С его помощью можно выбрать сообщения до определенного числа.

5. Ищем все ссылки на сайт

Если к запросу в поиске по новостям добавить этот оператор, то можно найти все посты, в которых есть ссылка на определенный сайт:

domain:iphones.ru

Удивительно, но если просто ввести iphones.ru или https://wwww.iphones.ru в поле расширенного поиска Упоминание ссылки и выставить настройку Искать любые страницы с этого сайта, то найдется только 404 поста, а с оператором 37 625. А если просто набрать в поиске iphones.ru, то в результатах будет куча левых розыгрышей iPhone.

Иногда операторы работают качественнее обычного расширенного поиска. Неизвестно почему так происходит, но это подтверждают эксперименты, подобные примеру выше.

Удобно использовать этот оператор для получения списка статей с определенного сайта, которые репостил исследуемый человек или сообщество. Для этого надо просто набрать domain:iphones.ru в поле поиска на стене.

Страница для применения

6. Ищем посты с определенным типом контента

А эти операторы помогают отфильтровать на стене пользователя или сообщества самое интересное. Например, веселые опросы из 2006-2009 годов или треки в статусах человека со скрытыми аудиозаписями:

has:poll — опросы;
has:album — фотоальбомы;
has:note — заметки;
has:photo — фотографии;
has:audio — аудиозаписи;
has:video — видеоролик;
has:doc — прикрепленные файлы.

При использовании последнего оператора лента наполняется постами, к которыми прикреплены GIF-файлы. Если вам нужны сканы паспортов, готовые контрольные работы, образцы заполненных служебных документов, то их следует искать на странице поиска по документам.

Еще есть оператор has:graffiti, который работает довольно некорректно, но позволяет найти ностальгические приветы семилетней давности.

Страница для применения

7. Поиск только среди комментариев

Вот так находим упоминания ссылок или слов в дискуссиях:

domain:iphones.ru type:reply

А так можно искать самые интересные комментарии, которые собрали =>10. =>100, =>1000 лайков.


likes:10
likes:100
likes:1000

«Likes» действенны не только для комментариев, но и для постов, фотографий и т.п. Но, к сожалению, на стенах людей и сообществ они не работают.

Страница для применения

8. Ищем копии фотографий


Если вы художник или фотограф, то можете искать случаи воровства своих работ вот так:

copy:photo371788357_456239486

Страница для применения

9. Ищем фотографии с фильтрами

А это пригодится создателям контента для пабликов. Нужна симпатичная затемненная фотка под цитату? Вот так можно искать только снимки, которые обработаны определенным фильтром:


filter:diana
filter:fortuna
filter:aquilon
filter:hera
filter:vesta
filter:luna

Страница для применения

У VK.COM есть куча фишек и трюков. О том как найти страницу человека по email или адресу электронной почты, узнать скрытую дату рождения пользователя, посмотреть старые записи на стене и вычислить цепочку общих знакомых между двумя людьми, можно почитать тут.

Также рекомендую статью 10 полезных расширений Google Chrome для Вконтакте. В нем можно прочитать о том, как узнать подробную информацию о людях лайкнувших пост, посмотреть статистику своей переписки и очистить новостную ленту от хлама.

Если вы будете использовать эту статью для поиска информации о конкретном человеке, то вам может пригодиться:

  • 15 фишек для сбора информации о человеке в интернете
  • Как узнать все о любой компании, используя интернет
  • 8 фишек для сбора информации об автомобиле по госномеру и VIN
  • 10 фишек для сбора информации о доме или квартире
  • Как найти личный или рабочий email любого человека
  • 7 способов найти информацию о человеке по адресу электронной почты
  • Как посмотреть посты всех ваших соседей в соцсетях
  • 12 способов разыскать владельца сайта и узнать все про него
  • 9 сервисов для поиска информации в соцсетях
  • 10 веб-сервисов для анализа фотографий
  • 20 фишек, как узнать все про любой сайт
  • Как проверить документы на подлинность

1 Звезд2 Звезды3 Звезды4 Звезды5 Звезд (19 голосов, общий рейтинг: 4.58 из 5)

🤓 Хочешь больше? Подпишись на наш Telegram.

undefined

iPhones.ru


Незаметные функции и поисковые операторы.

  • социальные сети,
  • это полезно

Ирина Чернова avatar

Добавить комментарий