เปิดตัวเบราว์เซอร์ Dillo 3.3.0
(dillo-browser.org)- การทำงานด้าน การควบคุมระยะไกลและระบบอัตโนมัติ ได้รับการเสริมอย่างมาก โดยมีโปรแกรม
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
- จะค้นหาเป้าหมายจาก PID ในตัวแปรแวดล้อม
- 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 ยังมีปัญหาการเรนเดอร์อยู่
- ติดตามความคืบหน้าได้จาก issue ของ FLTK ที่เกี่ยวข้อง
- ผู้ดูแลแพ็กเกจ Dillo ไม่ควรเปิด FLTK 1.4 เป็นค่าเริ่มต้นสำหรับผู้ใช้ทุกคน
- เพราะอาจเกิดภาพเพี้ยนและปัญหาอื่น ๆ ได้
OAuth และการจัดการคุกกี้
- เพื่อรองรับ การยืนยันตัวตนด้วย OAuth จึงมีการปรับพฤติกรรมให้อนุญาตคุกกี้ที่ถูกตั้งค่ามาจากการตอบกลับแบบรีไดเร็กต์
- โดยปกติ Dillo จะบล็อก คุกกี้ของบุคคลที่สาม ทั้งหมด หากไม่ได้เกิดจากคำขอที่ผู้ใช้เริ่มเองโดยตรง
- เป็นพฤติกรรมที่ออกแบบมาเพื่อป้องกันการติดตามผ่าน image pixel
- การแก้ไขครั้งนี้ทำให้ main page redirect ที่ต่อเนื่องจากคำขอที่ผู้ใช้เริ่มเอง สามารถอนุญาตคุกกี้ได้เป็นกรณีพิเศษ
- จึงทำให้ล็อกอิน OAuth ได้ โดยยังรักษาการป้องกันการติดตามไว้
- ตัวอย่างที่ยกมาคือการล็อกอิน Fediverse ผ่าน Smolfedi
การเพิ่มฟีเจอร์ย่อยและการปรับปรุงพฤติกรรม
- เพิ่มการรองรับ brotli
brcontent 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 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผมใช้ Dillo บ่อยมาก ยินดีด้วย
ขึ้นอยู่กับว่าร่างกฎหมายยืนยันอายุจะออกมาเรื่อย ๆ แค่ไหน และ Firefox จะรับมืออย่างไร ดูแล้ว Dillo อาจกลายเป็นเบราว์เซอร์เริ่มต้นโดยพฤตินัยของ Linux และ BSD ก็ได้
ถ้ากฎหมายแบบนี้ถูกบังคับใช้จริง และ Firefox ใส่ตรรกะตรวจอายุเข้าไปด้วย ผมจะย้ายไป Dillo 100%
ค่อนข้างน่าขนลุกที่ตอนนี้หลายประเทศยอมจำนนต่อเรื่องนี้กันเร็วมาก
ตอนนี้บางคนอาจยังไม่เชื่อ แต่ผมคิดว่าอีกไม่กี่ปีการท่องเว็บแบบไม่ระบุตัวตนอาจกลายเป็นเรื่องในอดีต
ต้องมองการโจมตีที่พุ่งเป้าไปยัง VPN ควบคู่กันด้วย นี่ไม่ใช่เหตุการณ์แยก ๆ ที่บังเอิญเกิดขึ้น แต่ดูเหมือนเป็นความเคลื่อนไหวที่เชื่อมกันไปในทิศทางเดียว
เราต้องทำให้เส้นทางเงินชัดเจนกว่านี้ และผมเอือมกับสถานการณ์ที่ถูกล็อบบี้ยิสต์ควบคุม
น่าเสียดายที่แม้แต่ Google ก็เริ่มบังคับให้ใช้ JS แล้ว และนี่เป็นผลกระทบหนักต่อเบราว์เซอร์ขนาดเล็กกับเว็บแบบเปิด
ถ้าอยากดูรายการเกี่ยวกับเสิร์ชเอนจินแบบละเอียด บทความของ Seirdy รวบรวมไว้ดีมาก: https://seirdy.one/posts/2021/03/10/search-engines-with-own-...
พูดตามตรงมันไม่จริงทั้งหมด แต่ Google เข้าไปเกี่ยวข้องกับพื้นที่สำคัญหลายส่วนของเว็บ และ Chrome ก็เป็นแค่ตัวอย่างที่เห็นชัดที่สุดในนั้น
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 แบบง่าย ๆ ได้ค่อนข้างดี
ผมว่ายังไปไม่ถึงขั้นนั้น