4 คะแนน โดย GN⁺ 1 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • การทำงานด้าน การควบคุมระยะไกลและระบบอัตโนมัติ ได้รับการเสริมอย่างมาก โดยมีโปรแกรม dilloc ใหม่และ UNIX socket ที่เปิดใช้งานเป็นค่าเริ่มต้น ทำให้ควบคุมเบราว์เซอร์ได้โดยตรงจากบรรทัดคำสั่งและสคริปต์
  • ตัวเลือก page_action ในเมนูคลิกขวาของหน้าช่วยให้รันคำสั่งใดก็ได้ และเมื่อใช้ร่วมกับ dilloc ก็สามารถสั่งโหลดหน้าปัจจุบันใหม่หรือแทนที่เนื้อหาได้
  • การจัดการ การล็อกอิน OAuth ถูกปรับให้อนุญาตคุกกี้เป็นกรณีพิเศษใน main page redirect ที่ตามมาจากคำขอที่ผู้ใช้เริ่มเอง ทำให้โฟลว์การยืนยันตัวตนทำงานได้โดยยังคงบล็อกคุกกี้ของบุคคลที่สามไว้
  • เพิ่ม การรองรับ FLTK 1.4 แบบทดลอง เป็นครั้งแรก โดยสามารถคอมไพล์ด้วย --enable-experimental-fltk แต่ยังมีปัญหาการเรนเดอร์ในจอ DPI สูงหรือบน Wayland จึงไม่ควรเปิดเป็นค่าเริ่มต้นสำหรับผู้ใช้ทุกคน
  • รวมถึง การรองรับ brotli แบบเลือกได้, about:keys·about:cache·about:dicache, การเปิดใช้ IPv6 เป็นค่าเริ่มต้น, การปรับปรุงพฤติกรรมของแท็บ เมาส์ และคลิปบอร์ด ตลอดจนการแก้บั๊กด้านความปลอดภัยและการบิลด์หลายรายการ ช่วยยกระดับทั้งการใช้งานและความเสถียรโดยรวม

การเปลี่ยนแปลงสำคัญ

  • 3.3.0 มาพร้อมฟีเจอร์ใหม่ ตัวเลือกการตั้งค่า และการแก้บั๊ก พร้อมเพิ่ม การรองรับ FLTK 1.4 แบบทดลอง เป็นครั้งแรก
  • มีทั้ง การควบคุมผ่าน UNIX socket และการทำงานแบบกำหนดเองจากเมนูหน้าเว็บ ทำให้ควบคุมเบราว์เซอร์ได้โดยตรงจากสคริปต์และบรรทัดคำสั่ง
  • การแก้ไขการล็อกอิน OAuth ปรับวิธีจัดการคุกกี้ระหว่างการรีไดเร็กต์ เพื่อให้โฟลว์การยืนยันตัวตนทำงานได้โดยยังคงการป้องกันการติดตามไว้

การควบคุมระยะไกลและระบบอัตโนมัติ

  • เพิ่มโปรแกรม dilloc ใหม่ เพื่อควบคุม Dillo จากบรรทัดคำสั่งหรือสคริปต์
    • จะค้นหาเป้าหมายจาก PID ในตัวแปรแวดล้อม DILLO_PID และหากไม่มีค่าจะค้นหาโปรเซส Dillo ที่มีอยู่เพียงตัวเดียว
    • มีคำสั่งควบคุม เช่น ping, pid, reload, ready, open URL, url, title, status, dump, hdump, load, rawload, quit, wait
  • remote control socket เปิดใช้งานเป็นค่าเริ่มต้น และหากต้องการสามารถปิดได้ด้วย --disable-control-socket
  • เมื่่อรันแอ็กชัน ระบบจะตั้งค่าตัวแปร DILLO_PID ทำให้ dilloc ควบคุมอินสแตนซ์ Dillo ปัจจุบันได้ทันที

Page action

  • เพิ่มตัวเลือก page_action เพื่อให้ รันคำสั่งตามต้องการ ได้จากเมนูคลิกขวาบนหน้าเว็บ
  • เมื่อใช้ page_action ร่วมกับ dilloc ก็สามารถสั่งโหลดเนื้อหาหน้าปัจจุบันใหม่หรือแทนที่ได้
    • ตัวอย่างเช่น หากตั้งค่า page_action="Mimic Chrome:curl_chrome136 $url | dilloc load" ก็จะสามารถใช้ curl impersonate ดึงหน้าเว็บใหม่ให้เหมือน Chrome แล้วใส่ HTML ลงในแท็บปัจจุบันได้ทันที
    • วิธีนี้สามารถใช้หลบ JS walls บางประเภทได้
  • ยังมีตัวอย่าง Fix page สำหรับรันสคริปต์แก้ไขเฉพาะหน้าปัจจุบันตาม URL, HTTP header และเงื่อนไขอื่น ๆ
    • สคริปต์ที่เกี่ยวข้อง fixpage.sh ดาวน์โหลดได้จาก คลัง actions

สถานะการรองรับ FLTK 1.4

  • เพิ่มการรองรับแบบทดลองที่คอมไพล์ได้บน FLTK 1.4.0 ขึ้นไป ด้วยแฟลก --enable-experimental-fltk
  • ฟีเจอร์นี้ใส่มาเพื่อการทดสอบและรับข้อเสนอแนะทางเทคนิค โดยมุ่งสำหรับ ผู้ใช้ที่มีประสบการณ์และผู้ทดสอบ
  • แนะนำให้ใช้ FLTK 1.4.5 release
  • บนแพลตฟอร์ม X11 ที่หน้าจอ 96 DPI, FLTK 1.4.5 ให้คุณภาพการเรนเดอร์ใกล้เคียงกับ FLTK 1.3
    • ใช้ได้ทั้งกับแบ็กเอนด์ Xft และ Pango
  • ในสภาพแวดล้อม DPI สูง โดยเฉพาะ DPI ที่ไม่ใช่พหุคูณของ 96 หรือบน Wayland ยังมีปัญหาการเรนเดอร์อยู่
  • ผู้ดูแลแพ็กเกจ Dillo ไม่ควรเปิด FLTK 1.4 เป็นค่าเริ่มต้นสำหรับผู้ใช้ทุกคน
    • เพราะอาจเกิดภาพเพี้ยนและปัญหาอื่น ๆ ได้

OAuth และการจัดการคุกกี้

  • เพื่อรองรับ การยืนยันตัวตนด้วย OAuth จึงมีการปรับพฤติกรรมให้อนุญาตคุกกี้ที่ถูกตั้งค่ามาจากการตอบกลับแบบรีไดเร็กต์
  • โดยปกติ Dillo จะบล็อก คุกกี้ของบุคคลที่สาม ทั้งหมด หากไม่ได้เกิดจากคำขอที่ผู้ใช้เริ่มเองโดยตรง
    • เป็นพฤติกรรมที่ออกแบบมาเพื่อป้องกันการติดตามผ่าน image pixel
  • การแก้ไขครั้งนี้ทำให้ main page redirect ที่ต่อเนื่องจากคำขอที่ผู้ใช้เริ่มเอง สามารถอนุญาตคุกกี้ได้เป็นกรณีพิเศษ
    • จึงทำให้ล็อกอิน OAuth ได้ โดยยังรักษาการป้องกันการติดตามไว้
  • ตัวอย่างที่ยกมาคือการล็อกอิน Fediverse ผ่าน Smolfedi

การเพิ่มฟีเจอร์ย่อยและการปรับปรุงพฤติกรรม

  • เพิ่มการรองรับ brotli br content encoding แบบเลือกได้
  • เพิ่ม about:keys เพื่อดู คีย์ลัดแป้นพิมพ์ ปัจจุบัน
  • เพิ่มหน้า about:cache และ about:dicache เพื่อดูข้อมูลแคชภายใน
  • เปิดใช้ IPv6 เป็นค่าเริ่มต้นหากแพลตฟอร์มรองรับ
  • ใช้คีย์ลัด Alt+ เพื่อโฟกัสแท็บลำดับที่ N ได้
  • ใช้ Control + left click เพื่อเปิดลิงก์ในแท็บใหม่ได้
  • ใช้ ปุ่มเมาส์ สำหรับสั่งย้อนกลับและไปข้างหน้าได้
  • หาก คลิกกลาง ที่ปุ่มย้อนกลับหรือไปข้างหน้า จะเปิดหน้านั้นในแท็บใหม่ได้
  • ปรับให้ Ctrl+C คัดลอกข้อความที่เลือกไปยังคลิปบอร์ด เพื่อให้สอดคล้องกับพฤติกรรมที่คาดหวังของ Ctrl+V
  • เพิ่มตัวเลือก mark_unloaded_images เพื่อแสดงกรอบรอบรูปภาพที่ยังไม่ถูกโหลด
  • เพิ่มระยะขอบของแถบตำแหน่ง ทำให้เลือกด้วยเมาส์ได้ง่ายขึ้น
  • ใน search_url จะจับคู่คำนำหน้าการค้นหาแบบ ตรงทั้งหมด ไม่ใช่การตรงบางส่วน
  • เพิ่มเสิร์ชเอนจิน Mojeek พร้อมคีย์ลัด mj
  • ปรับให้ซ่อน องค์ประกอบฟอร์ม เช่นปุ่มและช่องกรอกข้อมูลที่ถูกกำหนดด้วย CSS display:none
  • ปรับไม่ให้ใช้ การตอบกลับที่แคชไว้ ระหว่างการส่งฟอร์ม
  • รองรับเฮดเดอร์ Content-Disposition เพื่อกำหนดชื่อไฟล์ได้
  • เพิ่มตัวเลือก trace_http เพื่อ ดีบักทราฟฟิก HTTP

บั๊กที่แก้ไขและข้อมูลการเผยแพร่

  • แก้ปัญหา printf format % ที่ไม่ได้ escape ซึ่งทำให้เกิด ลูปไม่สิ้นสุด ใน vsource dpi บนสภาพแวดล้อม musl
  • แก้ segfault ที่เกิดระหว่าง CurveBall TLS test บน LibreSSL
  • แก้การ parse ค่า Max-Age ของคุกกี้ให้ใช้งาน epoch แทน local timezone
  • แก้ปัญหาการบิลด์บน NetBSD และปรับให้หลีกเลี่ยง sign extension ที่ไม่ถูกต้องของ ctype(3)
  • แก้ปัญหา use-after-free ในกล่องโต้ตอบการเชื่อมต่อระหว่าง HTTP server กับ OpenSSL
  • อัปเดต URL เว็บไซต์เป็น https://dillo-browser.org/ และคลัง git เป็น https://git.dillo-browser.org/dillo

ดาวน์โหลดและการย้ายคลังซอร์ส

  • ไฟล์เผยแพร่ 3.3.0 มีให้ดาวน์โหลดเป็น dillo-3.3.0.tar.gz (1.4M) และ signature
  • มีการย้ายจาก GitHub ไปยังเซิร์ฟเวอร์ของตนเอง โดยดูรายละเอียดได้ที่ migration-from-github
  • คลัง git ให้บริการผ่าน cgit ที่โฮสต์เอง และมีมิเรอร์บน Codeberg และ SourceHut

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

 
GN⁺ 1 일 전
ความคิดเห็นจาก Hacker News
  • ผมใช้ Dillo บ่อยมาก ยินดีด้วย
    ขึ้นอยู่กับว่าร่างกฎหมายยืนยันอายุจะออกมาเรื่อย ๆ แค่ไหน และ Firefox จะรับมืออย่างไร ดูแล้ว Dillo อาจกลายเป็นเบราว์เซอร์เริ่มต้นโดยพฤตินัยของ Linux และ BSD ก็ได้
    ถ้ากฎหมายแบบนี้ถูกบังคับใช้จริง และ Firefox ใส่ตรรกะตรวจอายุเข้าไปด้วย ผมจะย้ายไป Dillo 100%

    • ฟังดูมีเหตุผลมาก แต่ร่างกฎหมายประเมินอายุต้องมองว่าเป็นกระแสที่ใหญ่กว่านั้นมาก
      ค่อนข้างน่าขนลุกที่ตอนนี้หลายประเทศยอมจำนนต่อเรื่องนี้กันเร็วมาก
      ตอนนี้บางคนอาจยังไม่เชื่อ แต่ผมคิดว่าอีกไม่กี่ปีการท่องเว็บแบบไม่ระบุตัวตนอาจกลายเป็นเรื่องในอดีต
      ต้องมองการโจมตีที่พุ่งเป้าไปยัง VPN ควบคู่กันด้วย นี่ไม่ใช่เหตุการณ์แยก ๆ ที่บังเอิญเกิดขึ้น แต่ดูเหมือนเป็นความเคลื่อนไหวที่เชื่อมกันไปในทิศทางเดียว
      เราต้องทำให้เส้นทางเงินชัดเจนกว่านี้ และผมเอือมกับสถานการณ์ที่ถูกล็อบบี้ยิสต์ควบคุม
  • น่าเสียดายที่แม้แต่ Google ก็เริ่มบังคับให้ใช้ JS แล้ว และนี่เป็นผลกระทบหนักต่อเบราว์เซอร์ขนาดเล็กกับเว็บแบบเปิด

    • ใช่เลย บนเบราว์เซอร์พวกนี้ https://html.duckduckgo.com ใช้งานได้ค่อนข้างดี :)
    • ดัชนีของ Google ยังเข้าถึงแบบไม่ใช้ JS ได้ผ่านเสิร์ชเอนจินพร็อกซีอยู่ ตัวอย่างหนึ่งคือ Startpage
      ถ้าอยากดูรายการเกี่ยวกับเสิร์ชเอนจินแบบละเอียด บทความของ Seirdy รวบรวมไว้ดีมาก: https://seirdy.one/posts/2021/03/10/search-engines-with-own-...
    • ผมกลับมองว่านี่เกือบจะเป็นฟีเจอร์ด้วยซ้ำ ถ้าเว็บไซต์ไหนใช้งานไม่ได้แม้แต่บน HTML พื้นฐาน โดยมากก็น่าจะเสียเวลาเปล่า
    • ตอนนี้รู้สึกเหมือนGoogle เป็นผู้กำหนดเว็บ
      พูดตามตรงมันไม่จริงทั้งหมด แต่ Google เข้าไปเกี่ยวข้องกับพื้นที่สำคัญหลายส่วนของเว็บ และ Chrome ก็เป็นแค่ตัวอย่างที่เห็นชัดที่สุดในนั้น
    • แต่จำเป็นต้องใช้ถึงขั้น ES6 จริงหรือ?
      JavaScript ยุคแรก ๆ เรียบง่ายกว่านี้มาก และก็ไม่ได้จำเป็นต้องมี JIT ด้วย ส่วนตัวผมยังคิดว่าถ้าไม่มี JIT จะดีกว่า
  • ขอบคุณนักพัฒนามากจริง ๆ ผมชอบโปรเจ็กต์ย้อนยุคแบบนี้
    ผมใช้ Dillo ทุกวัน และสำหรับผมมันใช้ภายในเป็นหลัก
    ด้วยสถาปัตยกรรมปลั๊กอิน มันเรนเดอร์โปรโตคอลอย่าง gemini หรือ gopher ได้ด้วย เลยใช้เปิดเว็บ gemini อยู่เหมือนกัน
    มันเบามากจริง ๆ

  • ไคลเอนต์ Mastodon ก็ทำงานได้ไม่ค่อยดีเหมือนกัน แต่ก็ยังพอมีทางเลือกอยู่: https://codeberg.org/adele/smolfedi

  • สำหรับผม เวลาใช้ Dillo เข้า HN จะได้ 429 กลับมาตลอด ซึ่งไม่เกิดกับเบราว์เซอร์ขนาดเต็มทั่วไป
    ไม่แน่ใจว่าเป็นเพราะ JS หรือเปล่า

    • ไม่มีการตั้งกฎบล็อกเบราว์เซอร์สมัยใหม่เป็นพิเศษ
      อยากรู้ว่าสามารถทำให้เกิดซ้ำได้ไหม และถ้าได้ ช่วยแนบ HTTP header มาให้ดูได้หรือเปล่า
      อย่างไรก็ดี นอกจาก cgit instance ของเราแล้ว ยังมีมิเรอร์บน Codeberg และ SourceHut ด้วย
      https://git.dillo-browser.org/dillo/
      https://codeberg.org/dillo/dillo
      https://git.sr.ht/~dillo/dillo
  • ผมพูดไปแล้วหลายครั้งในโพสต์ Dillo อื่น ๆ แต่ Dillo ทำให้ผมได้เห็นเว็บบนพีซี 486 เครื่องเก่าเป็นครั้งแรก
    ตอนนั้นเป็นเครื่องที่ลง Damn Small Linux ไว้ ถ้าไม่มี Dillo ในตอนนั้น ก็คงเข้าถึงเว็บได้ยากมาก

  • dilloc เริ่มต้นมาตั้งแต่ git commit เก่า ๆ ก่อนหน้ารีลีส 3.3.0 แล้ว และน่าประทับใจมาก
    มันทำเมนู redirect ที่เรียกสคริปต์แนว plumber หรือ xdg-open ได้ง่ายด้วย
    แนวคิดคือแทนที่ JS URL ด้วย non-JS URL แบบเดียวกับ Libredirect ของ Firefox/Chromium

  • สงสัยว่ามีที่ไหนให้ดาวน์โหลดไบนารีแบบคอมไพล์ไว้ล่วงหน้าของ Windows port ล่าสุดของ Dillo บ้างไหม

  • น่าเสียดายที่ Dillo เป็น C++
    เพราะผมอยากลอง build มันด้วยคอมไพเลอร์ C ที่เล็กและเรียบง่ายอย่าง cproc/qbe หรือ tinycc
    ถึงอย่างนั้นก็รู้สึกว่ามีสัญญาณว่า AI สำหรับเขียนโค้ดอาจช่วยพอร์ต C++ จำนวนมากให้กลายเป็น C แบบง่าย ๆ ได้ค่อนข้างดี

    • เมื่อราว 6 เดือนก่อน ผมลองกับโค้ด C++ ของตัวเองโดยใช้เครื่องมือที่ตอนนั้นถูกเรียกว่า SOTA ด้วยตัวเองแล้ว แต่ผลลัพธ์น่าผิดหวัง
      ผมว่ายังไปไม่ถึงขั้นนั้น