Sí, hay una manera de hacerlo, pero este método solo funciona para Facebook y Messenger basados en la web; no puedes hacer algo similar para las aplicaciones móviles.
Básicamente, Facebook usa solicitudes cronometradas en el lado del servidor para verificar si el cliente aún está disponible. Por lo tanto, el front-end (página web cargada de Facebook) enviará periódicamente una solicitud HTTP (XHR) con el tiempo de inactividad a sus servidores.
Aquí hay un ejemplo de tal solicitud:
- ¿Es seguro usar teléfonos celulares durante los rayos?
- ¿Por qué los teléfonos celulares son una buena forma de comunicación?
- ¿Cuáles son algunos navegadores nuevos para teléfonos Android?
- ¿Por qué agregamos un signo más (+) delante de un número de celular para hacer una llamada?
- ¿Es realmente cierto que mi amigo responde: "No lo entendí!" a mis varios textos? y el operador / modelo de teléfono tiene un papel en esto?
https://1-edge-chat.facebook.com/pull?channel=p_&seq=0&partition=-2&clientid=18ae8ecc&cb=ie3k&idle=117&qp=y&cap=8&msgs_recv=0&uid=userid&viewer_uid=userid&msgr_region=userid&msgr_region=userid&msgr_region
Nota: He reemplazado la ID de usuario que normalmente sería un número.
Si lee la URL anterior, verá la parte que dice inactivo = 117 . Esto denota el número total de segundos que la cuenta ha estado inactiva. El estado = sin conexión significa si el chat está activado o desactivado.
Entonces, para deshabilitar esto, solo agregue la siguiente regla en la lista personalizada de filtros de su bloqueador de anuncios:
|| * -edge-chat.facebook.com ^ $ xmlhttprequest
Para habilitar en ambos, Facebook y Messenger, puede agregar las siguientes dos líneas:
|| * -edge-chat.facebook.com ^ $ xmlhttprequest
|| * -edge-chat.messenger.com ^ $ xmlhttprequest
O la línea única, usando expresiones regulares:
/^https?\:\/\/\d*-edge-chat.(facebook|messenger)\.com\/?/$xmlhttprequest
Algunos inconvenientes de este método son que no podrá recibir mensajes en tiempo real y no aparecerá en línea incluso si el chat está activado. Tendrá que actualizar la página para recibir nuevos mensajes.
Para evitar estos dos inconvenientes, aquí hay una solución alternativa. Puede agregar esta línea en su lugar:
/^https?\:\/\/\d*-edge-chat.facebook\.com\/pull\?(.*)?state=offline/$xmlhttprequest
O bien, agregue esto para Facebook y Messenger:
/^https?\:\/\/\d*-edge-chat.(facebook|messenger)\.com\/pull\?(.*)?state=offline/$xmlhttprequest
El resultado final de esto será el siguiente:
- Cuando su chat esté apagado, no aparecerá en línea, su última actividad no será reportada y no podrá recibir mensajes en tiempo real.
- Cuando su chat esté activado, aparecerá en línea, se informará su última actividad y podrá recibir mensajes en tiempo real.
Desafortunadamente, parece que no hay otra solución, ya que el front-end de Facebook puede recuperar mensajes solo cuando el cliente informa periódicamente que están activos, por lo tanto, la recuperación se realiza una vez que se informa la última actividad. Ambas acciones son posibles gracias a un único script de fondo ( * -edge-chat.facebook.com / pull ), a través de la misma solicitud; por lo tanto, no puedes tener uno sin el otro.
- Respuesta original
- Fuente