Vô hiệu hóa tính khả dụng của trò chuyện trên Facebook (Hoạt động ngay, chỉ hoạt động, hoạt động x phút trước)


15

Làm cách nào để tắt tính năng trò chuyện trên Facebook? Trò chuyện của tôi là ngoại tuyến và tôi đang sử dụng Windows 7 với Firefox. Khi tôi đăng nhập bằng tài khoản khác của mình thông qua Facebook di động và mở một cuộc trò chuyện, tôi thấy tài khoản mà tôi sử dụng trên máy tính của mình đang hoạt động "ngay bây giờ" bất cứ khi nào tôi di chuyển chuột hoặc làm mới trang.

Làm thế nào để tôi vô hiệu hóa điều đó? Có một số thông điệp nhịp tim cụ thể có thể bị chặn thông qua AdBlock Plus hoặc một cái gì đó?

Câu trả lời:


11

Được rồi tôi đã tìm ra giải pháp để chặn tình trạng này.

Về cơ bản, Facebook sử dụng bộ đếm thời gian và do đó, nó sẽ gửi tin nhắn nhịp tim đến máy chủ của họ với thời gian nhàn rỗi cứ sau x phút.

Dưới đây là một ví dụ về yêu cầu web như vậy:

https://1-edge-chat.facebook.com/pull?channel=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

Nếu bạn đọc liên kết đó, bạn sẽ thấy rằng & idle = 117 là tổng số giây mà tài khoản không hoạt động. Các trạng thái = ẩn tượng trưng cho dù trò chuyện đang hoạt động hoặc offline

Lưu ý rằng tôi đã thay thế userid của mình là một số gồm 15 chữ số.

Vì vậy, để vô hiệu hóa điều này, chỉ cần thêm quy tắc sau vào bộ lọc AdBlock của bạn:

https://*-edge-chat.facebook.com

Một nhược điểm của phương pháp này là bạn sẽ không nhận được tin nhắn trong thời gian thực. Bạn phải làm mới trang để nhận được tin nhắn.


1
Liệu một cái gì đó như thế này hoạt động trong Safari với trình chặn nội dung iOS 9?

0

Vì tôi đang cung cấp thêm chi tiết, tôi đang viết câu trả lời của riêng mình dựa trên bản gốc (thay vì chỉnh sửa nó).

Vâng, có một cách để làm điều này, nhưng phương pháp này chỉ hoạt động cho Facebook và Messenger dựa trên web; bạn không thể làm điều gì đó tương tự cho các ứng dụng di động.

Về cơ bản, Facebook sử dụng các yêu cầu được hẹn giờ ở phía máy chủ để kiểm tra xem máy khách có còn khả dụng hay không. Vì vậy, giao diện người dùng (trang web Facebook đã tải) sẽ định kỳ gửi yêu cầu HTTP ( XHR ) với thời gian nhàn rỗi đến máy chủ của họ.

Đây là một ví dụ về yêu cầu như vậy:

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

Lưu ý: Tôi đã thay thế ID người dùng thường là số.

Nếu bạn đọc URL ở trên, bạn sẽ thấy phần nói idle = 117 . Điều này biểu thị tổng số giây mà tài khoản không hoạt động. Các trạng thái = ẩn tượng trưng cho dù trò chuyện được bật hoặc tắt.

Vì vậy, để tắt tính năng này, chỉ cần thêm quy tắc sau vào danh sách bộ lọc tùy chỉnh của trình chặn quảng cáo của bạn:

||*-edge-chat.facebook.com^$xmlhttprequest

Để tắt cả hai, Facebook và Messenger, bạn có thể thêm hai dòng sau:

||*-edge-chat.facebook.com^$xmlhttprequest
||*-edge-chat.messenger.com^$xmlhttprequest

Hoặc dòng đơn, sử dụng regex :

/^https?\:\/\/\d+-edge-chat\.(facebook|messenger)\.com\/?/$xmlhttprequest

Một vài nhược điểm của phương pháp này là bạn sẽ không thể nhận tin nhắn trong thời gian thực và bạn sẽ không xuất hiện trực tuyến ngay cả khi trò chuyện được bật. Bạn sẽ phải làm mới trang để nhận tin nhắn mới.

Để tránh cả hai nhược điểm này, đây là một cách giải quyết. Bạn có thể thêm dòng này thay thế:

/^https?\:\/\/\d+-edge-chat\.facebook\.com\/pull\?.*state=offline/$xmlhttprequest

Hoặc, thêm cái này cho cả hai, Facebook và Messenger:

/^https?\:\/\/\d+-edge-chat\.(facebook|messenger)\.com\/pull\?.*state=offline/$xmlhttprequest

Kết quả cuối cùng của việc này sẽ là như sau:

  1. Khi trò chuyện của bạn bị tắt, bạn sẽ không xuất hiện trực tuyến, hoạt động cuối cùng của bạn sẽ không được báo cáo và bạn sẽ không thể nhận được tin nhắn trong thời gian thực.
  2. Khi trò chuyện của bạn được bật, bạn sẽ xuất hiện trực tuyến, hoạt động cuối cùng của bạn sẽ được báo cáo và bạn sẽ có thể nhận được tin nhắn trong thời gian thực.

Thật không may, dường như không có giải pháp nào khác vì giao diện người dùng của Facebook chỉ có thể tìm nạp thư khi khách hàng báo cáo định kỳ rằng họ đang hoạt động, do đó quá trình tìm nạp được thực hiện khi hoạt động cuối cùng được báo cáo. Cả hai hành động này đều được thực hiện bằng một tập lệnh back-end duy nhất ( * -edge-chat.facebook.com / pull ), thông qua cùng một yêu cầu; do đó, bạn không thể có cái này mà không có cái kia.


-2

Tôi đặt lại Chrome đã tắt tiện ích mở rộng của tôi và hoạt động tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.