July 7, 2019

Как работает FBtool

Итак, как же работает fbtool и почему работать с ним безопасно.

Я не буду глубоко погружаться в технические моменты, расскажу кратко про graph api Facebook. Работа с api осуществляется от лица приложения. В большинстве случаев разработчик создаёт приложение и работа со всеми аккаунтами идёт именно через него, после того как пользователь авторизуются через свой аккаунт в этом приложении и сервер разработчика получит от fb токен для определенных действий с аккаунтом. 

Мы от такого варианта сразу отказались, так как большая часть наших клиентов хочет чистить комментарии, а значит льют то, что вызывает негатив у пользователей, следовательно fb бы периодически мог банить приложение, заодно захватывая аккаунты, в нём авторизованные.

Мы пошли по пути работы с токенами, которые выдает сам фб от лица своего же системного приложения. Системные приложения используют тот же api, что и пользовательские и в самом фб используются для того, чтобы в фоне подгружать объявы, статистику и другие данные акка. Этот апи находится на отдельных серверах фб, на отдельном поддомене, и выполняет задачу транспортировки сухих данных непосредственно к вам в браузер, чтобы браузер отрисовал страницу, используя эти данные. Этот апи никак не связан с системами борьбы со спамом, антидетектом, не собирает и не анализирует данные вашего железа, так как вообще не предназначен для того, чтобы спалить Вас на чем-то, он даже физически не может получить никаких данных о вашем устройстве, кроме юзерагента и айпи. Это исключительно фоновый процесс передачи данных, и токен, полученный из исходного кода страницы, позволяет эти данные получать от лица той же сессии, в которую вы вошли в своем браузере, и в данном случае ip или useragent запросов ни на что не влияет, так как более сложные параметры о вас и вашем устройстве перед выдачей токена предварительно проверяются другими скриптами на других серверах фб, которые созданы как раз для обеспечения безопасности. Поэтому в браузере зайти в аккаунт с непривычного ip или другого устройства для фб - конкретное палево, для graph api - нет. 

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

Также, важным моментом в изучении проблемы стало то, что по логам ошибок на сервисе, с проблемой сталкиваются аккаунты определенных пользователей, а не рандомно у всех по чуть-чуть. Причем доля пользователей с проблемами от общего числа совсем небольшая, меньше 5%. Учитывая, что у нас довольно много айпи, которые равномерно распределяются по аккаунтам, то совпадения быть не может. Очевидно, что раз в равных условиях среди 1000 акков у 100 пользователей вдруг слетает только 10 аккаунтов одного человека, то присутствует локальный фактор на стороне пользователя, по которому фб палит его акки. 

Итак, рассмотрим результаты разных наших и не наших экспериментов:

  1. Решил проверить, вдруг какие-то из наших айпи зашкварилсиь, и проблемам больше подвержены акки, которым попались какие-то конкретные айпишники. Поднял логи - результат отрицательный, ни одна из проксей не лидировала в количестве ошибок на ней по сравнению с другими. 
  2. Окей, раз на всех айпи всё одинаково, может быть они одинаково зашкварены? Добавили еще столько же новых прокси из совершенно других подсетей для всех новых акков. Динамика та же - у тех же людей наблюдаются проблемы.
  3. Даём пользователям возможность указывать свой юзерагент при добавлении акка, чтобы сохранялось то же устройство. Некоторым помогло. Почему именно некоторым, опишу в выводах дальше.
  4. Добавили прокси Украины и Казахстана и дали возможность вешать акки на соотвествующие своим гео. Динамика та же, что и с юзерагентами, кому-то помогло, у кого-то продолжились проверки.
  5. Решил проверить, а можно ли вообще зашкварить сервисом аккаунт. Взял абсолютно разные акки по происхождению, и передобавлял их в сервис 30+ раз (каждый раз выдавался разный ip), выбирая разные гео и юзерагенты, в том числе вместо юзерагента пробовал писать полную неестественную дичь, которой вообще никак не может быть в юзерагенте. Никаких последствий не было. Попробовал провести более агрессивный стресс тест - в течение нескольких секунд бахнул запросы с 100+ разных айпи разных гео и с разными юзерагентами каждым акком - тоже всё ок.

Выходит, что смена гео, айпи и устройства по апи напрямую ни на что не влияет. Подобные тесты мы проводили на протяжении года существования сервиса. Но почему же у некоторых начались проблемы, а у других нет? А ответ в аккаунтах, их источниках и расходниках и в том, что фб стал более жестко относиться к угону акков. Когда у него появляются подозрения, что акк увели у хозяина или пытались увести (относится к тем, кто работает на логах, брутах и арендных акках), то внимание к любым сменам условий аккаунта становится чересчур пристальным. А вот что может заставить его так относиться к аккам - это уже те факторы, которые чекаются на уровне ваших браузеров.

Пример из опыта одного из пользователей: при добавлении всех акков на сервис, фб кидал проверку. На все акки клиент заходил через свой 3г модем. После смены 3г модема на качественные прокси, проблема больше не встречалась.

Очень важно пользоваться своими аккаунтами с чистых айпи, 3г модемы и резидентные прокси с ротацией - не гарантия траста и защиты. У операторов на несколько миллионов абонентов достаточно мало уникальных адресов, а если 3г модем расположен постоянно в одной локации, то все ваши акки рано или поздно попадают на одни и те же айпи. А если рассматривать ситуацию с брутами/логами и арендой, то подумайте логически, акки разных людей из разных частей страны вдруг светятся в одном районе города, и все поголовно запускают рекламу. На первое время может и не палится, но несколько месяцев работы такой работы точно оставят свой след. А кто-то использует покупные мобильные прокси, которые продаются в несколько рук, думаете фб не видит этого? Я вот очень сомневаюсь.

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

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

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

Какой вывод из всего этого можно сделать? Фб по разным признакам определяет вероятность того, что аккаунт мог попасть в чужие руки. От уровня и количества этих признаков зависит то, будет проверка в определенных условиях или нет. К примеру, в каких-то ситуациях достаточно использовать на сервисе тот же юзерагент, что и в браузере, в каких-то достаточно выбрать то же гео, с которого сидите в аккаунте. Если же такие проверки происходят у вас практически на всех акках при указании своего юзерагента и нужного гео, то акки пропалились где-то еще на вашей стороне.

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

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