- ช่วงหลังมานี้ YouTube ได้เพิ่มความเข้มข้นในการทดลอง มาตรการป้องกันตัวบล็อกโฆษณา ทำให้ผู้ใช้บางส่วนพบอาการ บัฟเฟอร์ปลอม
- บัฟเฟอร์ปลอมนี้ทำงานโดย หน่วงการเริ่มวิดีโอราว 80% ของความยาวโฆษณา
- ผู้ใช้สามารถเลี่ยงผลกระทบนี้ได้บางส่วนด้วยการเพิ่มการตั้งค่าเฉพาะใน ตัวกรองบล็อกโฆษณา
- YouTube ใช้เทคโนโลยีหลายอย่าง เช่น global cache และโปรโตคอล SABR เพื่อตรวจจับและรับมือตัวบล็อกโฆษณา
- ยังมีกรณีที่ สคริปต์ล็อก JavaScript บางส่วนทำให้การทำงานของเบราว์เซอร์ ตัวกรอง และส่วนขยายถูกจำกัดด้วย
ภาพรวม
- ล่าสุด YouTube ได้นำ ฟังก์ชันป้องกันตัวบล็อกโฆษณา กลับมาทดลองใช้อีกครั้ง
- ฟังก์ชันทดลองนี้ถูกใช้กับเพียงบางบัญชีผ่านการทดสอบแบบ A/B test
- ผู้ใช้ uBlock Origin หรือ เบราว์เซอร์ Brave สามารถใช้ตัวกรองเพื่อหลีกเลี่ยงการเปลี่ยนแปลงเหล่านี้ได้ (มีรวมอยู่ในตัวกรองพื้นฐานแล้ว)
อาการบัฟเฟอร์ปลอม
- อาการหลักคือ ช่วงบัฟเฟอร์ก่อนเริ่มวิดีโอนานขึ้น (ไม่เกิดขึ้นระหว่างการเล่น)
- ระยะเวลาของบัฟเฟอร์ปลอมนี้อยู่ที่ประมาณ 80% ของเวลาที่เดิมต้องดูโฆษณา
- ตัวอย่างเช่น ถ้าโฆษณายาว 15 วินาที ผู้ใช้จะเจอบัฟเฟอร์ประมาณ 12 วินาที
- หากมีโฆษณาหลายชิ้นต่อเนื่องกัน จะเกิดเวลารอรวมตาม 80% ของความยาวแต่ละชิ้น
- ถึงอย่างนั้น ผู้ใช้ตัวบล็อกโฆษณาก็ยัง ประหยัดเวลาได้อยู่
โครงสร้างภายในและหลักการทำงาน
- InnerTube คือ API ภายในอย่างเป็นทางการของ YouTube ที่ไคลเอนต์เว็บและมือถือใช้เข้าถึงวิดีโอและข้อมูลที่เกี่ยวข้อง
- สตรีมวิดีโอถูกส่งผ่าน GVS(Google Video Services) และลิงก์จะหมดอายุจึงต้องสร้างใหม่
- YouTube ยังใช้เซิร์ฟเวอร์ Google Global Cache เพื่อเพิ่มประสิทธิภาพด้านภาระเครือข่าย
- ในอดีตมีการกำหนดช่วงวิดีโอด้วย query parameter แบบง่าย ๆ แต่ล่าสุดได้เปลี่ยนมาใช้โปรโตคอลไบนารีเฉพาะชื่อ SABR(Server ABR)
- SABR สามารถส่ง backoff (คำสั่งหน่วงเวลา) เพื่อให้ไคลเอนต์รอตามเวลาที่กำหนดเมื่อจำเป็น
สาเหตุที่แท้จริงของบัฟเฟอร์ปลอม
- เมื่อมีการ ตรวจพบตัวบล็อกโฆษณา, InnerTube จะใส่ backoff ในสตรีม GVS ตาม 80% ของความยาวโฆษณา
- backoff นี้จะ ถูกใช้เสมอหากอยู่ในกลุ่ม A/B test โดยไม่ขึ้นกับว่าจะบล็อกโฆษณาหรือไม่
- ผู้ใช้ที่ไม่ได้บล็อกโฆษณาจะไม่รู้สึกถึงความหน่วงนี้ เพราะระบบ backend โหลด content video ไว้ล่วงหน้า
- การแจ้งเตือนอย่าง "Experiencing interruptions" เป็นผลที่เกิดจาก backoff ระยะยาว
- ข่าวลือบนเว็บอย่างเรื่อง "ปัญหา CPU ทำงานหนักเกินไป" นั้นไม่เป็นความจริง
วิธีบล็อกโฆษณาตั้งแต่ต้นทาง
- เพื่อ ไม่รับสตรีมโฆษณาตั้งแต่แรก สามารถตั้งค่า
isInlinePlaybackNoAd ให้เป็น true ได้
- หากมีรายการ
"isInlinePlaybackNoAd":true อยู่ในคำขอ JSON, InnerTube จะไม่รวมทั้งโฆษณาและ backoff
- ผู้ใช้ uBlock Origin สามารถแทรกกฎที่เกี่ยวข้องลงในตัวกรองผู้ใช้เพื่อให้มีผลอัตโนมัติได้
- คุณสมบัตินี้สามารถตรวจสอบได้จาก JavaScript ฝั่งฟรอนต์เอนด์และนิยาม Protocol Buffers
ข้อจำกัดและผลข้างเคียง
- วิธีนี้เลี่ยงได้เฉพาะการ นำทางภายในแอปหน้าเดียวของ YouTube ที่โหลดค้างอยู่แล้ว (warm loading)
- ตอนเข้าใช้งานครั้งแรก (cold loading) จะใช้ไม่ได้ เพราะมีข้อมูลตั้งต้นที่ backend ส่งมาให้
- ความพยายามลบข้อมูลตั้งต้นแบบบังคับอาจทำให้เกิด ปัญหาหลายอย่าง เช่น ไลฟ์สตรีม ความเร็วหน้าเว็บ และประสบการณ์ใช้งาน
การเลี่ยงการบล็อกของสคริปต์ล็อก (Locker Script)
- YouTube แทรก สคริปต์ล็อกที่ทำให้อ็อบเจ็กต์ระดับโกลบอลแก้ไขไม่ได้ ไว้ด้านบนแท็ก `` สำหรับผู้ใช้ในกลุ่มทดลองบางส่วน
- ส่วนขยายอย่าง uBlock Origin จะ hook อ็อบเจ็กต์ได้เฉพาะก่อนที่สคริปต์นี้จะทำงานเท่านั้น
- Firefox สามารถเลี่ยงได้ด้วยการกรอง HTML แต่เบราว์เซอร์ Chromium ไม่รองรับวิธีนี้
- เพื่อรับมือ จึงสามารถใช้วิธี hook
Object.assign เพื่อเลี่ยงตัวกรองได้
- หากใช้วิธีนี้ ก็สามารถใช้ความสามารถ Proxy ขั้นสูงเพื่อแทรก
"isInlinePlaybackNoAd":true ได้
1 ความคิดเห็น
ความเห็นจาก Hacker News
มีคนแชร์ประสบการณ์ว่าเพิ่งเลิกใช้ YouTube ไปแบบเด็ดขาด เดิมทีเป็นผู้ใช้ที่ดูคอนเทนต์ความรู้และวิทยาศาสตร์คุณภาพสูงวันละหลายชั่วโมง แต่สุดท้ายก็รู้สึกว่าจริง ๆ แล้วไม่ได้จำเป็น แถมชีวิตยังสะอาดขึ้นเพราะไม่มีโฆษณา แม้ว่าบางครั้งจะยังดูเมื่อมีคนส่งลิงก์มาให้ แต่ก็ไม่เข้าไปเองอีก พร้อมแนะนำอย่างจริงจังให้ทุกคนลดการเสพความบันเทิงแบบรับอย่างเดียวอย่าง YouTube แล้วเอาเวลาไปใช้กับกิจกรรมที่สร้างสรรค์และมีสติมากกว่า
มีคนบอกว่าก็จ่ายเงินใช้งานไปเลยก็ได้ ตอนนี้ทั้งครอบครัวใช้แพ็กเกจสมัครสมาชิกและอยู่ในสภาพแวดล้อมแบบไร้โฆษณา รู้สึกว่าคุ้มค่ามาก ต่อให้จะสร้างโปรเจกต์แต่งมอเตอร์ไซค์ให้เสร็จได้โดยไม่ต้องมีวิดีโอก็ตาม แต่ก็คิดว่าไม่เห็นจำเป็นต้องฝืนทำแบบนั้น
อีกคนบอกว่าเลิก Netflix แบบเดียวกัน และยกเลิก Prime จนหยุดใช้ Amazon ทั้งหมดด้วย แน่นอนว่า AWS เป็นข้อยกเว้นเพราะแทบเลี่ยงไม่ได้เรื่องข้อมูล ส่วน YouTube ยังใช้อยู่ผ่านแพ็กเกจไม่มีโฆษณา และถ้าวันไหนผิดสัญญาเรื่องไร้โฆษณา YouTube ก็จะโดนแบนถาวรเหมือนกัน
มีคนลบบัญชี YouTube แล้วไปใช้ Patreon แทน วิดีโอจากครีเอเตอร์ที่สนับสนุนบน Patreon ยังดูผ่าน YouTube ได้พร้อมการแจ้งเตือนเหมือนเดิม ซึ่งทำให้การเสพคอนเทนต์เป็นไปอย่างตั้งใจมากขึ้นและได้คุณภาพมากขึ้นด้วย
มีความเห็นว่าความจริงที่คนจำนวนมหาศาลเสพติดแพลตฟอร์มแบบนี้ คือยุคของ “บุหรี่ 2.0”
มีคนแนะนำว่า รายการวิทยาศาสตร์ที่ดีที่สุดจำนวนมากก็มีอยู่บนแพลตฟอร์มอย่าง PBS และ Nebula เช่นกัน
มีความเห็นว่า ตราบใดที่ Google ยังเดินหน้าบังคับโฆษณา เราก็ต้องจับตาและไวต่อความไม่เหมาะสมรวมถึงความหลอกลวงของโฆษณาที่เราถูกยัดเยียดมากขึ้น โดยเฉพาะเมื่อการบล็อกโฆษณากลายเป็นวิธีเดียวที่ปกป้องตัวเองและครอบครัวจากโฆษณาอันตรายได้ ก็ยิ่งควรเรียกร้องให้ Google รับผิดชอบต่อโฆษณาที่ตัวเองเผยแพร่มากกว่านี้
มีคนบอกว่าตกใจกับระดับความต่ำและความไม่เหมาะสมของโฆษณา YouTube ช่วงนี้มาก ผู้บริหารดูเหมือนจะลดมาตรฐานลงจนติดดินเพื่อ KPI โบนัส และการเลื่อนตำแหน่ง ถึงขั้นเคยเห็นโฆษณาสื่อลามกในรูป thumbnail บนมือถือ ซึ่งแย่ยิ่งกว่าโฆษณา Evony Online สมัยก่อนอีก และมองว่านี่เป็นสัญญาณว่า YouTube เริ่มโตไม่ออกแล้ว
มีคนเปรียบเทียบว่าทีวีมีการควบคุมช่วงเวลาโฆษณาอย่างเป็นระบบ แต่ YouTube กลับมีโฆษณาห่วย ๆ ยาว ๆ เต็มไปหมด บางครั้งเปิดฟังเป็นพื้นหลังอยู่ แค่ข้ามโฆษณาแบบกดข้ามได้ใน 5 วินาที ยังเจอโฆษณา 30 นาทีหรือแม้แต่ infomercial ที่ยาวกว่านั้นแทรกเข้ามา สถานการณ์ที่ยอมให้โฆษณายาวแบบนี้มาขัดจังหวะการรับชมโดยไม่ได้ตั้งใจดูทั้งแปลกและแทบจะเป็นอาชญากรรม พร้อมเดาว่า YouTube คงเก็บค่าโฆษณาจากแบบนี้ได้มหาศาล
มีคนย้ำหลักการว่าความพยายามและแรงงานที่ใช้สร้างคอนเทนต์และแพลตฟอร์มควรได้รับค่าตอบแทนอย่างเป็นธรรม หนังสือ หนัง ภาพยนตร์ ทีวี ข่าว และคอนเทนต์ทุกประเภทต่างก็มีต้นทุน ไม่ว่าจะจ่ายด้วยเงินหรือด้วยการดูโฆษณาก็ตาม ถ้าไม่ชอบโฆษณาก็แนะนำให้สมัครแบบเสียเงิน
มีคนเชียร์นักพัฒนาตัวบล็อกโฆษณาแบบขำ ๆ ว่า ถ้ามีธง “Thin Adblock Writer Line” คงเอาไปติดรถแล้ว
มีคนเสนอแบบตรง ๆ ว่าก็แค่จ่ายแพ็กเกจพรีเมียม ไม่มีใครบังคับให้ต้องใช้ YouTube
มีการพูดถึงว่าใน Firefox สามารถบล็อกโฆษณาได้ง่ายด้วย HTML filter แต่กลับตกใจที่ทำแบบนี้บน Chromium ไม่ได้เพราะไม่มี extension API ที่รองรับ จึงช็อกกับความต่างของสภาพแวดล้อมการพัฒนา
มีคนบอกว่าช่วงหลังเจอการหน่วงเวลา buffer ของ YouTube บ่อย แต่จริง ๆ ไม่ได้รู้สึกรำคาญมาก สิ่งที่รบกวนในโฆษณาไม่ใช่เรื่องเวลา แต่เป็นการยัดเสียงและภาพที่ไม่ต้องการเข้ามา ในช่วง buffer 12 วินาทีก็แค่เช็กอีเมลหรือปล่อยใจลอยสั้น ๆ จนปรับตัวได้ตามธรรมชาติ กลับรู้สึกว่าถ้ามันเกิดทุกครั้ง สมองจะเมินมันไปเองอัตโนมัติ แต่ถ้าเกิดนาน ๆ ทีแบบ 1 ใน 5 ครั้ง อาจน่าหงุดหงิดกว่า
มีคำถามเชิงหลักการว่า “ทำไมเราถึงทำให้การบล็อกโฆษณาดูเป็นเรื่องชอบธรรม? คอนเทนต์มีต้นทุน การเก็บและแจกจ่ายก็มีต้นทุน แล้วเรามีเหตุผลทางศีลธรรมหรือความรู้สึกว่าตัวเองมีสิทธิพิเศษอะไรในการบล็อกโฆษณาหรือ?” ถ้าเหตุผลมีแค่ว่าโฆษณาน่ารำคาญ ก็ควรถามตัวเองต่อว่า “ทำไมเราถึงคิดว่าของฟรีเป็นเรื่องปกติ” พร้อมย้ำว่านี่ไม่ใช่การตัดสินทางศีลธรรม แต่เป็นคำถามเพื่อทำความเข้าใจจริง ๆ
มีคนอธิบายว่าในอดีต Google AdSense เคยจำกัดโฆษณาไว้ 3 ชิ้นต่อหน้า และถ้าฝ่าฝืนอาจถูกระงับ แต่ตอนนี้หน้าเว็บหนึ่งกลับฝังโฆษณา 10 หรือ 15 ชิ้นขึ้นไป YouTube เองก็เริ่มจากแบนเนอร์ก่อนจะลามไปถึงโฆษณาก่อนวิดีโอ โฆษณาคั่นกลาง ช่วงสปอนเซอร์ในตัวคอนเทนต์ และแม้แต่โฆษณาด้านล่างสำหรับสมาชิกพรีเมียม ขนาด Google Search ยังถูกโฆษณากินพื้นที่ด้านบนจนต้องเลื่อนลงไปมากถึงจะเจอผลลัพธ์จริง ไม่ได้อยากอ้างสิทธิ์ว่าต้องใช้ฟรี แต่รู้สึกว่า “มันเกินไปแล้ว” จึงใช้ adblock บนอุปกรณ์ทุกเครื่อง
มีคนชี้ว่าคำถาม “ทำไมเราถึงรู้สึกว่ามีสิทธิในของฟรี?” นั้นไม่ตรงกับวิธีคิดของผู้ใช้จริง ๆ ผู้คนทำก็เพราะทำได้และอยากทำ และถ้าจะห้ามก็ควรต้องมีเหตุผลทางจริยธรรมที่หนักแน่น ไม่มีหน้าที่ทางศีลธรรมใดที่บังคับให้ใครต้องดูโฆษณา ตรงกันข้าม โฆษณาเป็นสิ่งที่ออกแบบมาเพื่อชักจูงความสนใจของมนุษย์และหาประโยชน์จากมัน อีกทั้งยังรุกล้ำความเป็นส่วนตัวโดยเนื้อแท้ จึงเป็นข้อตกลงที่ไม่อาจบังคับกันได้ตั้งแต่ต้น
มีคนอุปมาว่า Google ทำตัวเหมือนอยู่ข้างผู้ใช้ แต่จริง ๆ กลับเป็นปฏิปักษ์และต่อต้านการแข่งขันมากขึ้นเรื่อย ๆ การบล็อกโฆษณาจึงเหมือนการหยิบปืนขึ้นมาในสงคราม เดิมทีโฆษณาเป็นสิ่งที่บล็อกได้ยากหรือแทบเป็นไปไม่ได้ แต่โฆษณาที่เราบล็อกกันทุกวันนี้ส่วนใหญ่จริง ๆ แล้วเป็นลูกผสมระหว่างโฆษณากับการสอดส่องติดตาม พร้อมแนบลิงก์บทความและข้อมูลพื้นฐานเพิ่มเติม
มีคนชี้ว่าโครงสร้างรายได้ของ YouTube ทำให้ครีเอเตอร์ได้รับ 55% ของรายได้ทั้งหมด ท่ามกลางกระแสวิจารณ์ระบบที่เน้นกำไรมหาศาลของ Google ความจริงก็คือต้นทุนก้อนใหญ่ส่วนหนึ่งไหลกลับไปหาครีเอเตอร์ การสนับสนุนแบบตั้งใจจริงอย่าง Patreon มักมีแต่แฟนตัวยงส่วนน้อยที่ทำ ขณะที่ผู้ใช้ส่วนใหญ่เหมือนกินมื้อฟรีในร้านอาหารแล้วยังบ่น แต่ก็เลี่ยงไม่อยากรับภาระต้นทุนเอง
มีคนชี้ว่าการใช้ Object.defineProperty ทำให้พร็อพเพอร์ตีของ global object กลายเป็นแบบเปลี่ยนค่าไม่ได้ จนสคริปต์สามารถหลบการบล็อกผ่าน decoy object ได้ นี่ถือเป็นข้อบกพร่องร้ายแรงของเบราว์เซอร์หรือของสเปกเอง เพราะหน้าเว็บและสคริปต์ไม่ควรมีอำนาจไปจำกัดการทำงานของส่วนขยายเบราว์เซอร์
มีคนบอกว่าจุดประสงค์ของการบล็อกโฆษณาสำหรับตัวเองคือการหลีกเลี่ยงสิ่งรบกวนสมาธิและการสลับบริบท เพราะข้อมูลจากโฆษณาทำให้เกิดภาระทางการรับรู้เกินพอดี จึงทนความไม่สบายใจที่มันเพิ่มเข้ามาบนภาระทางสมองที่สูงอยู่แล้วไม่ได้
มีคนย้อนถามว่าดู YouTube แล้วภาระทางการรับรู้จะสูงได้อย่างไร หรือว่าระหว่างดูอยู่กำลังสังเกตวิดีโอฝึกผ่าตัดจริงและทำการปลูกถ่ายหัวใจอยู่หรือเปล่า
อีกความเห็นบอกว่าจ่ายแค่ 13 ดอลลาร์ต่อเดือนก็แก้ปัญหาเรื่องการสลับบริบทได้ง่าย ๆ ถ้าภาระทางการรับรู้สูงขนาดนั้นก็น่าจะมีรายได้ดีพออยู่แล้ว วิธีนี้จึงน่าจะคุ้มกว่า
มีคนเล่าตรง ๆ ว่าทั้งครอบครัวยินดีจ่าย Youtube Premium เพื่อเอาโฆษณาออกและยังรักษารายได้ให้คอนเทนต์ครีเอเตอร์ด้วย
อีกคนบอกว่าไม่เห็นด้วยเลยและใช้ Newpipe แทน ใช้งานแบบไม่มีโฆษณาโดยไม่ต้องจ่ายเงินสักบาท
มีคนบอกว่าไม่แน่ใจว่าข้อความข้างบนเป็นมุกเสียดสีหรือไม่ แต่ถ้าพูดจริง ก็รู้สึกแปลกใจที่ได้เห็นคนยินดีและเต็มใจจ่ายเงินเพิ่มให้เจ้าที่ดินรายใหญ่ของอินเทอร์เน็ตแบบนั้น
มีคนมองว่าน่าแปลกที่ YouTube ยังไม่ฉีดโฆษณาเข้าไปใน video stream โดยตรงเสียเลย เพราะในสภาพแวดล้อม HLS/DASH สามารถแทรกคอนเทนต์ระหว่างทางได้ง่าย ถ้ารวมโฆษณาไว้ในสตรีมก็จะบล็อกยากขึ้นมาก ยิ่งถ้าจำกัดการส่งแพ็กเก็ตตามความเร็วการเล่น ก็จะกันการดาวน์โหลดล่วงหน้าเพื่อเลี่ยงโฆษณาได้ด้วย
อีกคนอธิบายว่าแม้ในสภาพแวดล้อมแบบนี้ HLS ก็ถูกปรับแต่งเพื่อฮาร์ดแวร์ในวงกว้างอย่างมากอยู่แล้ว ดังนั้นถ้าจะเพิ่มภาระการคำนวณเพื่อทำโฆษณาแบบเจาะกลุ่ม ต้นทุนก็จะพุ่งขึ้นแน่นอน พร้อมแนะนำให้ไปดูเอกสารของ Netflix เรื่องการปรับประสิทธิภาพ streaming edge server เพื่อเข้าใจประเด็นนี้มากขึ้น
มีการวิเคราะห์ว่า YouTube คงไม่อยากเปลี่ยนเร็วเกินไป แต่จะค่อย ๆ ทำทีละขั้น และคาดว่าในไม่ช้าคงได้เห็นสถานการณ์ที่โฆษณาถูกแทรกเข้าไปในสตรีมโดยตรง ปัจจุบันสตรีมโฆษณากับสตรีมวิดีโอยังแยกกันอยู่ แต่ก็มีการทดลอง server-side ad insertion อยู่แล้วต่างหาก
มีคนยกตัวอย่างกระแสการบล็อกโฆษณาแบบพึ่งพาปัญญาร่วมจาก timestamp อย่าง SponsorBlock และ Tubular พร้อมมั่นใจว่าอนาคตก็จะมีตัวบล็อกโฆษณาที่ใช้ AI บนอุปกรณ์เพื่อรู้จำคอนเทนต์แบบเรียลไทม์ ต่อให้พยายามกันแค่ไหน การบล็อกโฆษณาก็คงไม่จบง่าย ๆ
อีกคนบอกว่า YouTube กำลังทำ A/B test กับ server-side ad insertion (SSAI) อยู่จริง แม้ตัวเองจะยังไม่เคยเจอโฆษณาแบบนั้น แต่ก็แชร์สถานะปัจจุบันไว้
มีความเห็นว่าถ้าฝั่งไคลเอนต์แทรกโฆษณาเข้าไปในวิดีโอได้ ก็ย่อมตัดมันออกได้เช่นกัน ถ้าใช้ฐานข้อมูลแบบกลุ่มชนเหมือน sponsorblock ก็ตรวจจับโฆษณาได้ดีพอ และแม้แต่โฆษณาในสตรีมก็น่าจะเลี่ยงการบล็อกไม่ได้เช่นกัน