Продолжаем изучать API Facebook🙃
UPD: Про FbTool нагнал, всё там в порядке! И даже промокод YELLOW работает. Но запрос оставлю про запас)
При желании найдёте там ещё немало интересной инфы касательно платежей🙃
#fbapi
UPD: Про FbTool нагнал, всё там в порядке! И даже промокод YELLOW работает. Но запрос оставлю про запас)
https://graph.facebook.com/v12.0/graphql?access_token=<TOKEN>&method=post&doc_id=4560131040703514&variables={%22paymentAccountID%22:%22<ACCOUNTID>%22}После того, как мы засунем в этот запрос токен и ID аккаунта, получим данные со скрина, в которых несложно докопаться до размера спенда со времени последнего биллинга, который невозможно получить через паблик API FB.
При желании найдёте там ещё немало интересной инфы касательно платежей🙃
#fbapi
Продолжаем изучать API FB, сегодня пройдёмся по чистке комментов 👇
Как вы в курсе, у нас есть 2 подхода к комментариям: скрытие и удаление. И у каждого из этих методов есть свои приверженцы.
Первые утверждают: скрывать лучше, поскольку юзер не видит, что его коммент удалён, и не идёт дальше жаловаться.
Вторые же говорят, что когда юзер видит пост, у которого много скрытых комментов - это наводит на нехорошие размышления!
Давайте с помощью запроса сделаем так, что минусы удаления комментов будут сведены на нет. И это запрос, который забанит пользователя на нашей фп.
#fbapi
Как вы в курсе, у нас есть 2 подхода к комментариям: скрытие и удаление. И у каждого из этих методов есть свои приверженцы.
Первые утверждают: скрывать лучше, поскольку юзер не видит, что его коммент удалён, и не идёт дальше жаловаться.
Вторые же говорят, что когда юзер видит пост, у которого много скрытых комментов - это наводит на нехорошие размышления!
Давайте с помощью запроса сделаем так, что минусы удаления комментов будут сведены на нет. И это запрос, который забанит пользователя на нашей фп.
https://graph.facebook.com/graphql?method=post&access_token=<TOKEN>&doc_id=5348059221933855&variables={"input":{"ban_action":"BAN","page_id":"<FPID>","target_user_id":"<USERTOBANID>","actor_id":"<USERID>","client_mutation_id":"1"}}Если льёте одно ГЕО долгое время, то всех этих юзеров можно экспортить/импортить себе на фп, писал про это вот тут. Там же есть скрипт, в котором бан пользователю выписывается, используя паблик апи фб.
#fbapi
Пара "хаков" для тех, кто любит ковырять Meta API:
1. Вывод всех доступных полей и узлов, к которым можно совершать запросы
Для вывода данной инфы используйте в конце своего запроса
На первом скрине представлен результат запроса, показывающего все доступные для ковыряния поля у рекламного кабинета.
2. Отладка
Если вы ковыряете и модифицируете какой-то запрос, но что-то идёт не так, то всегда включайте отладку. Для этого добавьте к вашему запросу
На втором скрине пример, где в отладочной инфе фэбэ прямым текстом говорит мне, что того поля, что я запрашиваю, не существует.
Happy Hacking!
P.S. Ну и помните, что в оф. доках Meta описаны далеко не все поля. Что-то можно будет раскопать через metadata, а что-то лучше подсмотреть в запросах Ads Manager☝️
#fbapi
1. Вывод всех доступных полей и узлов, к которым можно совершать запросы
Для вывода данной инфы используйте в конце своего запроса
&metadata=true
. На первом скрине представлен результат запроса, показывающего все доступные для ковыряния поля у рекламного кабинета.
2. Отладка
Если вы ковыряете и модифицируете какой-то запрос, но что-то идёт не так, то всегда включайте отладку. Для этого добавьте к вашему запросу
&debug=all
.На втором скрине пример, где в отладочной инфе фэбэ прямым текстом говорит мне, что того поля, что я запрашиваю, не существует.
Happy Hacking!
P.S. Ну и помните, что в оф. доках Meta описаны далеко не все поля. Что-то можно будет раскопать через metadata, а что-то лучше подсмотреть в запросах Ads Manager☝️
#fbapi
Если вы пишете свои собственные js-скрипты для Facebook, ковыряете их private API и т.п., то вам часто приходится работать с разными внутренними переменными и токенами.
Но каждый раз вспоминать, как в моменте получить ту или иную штуку, бывает проблематично. Поэтому специально для вас, неутомимые исследователи, я сделал шпаргалку, в которой вы найдёте, как мне кажется, всё-всё-всё, что вам может потребоваться.
P.S. А если я что-то забыл - welcome в комментарии, дополним!
#fbapi
Но каждый раз вспоминать, как в моменте получить ту или иную штуку, бывает проблематично. Поэтому специально для вас, неутомимые исследователи, я сделал шпаргалку, в которой вы найдёте, как мне кажется, всё-всё-всё, что вам может потребоваться.
P.S. А если я что-то забыл - welcome в комментарии, дополним!
#fbapi
Gist
Ways to get various Facebook variablies useful in creating your own js-scripts
Ways to get various Facebook variablies useful in creating your own js-scripts - fbvariables.js
Эй, автоматизаторы!
Вы просили - я сделал 🙃 Несколько раз писали в ЛС вопрос: как по API узнать, какое максимальное кол-во акков разрешено создавать в выбранном БМе?
Ну и вот вам скрипт, собственно, ничего сложного 🤷
P.S. Там много лишнего кода, основной запрос находится в методе
Автоматизируйте на здоровье!👍
P.P.S. рекомендую использовать этот запрос для автоматического создания акков в БМе. Типа: как только видим, что кол-во доступных акков больше, чем реальное - создаём новые.
Это удобно, потому что мало ли, что-то забанится, и возможность создавать акки в БМе пропадёт...
#fbapi
Вы просили - я сделал 🙃 Несколько раз писали в ЛС вопрос: как по API узнать, какое максимальное кол-во акков разрешено создавать в выбранном БМе?
Ну и вот вам скрипт, собственно, ничего сложного 🤷
P.S. Там много лишнего кода, основной запрос находится в методе
getBMAdAccountCreationLimit
.Автоматизируйте на здоровье!👍
P.P.S. рекомендую использовать этот запрос для автоматического создания акков в БМе. Типа: как только видим, что кол-во доступных акков больше, чем реальное - создаём новые.
Это удобно, потому что мало ли, что-то забанится, и возможность создавать акки в БМе пропадёт...
#fbapi
Все вы наверняка в курсе, что у любой фп, с которой крутится реклама, можно в Account Quality подать заявку, что фп не занимается коммерческой деятельностью.
При успешном прохождении (скрин 1) этой проверки у пользователей не будут спрашивать фидбек по нашей рекламе, и, соответственно, на фп не будут накладываться ограничения при низкой Feedback Score.
Я отсниффал POST-запрос, который как оказалось, показывает массу интересного (скрин 2):
1. Тот самый флаг - eCommerce мы или нет
2. IsYoungPage, ёпта! Предполагаю, что у тех страниц, у которых тут false результаты будут лучше, ну или они будут крепче
3. Кол-во раз, которое можно подать тикет на то, что мы не eCommerce
4. Для обычных продающих фп тут будет тот самый Feedback Score
IsBeingBannd и IsBeingPenalized тоже вполне полезно👍
Короче, граждане автоматизаторы, используйте в своих инструментах!
P.S. В частности IsYoungPage вполне неплохо смотрелась бы в панельке тов. L3nin-а 🙃
#фп #fp #fbapi
При успешном прохождении (скрин 1) этой проверки у пользователей не будут спрашивать фидбек по нашей рекламе, и, соответственно, на фп не будут накладываться ограничения при низкой Feedback Score.
Я отсниффал POST-запрос, который как оказалось, показывает массу интересного (скрин 2):
1. Тот самый флаг - eCommerce мы или нет
2. IsYoungPage, ёпта! Предполагаю, что у тех страниц, у которых тут false результаты будут лучше, ну или они будут крепче
3. Кол-во раз, которое можно подать тикет на то, что мы не eCommerce
4. Для обычных продающих фп тут будет тот самый Feedback Score
IsBeingBannd и IsBeingPenalized тоже вполне полезно👍
Короче, граждане автоматизаторы, используйте в своих инструментах!
P.S. В частности IsYoungPage вполне неплохо смотрелась бы в панельке тов. L3nin-а 🙃
#фп #fp #fbapi
Инфа для ковырятелей Private API Facebook👇
Если вы когда-то пытались написать скрипт, требующий в процессе исполнения ввода пароля (например, удаление телефона или полное удаление аккаунта), то наверняка при прослушке трафика видели, что пароль в такие запросы передаётся в зашифрованном виде (скрин 1).
Возникает резонный вопрос, а как бы так получить этот "зашифрованный вид" из обычного пароля? Показываю!
Для начала нужно отсниффать ключ шифрования и его id (скрин 2). Они обычно находятся в предыдущем запросе к Private API.
Имея их на руках, воспользуемся функциями самого FB и получим пароль в нужном виде:
Изи! (ну почти)
UPD: а зачастую, вместо этого самого зашифрованного пароля можно слать... НЕ зашифрованный! 🙃
#fbapi
Если вы когда-то пытались написать скрипт, требующий в процессе исполнения ввода пароля (например, удаление телефона или полное удаление аккаунта), то наверняка при прослушке трафика видели, что пароль в такие запросы передаётся в зашифрованном виде (скрин 1).
Возникает резонный вопрос, а как бы так получить этот "зашифрованный вид" из обычного пароля? Показываю!
Для начала нужно отсниффать ключ шифрования и его id (скрин 2). Они обычно находятся в предыдущем запросе к Private API.
Имея их на руках, воспользуемся функциями самого FB и получим пароль в нужном виде:
await require('FBBrowserPasswordEncryption').encryptPassword("key_id","public_key","пароль",Math.floor(Date.now() / 1e3).toString());
Меняем в этой строке key_id
, public_key
и пароль
на ваши значения и получаем зашифрованный пароль, который можно скормить фб в нужном вам запросе! 🙃Изи! (ну почти)
UPD: а зачастую, вместо этого самого зашифрованного пароля можно слать... НЕ зашифрованный! 🙃
#fbapi
Да, а если вы пишите не просто какие-то маленькие js-скрипты-закладки, а что-то серверное, типа автозалива, то найдите в js-исходниках фб эту функцию
Подробности по ней можете глянуть вот в этой статье: https://hackmd.io/@Ostrym/facebook-client-side-encryption
#fbapi
encryptPassword
и воспроизведите её у себя на C#, PHP, Python и т.п. Подробности по ней можете глянуть вот в этой статье: https://hackmd.io/@Ostrym/facebook-client-side-encryption
#fbapi
Про FB и персональные данные👇
А все уже видели этот прекрасный интерфейс Accounts Center (см скрин)? Он хорош тем, что там сразу же можно увидеть всю инфу по акку: почта-телефон-день рождения 👍
А ещё он хорош тем, что теперь всю эту инфу можно выдернуть всего одним запросом к Private API🙃 Написал для вас скрипт, который показывает, как это сделать.
UPD: тут был длинный рофл про индусов, но оказалось, что главный индус - это Данила-программист, который не шарит в Javascript🤷
#fbapi
А все уже видели этот прекрасный интерфейс Accounts Center (см скрин)? Он хорош тем, что там сразу же можно увидеть всю инфу по акку: почта-телефон-день рождения 👍
А ещё он хорош тем, что теперь всю эту инфу можно выдернуть всего одним запросом к Private API🙃 Написал для вас скрипт, который показывает, как это сделать.
UPD: тут был длинный рофл про индусов, но оказалось, что главный индус - это Данила-программист, который не шарит в Javascript🤷
#fbapi
Нашёл внутри js-исходников AdsManager удобный способ обращаться из своих скриптов к официальному API Facebook! 👇
Вот, например, как выглядит получение имени РК по его id:
Вы можете нарыть себе кучу примеров использования в Developer Tools на вкладке Sources, поискав по всем файлам строку
Писать кастомные скрипты стало проще🙃
P.S. Про Private API расскажу в следующем посте.
#fbapi
Вот, например, как выглядит получение имени РК по его id:
await require("AdsGraphAPI").get('15.0').adaccount('11111').get({
fields: ["name"]
});
Очень удобно 👍Вы можете нарыть себе кучу примеров использования в Developer Tools на вкладке Sources, поискав по всем файлам строку
AdsGraphAPI")
. Есть всё что нужно🔥Писать кастомные скрипты стало проще🙃
P.S. Про Private API расскажу в следующем посте.
#fbapi
Давайте теперь рассмотрим работу с Private API фб 👇
Немного базы:
- все запросы нужно отправлять на адрес
- в теле запроса есть несколько обязательных параметров:
1.
2.
3. токеннас себя удобный класс
Короче: это МАКСИМАЛЬНО БЕСПАЛЕВНЫЙ вариант для работы ваших скриптов или браузерных расширений и точка! 👍
#fbapi
Немного базы:
- все запросы нужно отправлять на адрес
facebook.com/api/graphql
- практически всегда это POST-запросы- в теле запроса есть несколько обязательных параметров:
1.
doc_id
- это уникальный идентификатор запроса, от него, собственно, зависит , что именно будет делать ваш запрос2.
variables
- набор переменных для запроса в формате JSON3. токен
fb_dtsg
- это примерно как обычный токен EAAB для Public API, получить его можно вот так require("DTSGInitData").token
Ну так вот, чтобы не собирать всю эту муть воедино ручками, умные дяди и тёти из фэбэ сделали для AsyncRequest
. Показываю, как пользоваться на примере запроса для получения персональных данных из поста выше:let fbVariables = JSON.stringify({"device_id":"","flow":"FB_WEB_SETTINGS","interface":"FB_WEB","node_identifier":"personal_info"});
let fbDocId = '9146498392086837';
await new AsyncRequest().setURI('/api/graphql').setMethod("POST").setData({doc_id:fbDocId,variables:fbVariables}).send();
Вы заметили? Никаких fb_dtsg
мы не указываем, всё встроено в AsyncRequest
, а если посмотреть трафик на вкладке Network, то мы увидим, что в запросе есть вообще все параметры, которые обычно шлёт сам фб (см. скрин). Короче: это МАКСИМАЛЬНО БЕСПАЛЕВНЫЙ вариант для работы ваших скриптов или браузерных расширений и точка! 👍
#fbapi
Если вам надо чекнуть по API, когда был создан тот или иной аккаунт (например, чтобы примерно понять, как давно был зареган проданный вам "авторег с отлёжкой в 2 месяца"), можно заюзать следующий запрос для лички:
P.S. Для того, чтобы попробовать сделать наше предположение точнее, мы можем получим дату загрузки первой фотки профиля - обычно, это ава - или (что будет самым точным способом) распарсить информацию из настроек аккаунта, но об этом как-нибудь в следующий раз...
#fbapi
https://graph.facebook.com/v16.0/act_ACCOUNTID?fields=created_time&access_token=TOKEN
Получим дату, как на скрине. Конечно, метод не особо точный, потому что РК обычно создаются не в первый день реги акка. P.S. Для того, чтобы попробовать сделать наше предположение точнее, мы можем получим дату загрузки первой фотки профиля - обычно, это ава - или (что будет самым точным способом) распарсить информацию из настроек аккаунта, но об этом как-нибудь в следующий раз...
#fbapi
ВНЕЗАПНО, у фэбэ есть свой API для проверки правильности введённых номеров телефона👇
Выбираем стандартный двухбуквенный код страны, вводим номер и видим результат. Если номер по мнению Meta реальный, то вы получите по нему инфу (скрин 1), если же нет, то запрос вернёт пустое значение (скрин 2).
В качестве токена изначально используется токен БМа, но вы запросто можете поменять его на обычный EAAB от AdsManager-а. При этом вы, например, спокойно можете использовать этот токен от тестовых аккаунтов.
Где и как это применить - придумаете сами, а сам запрос выглядит вот так:
#fbapi
Выбираем стандартный двухбуквенный код страны, вводим номер и видим результат. Если номер по мнению Meta реальный, то вы получите по нему инфу (скрин 1), если же нет, то запрос вернёт пустое значение (скрин 2).
В качестве токена изначально используется токен БМа, но вы запросто можете поменять его на обычный EAAB от AdsManager-а. При этом вы, например, спокойно можете использовать этот токен от тестовых аккаунтов.
Где и как это применить - придумаете сами, а сам запрос выглядит вот так:
https://graph.facebook.com/v16.0/phone_number?access_token=<TOKEN>&fields=category%2Cdisplay_number%2Cregion_code%2Cregion_codes%2Curi&locale=en_US&method=get&number=%2B1302-200-7504®ion=US
P.S. Если убрать параметр region=US
, то фб будет сам определять страну номера🙃#fbapi
Если вы размышляете над тем: почему ваши аккаунты фэбэ ограничивают в спенде до 25$/дейли (скрин №1), то обычно всё дело в отклонённых объявлениях. По моим тестам - достаточно 2-3 отклонённых объяв.
Как я это определил?
Помимо того, что FB чёрным по белому пишет об этом на скрине №1, можно найти информацию о причинах в результатах запроса к Private API - см. скрин №2.
P.S. Параметры запроса, если что, следующие:
P.P.S. Для снятия плашки продолжаем лить траф на этом акке от недели и более - и мейби вам повезёт 🙃
#fbapi
Как я это определил?
Помимо того, что FB чёрным по белому пишет об этом на скрине №1, можно найти информацию о причинах в результатах запроса к Private API - см. скрин №2.
P.S. Параметры запроса, если что, следующие:
variables: {"id":"айдивашегоакка","startTime":null}
doc_id: 6233091253412362
Как пользоваться Private API - писал на канале.P.P.S. Для снятия плашки продолжаем лить траф на этом акке от недели и более - и мейби вам повезёт 🙃
#fbapi