Оскільки я надаю додаткові деталі, я пишу власну відповідь на основі оригіналу (замість редагування).
Так, є спосіб це зробити, але цей метод працює лише для веб-сторінок Facebook та Messenger; ви не можете зробити щось подібне для мобільних додатків.
В основному, Facebook використовує примірні запити на стороні сервера, щоб перевірити, чи клієнт ще доступний. Тож передній кінець (завантажена веб-сторінка Facebook) періодично надсилатиме HTTP-запит ( XHR ) із простоєм на їхні сервери.
Ось приклад такого запиту:
https://1-edge-chat.facebook.com/pull?channel=p_<UserID>&seq=0&partition=-2&clientid=18ae8ecc&cb=ie3k&idle=117&qp=y&cap=8&msgs_recv=0&uid=userid&viewer_uid=userid&msgr_region=FRC&state=offline
Примітка. Я замінив ідентифікатор користувача, який зазвичай був номером.
Якщо ви прочитаєте URL-адресу вище, ви побачите частину, що говорить у режимі очікування = 117 . Це позначає загальну кількість секунд, на які обліковий запис був у режимі очікування. Стан = Нікому означає , включений чат або вимкнути.
Отже, щоб вимкнути це, просто додайте таке правило до спеціального списку фільтрів блокувального реклами:
||*-edge-chat.facebook.com^$xmlhttprequest
Для відключення обох, Facebook та Messenger, ви можете додати наступні два рядки:
||*-edge-chat.facebook.com^$xmlhttprequest
||*-edge-chat.messenger.com^$xmlhttprequest
Або єдиний рядок, використовуючи регулярний вираз :
/^https?\:\/\/\d+-edge-chat\.(facebook|messenger)\.com\/?/$xmlhttprequest
Деякі недоліки цього методу полягають у тому, що ви не зможете отримувати повідомлення в режимі реального часу і не з’явитесь в Інтернеті, навіть якщо чат увімкнено. Вам потрібно буде оновити сторінку, щоб отримувати нові повідомлення.
Щоб уникнути обох цих недоліків, ось один вирішення. Ви можете замість цього додати цей рядок:
/^https?\:\/\/\d+-edge-chat\.facebook\.com\/pull\?.*state=offline/$xmlhttprequest
Або додайте це для обох, Facebook та Messenger:
/^https?\:\/\/\d+-edge-chat\.(facebook|messenger)\.com\/pull\?.*state=offline/$xmlhttprequest
Кінцевим результатом цього буде такий:
- Коли ваш чат вимкнений, ви не з’явитесь в Інтернеті, про останню активність не буде повідомлено, і ви не зможете отримувати повідомлення в режимі реального часу.
- Коли ваш чат увімкнено, ви з’явитесь в Інтернеті, буде повідомлено про вашу останню активність, і ви зможете отримувати повідомлення в режимі реального часу.
На жаль, не існує іншого рішення, оскільки передній кінець Facebook може отримувати повідомлення лише тоді, коли клієнт періодично повідомляє, що він активний, отже, вилучення виконується після повідомлення про останню активність. Обидві ці дії стають можливими за допомогою одного сценарію зворотнього зв'язку ( * -edge-chat.facebook.com / pull ) за допомогою одного запиту; отже, ви не можете мати одне без іншого.