1 คะแนน โดย GN⁺ 2023-07-11 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • PR #927 ของ zedeus/nitter “Fix everything” ถูก merge เข้า master เมื่อวันที่ 10 กรกฎาคม 2023 ทำให้มีการเปลี่ยนแปลงเพื่อกู้คืนฟีเจอร์ที่เสียไป
  • การกู้คืนทำโดยใช้ bearer token ใหม่ และชุด endpoint ที่อัปเดตแล้ว พร้อมอัปเดต parser ไปด้วย
  • ฟีเจอร์ค้นหายังไม่กลับมาสมบูรณ์ โดย ณ คอมมิตนั้น เปิดใช้งานการค้นหาผู้ใช้ แล้ว แต่ปิดการค้นหาทวีตอยู่
  • การเปลี่ยนแปลงเพิ่มเติมคือ multi-user timelines ถูกปิดใช้งานชั่วคราว และรวมถึงการแก้ parsing ของ pinned tombstone
  • RSS ใช้งานได้ แต่ ถูกปิดไว้บน nitter.net ดังนั้นการใช้งานได้หรือไม่จึงขึ้นอยู่กับการตั้งค่าของแต่ละอินสแตนซ์

ขอบเขตของการแก้ไขที่ถูก merge

  • PR #927 ของ zedeus/nitter “Fix everything” ถูก merge จากสาขา elon-fix เข้า master
    • วันที่ merge คือ 10 กรกฎาคม 2023
    • มีทั้งหมด 4 คอมมิต
    • หลัง merge แล้ว สาขา elon-fix ถูกลบ

วิธีการกู้คืนหลัก

  • แกนหลักของการเปลี่ยนแปลงคือการใช้ bearer token ใหม่ และชุด endpoint ที่อัปเดตแล้ว
  • parser ถูกอัปเดตไปพร้อมกัน เพื่อให้ทำงานสอดคล้องกับโครงสร้าง response ที่เปลี่ยนไป
  • ในคำอธิบายเบื้องต้น ฟีเจอร์ที่ยังขาดถูกสรุปว่าเป็น search

การเปลี่ยนแปลงเกี่ยวกับการค้นหาและไทม์ไลน์

  • การค้นหาถูกกู้คืนมาเพียงบางส่วน
    • คอมมิต Enable user search, disable tweet search ทำให้ การค้นหาผู้ใช้ ถูกเปิดใช้งาน
    • การค้นหาทวีต ถูกปิดใช้งาน
  • คอมมิต Disable multi-user timelines for now ทำให้ multi-user timelines ถูกปิดใช้งานชั่วคราว

การแก้ไข parsing

  • มีคอมมิต Fix parsing of pinned tombstone รวมอยู่ด้วย
  • ปัญหาการ parsing ที่เกี่ยวข้องกับ pinned tombstone ถูกแก้ไขแยกต่างหาก

สถานะของ RSS

  • ในคอมเมนต์มีคำถามว่า RSS ใช้งานได้หรือไม่
  • zedeus ตอบว่า RSS ใช้งานได้ แต่ถูกปิดไว้บน nitter.net
  • ดังนั้นการรองรับ RSS เอง กับสถานะการเปิดใช้งานบน nitter.net จึงเป็นคนละเรื่องกัน

1 ความคิดเห็น

 
GN⁺ 2023-07-11
ความเห็นจาก Hacker News
  • คำเตือน: อาจฟังดูยืดยาวและเหมือนคุยอวดแบบเกี่ยวข้องนิดหน่อย แต่สรุปคือ การหลบเลี่ยงการจำกัดอัตราการใช้งานของ Twitter ไม่ได้ยากขนาดนั้น
    ผมไม่อยากไปยุ่งกับ certificate pinning ที่น่ารำคาญของ Twitter เลยเอา Twitter APK ไปรันบน Corellium แล้วเปิด "network monitor" จากนั้นก็เปิดแอป Twitter ที่ยังใช้งานได้โดยไม่ต้องล็อกอิน
    พอลองค้นหาและดูทวีตพร้อมตรวจ log ของคำขอ ก็พบว่ามีกระบวนการ guest token คล้ายกับบนเว็บไซต์ ต่างกันแค่ไม่กี่จุด
    ถ้าจำลองคำขอเหล่านี้ได้ ก็สามารถสร้าง OAuth token ที่ไม่มีวันหมดอายุได้วันละหลายตัวต่อ 1 IP โทเค็นพวกนี้เป็นของผู้ใช้ที่ยังไม่ยืนยันตัวตน เลยไม่มีสิทธิ์เขียน แต่กรณีนี้ก็ไม่ได้ต้องใช้
    ถ้าซื้อแบนด์วิดท์สัก 1GB จากผู้ให้บริการพร็อกซีที่มี IP pool ขนาดใหญ่ ก็สามารถใช้แบนด์วิดท์น้อยมากเพื่อเอา token/secret มาหลายพันชุดได้ง่าย ๆ และแต่ละชุดก็มีข้อจำกัดอัตราการใช้งานแยกกัน โดยไม่สำคัญเลยว่าจะเอาโทเค็นไปใช้จาก IP ไหนจริง ๆ
    หลังจากนั้นก็ทำตาม https://docs.google.com/document/d/1xVrPoNutyqTdQ04DXBEZW4ZW... และอาศัยข้อเท็จจริงที่ว่า /statuses/lookup.json ยังคืนทวีตได้ทีละ 100 รายการ เพื่อประกอบสิ่งที่ใกล้เคียงกับ Twitter 50% Firehose ขึ้นมาใหม่
    Twitter ไม่ได้บล็อกแม้แต่ IP ของดาต้าเซ็นเตอร์ ผมตั้งใจจะเอาข้อมูลไปแสดงที่ https://firehose.lol แต่รู้สึกไม่สบายใจกับการที่ต้องยิงคำขอหลายร้อยครั้งต่อวินาที สุดท้ายเลยปิดโปรแกรมและไม่ปล่อยให้มันรันเกินไม่กี่นาที
    การได้ดูส่วนหนึ่งของ Firehose อยู่ไม่กี่นาทีนั้นน่าสนใจมาก ตอนแรกผมลืมซ่อนทวีตที่ถูกทำเครื่องหมายว่า possibly_sensitive เลยเห็นของค่อนข้างวาบหวิวอยู่ไม่กี่วินาที ทั้งที่ Twitter ถูกบล็อกในจีนแต่กลับมีโฆษณาพนันภาษาจีนเยอะมาก มีบัญชีโปรโมตการลงทุนที่น่าสงสัย บัญชีชื่อประมาณ FirstnameLastname3781264872 ที่ทวีตคำสุ่มสามคำทุก ๆ ไม่กี่วินาที และยังมีทวีตตลก ๆ อีกไม่กี่อัน

    • ถ้าใช้ archive.md ก็สามารถ เลี่ยงการจำกัดอัตราการใช้งาน ได้ง่ายกว่า แม้ประสิทธิภาพจะแย่กว่ามาก archive.md ไม่ได้รับผลจาก rate limit เลยมีประโยชน์ถ้าแค่อยากเปิดดูทวีตเป็นครั้งคราวโดยไม่ต้องมีบัญชี
  • นี่น่าจะเป็น โปรเจกต์ Nim ที่น่าประทับใจที่สุดเท่าที่ผมเคยเห็น การสร้างฟรอนต์เอนด์หลักขึ้นมาใหม่ ทำให้ระบบยืนยันตัวตนใช้งานได้ และยังรองรับพฤติกรรมประหลาดของ private API ได้ด้วย เป็นงานใหญ่มาก
    ถ้าเป็นบริบทภายใน Twitter จริง ๆ ก็คงต้องมีทีมมากกว่า 20 คนมาดูแลฟีเจอร์นี้ ขอปรบมือให้ผู้เขียนที่ทำสิ่งนี้สำเร็จ

    • ฟรอนต์เอนด์ใช้ Karax ซึ่งเป็น ไลบรารีฟรอนต์เอนด์/แอปหน้าเดียว ที่ผมชอบที่สุดในทุกภาษา แม้จะมีส่วนที่หยาบ ๆ อยู่บ้าง แต่ใช้งานแล้วสนุกมากจริง ๆ
      https://github.com/karaxnim/karax
    • แน่นอนว่าถ้าเป็น Twitter ก็คงมีทีมมากกว่า 20 คน แต่ก็เป็นเพราะว่า ต่อให้ Nitter ล่ม ก็แทบไม่มีใครเดือดร้อนมากนัก
  • ตลกดีที่ผลของการจำกัดอัตราการใช้งานแทบไม่กระทบบอตกับสแครปเปอร์เลย แต่กลับสร้างความเสียหายหนักให้กับ ผู้ใช้ทั่วไป ของเว็บไซต์

    • เป็นแค่ข้อมูลเชิงประสบการณ์ส่วนตัวมาก ๆ แต่ในบัญชีของผม กิจกรรมบอตเพิ่มขึ้นมาตลอดเดือนก่อน แล้วหลังมีมาตรการ rate limit ล่าสุดก็หยุดไปเลย
    • ถ้าจะเปิดโหมดทฤษฎีสมคบคิดล่ะก็ จะเป็นยังไงถ้านั่นคือเป้าหมายตั้งแต่แรก? Twitter เคยเป็นพื้นที่สำคัญสำหรับการจัดการประท้วงอย่าง Arab Spring หรือ Occupy Wall Street
      หนึ่งในคนที่รวยที่สุดในโลกและมีจุดยืนต่อต้านสหภาพแรงงานอย่างมาก ได้เข้ามาซื้อพื้นที่นั้นแล้วทำให้มันใช้งานไม่ได้ ในช่วงเวลาที่ความเหลื่อมล้ำรุนแรงขึ้นและความเป็นปึกแผ่นทางสังคมกำลังพังทลาย
      ตอนนี้ไม่มีพื้นที่สำหรับการจัดตั้งอีกต่อไป และภัยคุกคามต่อทุนก็ลดลงไปหนึ่งอย่าง
    • หลายกรณีก็เป็นแบบนั้นจริง ๆ แทบไม่ว่าจะเพิ่มข้อจำกัดแบบไหน สุดท้าย ผู้ใช้ทั่วไปที่ใช้งานเบา ๆ จะเป็นฝ่ายเจ็บตัว เพราะผู้โจมตีมักไม่ใช่ผู้ใช้เบา ๆ
    • ดูเหมือนว่าหลัง Elon ซื้อเว็บไป บอตกลับยิ่งเพิ่มขึ้นเรื่อย ๆ ผมได้รับ DM จากบัญชีสแปมมากขึ้นตลอด แถมยังมีที่ดูเหมือนมาจากญี่ปุ่นด้วย
      ไม่ว่า Elmo จะทำอะไร ก็ดูเหมือนจะไม่ได้ผลสักอย่าง
  • หลัง API เปลี่ยน bearer token เริ่มต้นที่ผมใช้ก็ใช้ไม่ได้เหมือนกัน แต่พอเปลี่ยนตามวิธีเดียวกัน แอปดาวน์โหลด Twitter Spaces ของผมก็กลับมาใช้งานได้ปกติอีกครั้ง
    0: https://github.com/Chiplis/moonbird

  • ตอนนี้ถ้าไม่ล็อกอินก็ยังดูโปรไฟล์หรือ replies บน Twitter ไม่ได้ ซึ่งสุดยอดจริง ๆ
    ผมเป็น ผู้ใช้ Nitter มา 4 ปีแล้ว และจะใช้ต่อไปตราบใดที่มันยังทำงานอยู่

    • ใช้ RSS ได้ด้วย แค่เติม /rss ต่อท้าย URL
  • นี่มันเรื่องประเภท Fight Club ที่ไม่ควรพูดถึงนะ

    • แต่หน้า Nitter ก็ถูก Google ทำดัชนีอยู่แล้ว เพราะงั้นก็ไม่ได้เป็นความลับอะไรนัก
  • นี่ถาวรจริงหรือเปล่า? ผมอยากรู้เพิ่มเติมเกี่ยวกับ bearer token นี้
    ใน issue thread อื่นบน GitHub ดูเหมือนว่าทุกครั้งที่มีคนหาวิธีเลี่ยงมาตรการป้องกันของ Twitter ได้ สุดท้ายก็จะถูกปิดช่องโหว่เสมอ
    ดูเหมือนว่าในซอร์สโค้ดจะฮาร์ดโค้ดโทเค็นนี้ไว้แบบตรง ๆ ซึ่งแปลว่า Nitter หลายพันอินสแตนซ์ทั่วโลกกับผู้ใช้อีกหลายพันคนจะใช้โทเค็นเดียวกัน
    บริษัท AI ต่าง ๆ ก็อาจนำโทเค็นนี้ไปใช้ได้เหมือนกัน เลยไม่เข้าใจว่าทำไมมันยังใช้งานต่อได้

    • ดูเหมือนว่าโทเค็นนี้เป็นตัวเดียวกับที่ใช้ในแอปเว็บ/มือถือทางการของ Twitter เพราะงั้นผมคิดว่า Twitter เลยไม่สามารถปิดใช้งานหรือบล็อกมันได้ง่าย ๆ ทันที
    • ผมสงสัยว่าทำไม "API" แบบไม่เป็นทางการถึงยังถูกปล่อยให้ใช้งานได้เป็นพัก ๆ ผมก็ขอบคุณที่ได้ใช้ Nitter อยู่หรอก แต่ก็รู้สึกว่ามันมีอะไรไม่ค่อยสมเหตุสมผล
    • ดูเหมือนว่า API เก่าเริ่มกลับมาใช้งานได้อีกครั้ง
    • นั่นคงเป็นเหตุผลว่าทำไม NewPipe ถึงใช้งานไม่ค่อยได้เกือบตลอดเวลา และถึงใช้ได้ก็ช้าจนน่าขัน
  • นี่หมายความว่าการเข้าถึงแบบไม่ระบุตัวตนกลับมาแล้ว Nitter เองก็ไม่ได้ใช้ Twitter API ที่หายไปแล้วอยู่ดี เคยมีช่วงที่กลับมาใช้ได้ชั่วคราว
    Twitter จำเป็นต้องมีเว็บพอร์ทัลแบบ noscript/basic (x)html ที่ทำงานร่วมกันได้

  • งั้น AI Scrapocalypse ก็ไม่ใช่ประเด็นวิกฤตถึงตายอีกต่อไปแล้วหรือ?

    • ตั้งแต่แรกผมก็สงสัยแล้วว่านั่นเป็นเหตุผลจริงของ rate limit หรือเปล่า
    • หรืออาจเป็นไปได้ว่าเขาขู่จะไล่เหล่านางฟ้าโรงงานออกอย่างหนัก จนพวกนางฟ้าต้องทำงานข้ามคืน นอนบนที่นอนเก่า ๆ ในออฟฟิศ แล้วช่วยกันทำ Make Twitter Scale Again สำเร็จ จนตอนนี้โลกของ load balancer กลับมาสงบสุขอีกครั้ง
  • นี่คล้ายกับ ช่องโหว่แบบแอนะล็อก ตราบใดที่ข้อมูลยังถูกส่งจากเซิร์ฟเวอร์ไปยังไคลเอนต์ การสแครปก็จะเป็นไปได้เสมอ
    เพียงแต่ Apple พยายามทำให้มันยากขึ้น: https://developer.apple.com/documentation/devicecheck/prepar...

    • ผมไม่ใช่นักพัฒนา iOS แต่อยากรู้ว่า App Attest มีความหมายอย่างไรกับช่องโหว่ที่ใช้กันอยู่ตรงนี้