ปิดใช้งานความพร้อมในการแชทของ Facebook (ใช้งานตอนนี้เปิดใช้งานตอนนี้ใช้งาน x นาทีที่ผ่านมา)


15

ฉันจะปิดการใช้งาน Facebook chat ได้อย่างไร การแชทของฉันออฟไลน์อยู่และฉันใช้ Windows 7 กับ Firefox เมื่อฉันเข้าสู่ระบบด้วยบัญชีอื่นของฉันผ่าน Facebook บนมือถือและเปิดการสนทนาฉันเห็นบัญชีที่ฉันใช้บนคอมพิวเตอร์ของฉันใช้งานได้ "เพิ่ง" ทุกครั้งที่ฉันขยับเม้าส์หรือรีเฟรชหน้า

ฉันจะปิดการใช้งานได้อย่างไร มีข้อความ heartbeat บางอย่างที่เป็นไปได้ที่จะถูกบล็อกผ่าน AdBlock Plus หรืออะไร?

คำตอบ:


11

ตกลงฉันพบวิธีแก้ปัญหาเพื่อบล็อกสถานะนี้แล้ว

โดยทั่วไป Facebook ใช้ตัวจับเวลาและดังนั้นมันจะส่งข้อความ heartbeat ไปยังเซิร์ฟเวอร์ของพวกเขาด้วยเวลาว่างทุก ๆ x นาที

นี่คือตัวอย่างของคำขอทางเว็บดังกล่าว:

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

หากคุณอ่านลิงก์นั้นคุณจะเห็นว่า& idle = 117คือจำนวนวินาทีทั้งหมดที่บัญชีไม่ได้ใช้งาน รัฐ = ออฟไลน์หมายถึงว่าการสนทนามีการใช้งานหรือออฟไลน์

โปรดทราบว่าฉันได้แทนที่หมายเลขผู้ใช้ของฉันซึ่งเป็นตัวเลข 15 หลัก

ดังนั้นหากต้องการปิดการใช้งานเพียงเพิ่มกฎต่อไปนี้ในตัวกรอง AdBlock ของคุณ:

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

ข้อเสียอย่างหนึ่งของวิธีนี้คือคุณจะไม่ได้รับข้อความแบบเรียลไทม์ คุณต้องรีเฟรชหน้าเว็บเพื่อรับข้อความ


1
สิ่งนี้จะใช้งานได้ใน Safari กับตัวบล็อกเนื้อหา iOS 9 หรือไม่

0

เนื่องจากฉันให้รายละเอียดเพิ่มเติมฉันจึงเขียนคำตอบของฉันเองตามต้นฉบับ (แทนที่จะแก้ไข)

ใช่มีวิธีการทำเช่นนี้ แต่วิธีนี้ใช้ได้กับ 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

หมายเหตุ:ฉันได้เปลี่ยน ID ผู้ใช้ซึ่งโดยปกติจะเป็นตัวเลข

ถ้าคุณอ่าน URL ข้างต้นคุณจะเห็นส่วนหนึ่งบอกว่าไม่ได้ใช้งาน = 117 นี่หมายถึงจำนวนวินาทีทั้งหมดที่บัญชีไม่ได้ใช้งาน รัฐ = ออฟไลน์ย่อมาไม่ว่าจะแชทจะเปิดหรือปิด

ดังนั้นหากต้องการปิดใช้งานสิ่งนี้เพียงเพิ่มกฎต่อไปนี้ในรายการตัวกรองที่กำหนดเองของตัวบล็อกโฆษณาของคุณ:

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

หากต้องการปิดการใช้งานทั้งบน Facebook และ Messenger คุณสามารถเพิ่มสองบรรทัดต่อไปนี้:

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

หรือบรรทัดเดียวโดยใช้regex :

/^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

ผลลัพธ์สุดท้ายของสิ่งนี้จะเป็นดังต่อไปนี้:

  1. เมื่อปิดการแชทคุณจะไม่ปรากฏทางออนไลน์กิจกรรมล่าสุดของคุณจะไม่ถูกรายงานและคุณจะไม่สามารถรับข้อความแบบเรียลไทม์ได้
  2. เมื่อเปิดแชทคุณจะปรากฏออนไลน์กิจกรรมล่าสุดของคุณจะถูกรายงานและคุณจะสามารถรับข้อความได้แบบเรียลไทม์

น่าเสียดายที่ดูเหมือนว่าจะไม่มีวิธีแก้ปัญหาอื่น ๆ เนื่องจากส่วนหน้าของ Facebook สามารถดึงข้อความได้เฉพาะเมื่อลูกค้ารายงานเป็นระยะว่าพวกเขาทำงานอยู่ดังนั้นการดึงข้อมูลจะเสร็จสิ้นเมื่อมีการรายงานกิจกรรมล่าสุด การกระทำทั้งสองนี้เกิดขึ้นได้โดยสคริปต์แบ็คเอนด์ ( * -edge-chat.facebook.com / pull ) ผ่านการร้องขอเดียวกัน ดังนั้นคุณไม่สามารถมีหนึ่งโดยไม่มีอื่น ๆ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.