ช่องเบราว์เซอร์
เปิดเว็บไซต์ข้างเทอร์มินัล นำทางด้วยตัวควบคุมพื้นเมือง และเก็บลิงก์ไว้ในโปรเจกต์
Zshell วางเบราว์เซอร์ในแท็บหรือช่องแบ่งใดก็ได้ เหมาะกับเซิร์ฟเวอร์พัฒนาในเครื่อง เอกสาร API, issue หรือสิ่งอื่นที่ต้องการวางข้างเทอร์มินัลที่ใช้มัน
เปิดเบราว์เซอร์
- เลือก ไฟล์ → แท็บเบราว์เซอร์ใหม่ เพื่อเปิดแท็บว่าง
- เปิดจานคำสั่ง (Cmd+P) แล้วเรียก แท็บเบราว์เซอร์ใหม่ หรือ ช่องเบราว์เซอร์ใหม่
- กด Command แล้วคลิกขวา URL ที่ตรวจพบในเทอร์มินัล เลือก แท็บเบราว์เซอร์ใหม่ หรือ ช่องเบราว์เซอร์ใหม่ เพื่อเปิดโดยไม่ต้องคัดลอกที่อยู่
แท็บเบราว์เซอร์อยู่ในโปรเจกต์ที่เลือกและร่วมเค้าโครงแท็บ/ช่องปกติ หากยังไม่มีโปรเจกต์ Zshell สร้างโปรเจกต์เพื่อรองรับเบราว์เซอร์
ที่อยู่และค้นหา
ช่องด้านบนรับ URL เต็ม ชื่อโฮสต์ หรือคำค้น:
zshell.shกลายเป็นที่อยู่ HTTPSlocalhostชื่อโฮสต์ในเครื่อง IP และพอร์ตที่ระบุชัดใช้ HTTP- ข้อความอื่นกลายเป็นการค้นหา Google
Cmd+L โฟกัสช่องที่อยู่ และ Cmd+R โหลดใหม่ แถบเครื่องมือมี ย้อนกลับ ถัดไป หยุด/โหลดใหม่ แชร์ และ เปิดในเบราว์เซอร์เริ่มต้น ท่าทางย้อนกลับ/ถัดไปบนแทร็คแพดใช้ได้ด้วย
| การกระทำ | ปุ่มลัด |
|---|---|
| โฟกัสแถบที่อยู่ | Cmd+L |
| โหลดหน้าใหม่ | Cmd+R |
เปิดลิงก์ในตำแหน่งที่ต้องการ
คลิกขวาลิงก์บนหน้าเพื่อ เปิดลิงก์ในแท็บใหม่ หรือ เปิดลิงก์ในช่องใหม่ หน้าใหม่ยังอยู่ในพื้นที่โปรเจกต์เดิม
ในเทอร์มินัล Command-คลิกตามปกติเปิด URL เว็บที่ตรวจพบในเบราว์เซอร์เริ่มต้น ส่วน Command-คลิกขวาเสนอแท็บหรือช่องของ Zshell เส้นทางในเครื่องมีขั้นตอนคล้ายกันในเส้นทางและ URL
สถานะที่เก็บไว้
การสลับแท็บหรือโปรเจกต์เก็บหน้าไว้ตามเดิม รวมประวัติ ตำแหน่งเลื่อน ฟอร์ม และสถานะภายในหน้า เมื่อ Zshell เปิดใหม่จะกู้คืน URL ปัจจุบันและเค้าโครง แต่ไม่กู้ประวัติย้อนกลับ/ถัดไปทั้งหมด
ช่องเบราว์เซอร์เก็บคุกกี้ การเข้าสู่ระบบ และข้อมูลไซต์อื่นระหว่างแท็บและการเปิดแอป นี่ไม่ใช่โหมดท่องเว็บส่วนตัว
ให้ Agent ทดสอบหน้าเว็บ
ขอให้ Agent เขียนโค้ดตรวจหน้าที่เปิดอยู่ในโปรเจกต์นี้ กรอกแบบฟอร์ม ตรวจผลลัพธ์ หรือจับภาพพื้นที่ที่มองเห็นได้ Agent จะใช้เซสชันเบราว์เซอร์เดิมและคงโฟกัสไว้ที่เทอร์มินัลตามค่าเริ่มต้น และยังเปิด URL สำหรับพัฒนาในแผงเบราว์เซอร์เบื้องหลังได้
สำหรับสคริปต์ ให้เรียกคำสั่งต่อไปนี้ในเทอร์มินัล Zshell บันทึก browser_id ที่ได้รับแล้วแทน BROWSER_ID ด้านล่าง:
zshell +browser list
zshell +browser open http://localhost:3000 --wait
zshell +browser snapshot --browser BROWSER_ID
zshell +browser fill --browser BROWSER_ID --selector '#search' --text 'terminal'
zshell +browser click --browser BROWSER_ID --selector 'button[type="submit"]'
zshell +browser wait --browser BROWSER_ID --selector '#results' --timeout 10000
zshell +browser screenshot --browser BROWSER_ID --output /tmp/zshell-page.pngสแนปช็อตจะแสดงข้อความในเฟรมหลัก ป้ายกำกับการช่วยการเข้าถึง และการอ้างอิงองค์ประกอบ การอ้างอิงจะหมดอายุเมื่อหน้าเปลี่ยนหรือมีการกระทำ จึงควรสร้างสแนปช็อตใหม่ก่อนใช้ซ้ำ ตัวเลือก CSS ต้องตรงกับองค์ประกอบเดียว ใช้ navigate, back, forward, reload และ stop เพื่อนำทาง
ระบบอัตโนมัติรับเฉพาะ URL HTTP/HTTPS แบบเต็มและ about:blank โปรโตคอลอื่น การดาวน์โหลด ตัวเลือกไฟล์ และกล่องโต้ตอบของระบบต้องให้คุณดำเนินการเอง ข้อจำกัดนี้จะสิ้นสุดเมื่อคุณนำทางเองผ่านแถบที่อยู่หรือแถบเครื่องมือ คำสั่งทำงานเฉพาะในโปรเจกต์และหน้าต่างของเทอร์มินัลที่เรียก --timeout อยู่ในช่วง 100–30000 มิลลิวินาที สแนปช็อตจำกัด 200 องค์ประกอบ 32768 ตัวอักษร และ 256 KiB โดยไม่แสดงค่ารหัสผ่านหรือไฟล์ ภาพ PNG ของพื้นที่ที่มองเห็นได้จำกัด 512 KiB ทำงานได้แม้ยังไม่เคยแสดงแผง โดยใช้ viewport 1024 × 768 และไม่เปลี่ยนโฟกัส และไม่เขียนทับไฟล์เดิม ลด --width หากจำเป็น ดูรูปแบบคำสั่งทั้งหมดที่ zshell +browser --help
สคริปต์หน้าเว็บและสถานะการเข้าสู่ระบบ
zshell +browser eval --browser BROWSER_ID --script 'Promise.resolve({title: document.title})'
zshell +browser state save --browser BROWSER_ID --output /tmp/zshell-login.json
zshell +browser state load --browser BROWSER_ID --input /tmp/zshell-login.json
zshell +browser reload --browser BROWSER_ID --waiteval --script ทำงานในหน้าหลักจริง รอ Promise ที่ส่งกลับ และคืน JSON ใน value โดย undefined จะเป็น null ใช้นิพจน์ฟังก์ชันแบบ async สำหรับ await ขีดจำกัดคืออินพุต 64 KiB และผลลัพธ์ 256 KiB, 10000 ค่า, 64 ระดับ การอ้างอิง DOM จะหมดอายุหลังรัน เมื่อหมดเวลาจะหยุดรอแต่ไม่ยกเลิกสคริปต์ ตรวจสอบหน้าก่อนทำการแก้ไขซ้ำ ลูปซิงโครนัสไม่สิ้นสุดอาจทำให้ต้องปิดหน้านั้น นิพจน์เดี่ยว รวมถึง IIFE จะถูกแทรกเป็น Script ส่วนกลางแบบเนทีฟ สตริงที่มีหลายคำสั่งยังคงอยู่ภายใต้ CSP ของหน้า หากการประเมินสตริงถูกบล็อก ให้ครอบคำสั่งด้วย IIFE
state save บันทึก Cookie ที่ใช้กับโฮสต์เป้าหมาย (รวมโดเมนแม่และ HttpOnly) พร้อม localStorage ของ origin ปัจจุบันเป็น Playwright storage-state JSON ส่วน state load รวม Cookie และแทนที่ localStorage ของ origin นั้น จากนั้นให้โหลดหน้าใหม่ โพรโทคอล โฮสต์ และพอร์ตต้องตรงกันทั้งหมด ระบบปฏิเสธโดเมนที่ไม่เกี่ยวข้อง public suffix ฟิลด์ที่ไม่รองรับ และชนิดข้อมูลผิดก่อนเปลี่ยนแปลง Cookie แบบ Secure ต้องใช้ HTTPS
ใช้ --format cookies กับทั้งสองคำสั่งสำหรับ Netscape cookies.txt ซึ่งไม่เก็บ localStorage และ SameSite ไฟล์จำกัด 256 KiB และมีข้อมูลรับรอง จึงต้องเก็บเป็นส่วนตัวและไม่นำเข้า Git การนำเข้าต้องเป็นไฟล์ปกติที่เจ้าของเข้าถึงได้เท่านั้น (เช่น 0600) และไม่ยอมรับ symlink การส่งออกสร้างไฟล์ส่วนตัวใหม่โดยไม่เขียนทับเส้นทางเดิม ข้อมูล WebKit ยังคงใช้ร่วมกันระหว่างแผง และยังมีข้อจำกัดโปรเจกต์ หน้าต่าง และการนำทาง
โฆษณาและตัวติดตาม
การตั้งค่า → เบราว์เซอร์ เปิดการบล็อก WebKit โดยใช้ EasyList และ EasyPrivacy เป็นค่าเริ่มต้น ปิดแต่ละรายการแยกกันหรือเพิ่ม URL รายการ ABP แบบ HTTP/HTTPS หนึ่งรายการต่อบรรทัด แล้วเลือก ใช้รายการ รองรับสูงสุด 8 รายการ รายการละ 8 MiB โดย HTTP ไม่เข้ารหัส
กฎมีผลกับคำขอถัดไปในทุกบานหน้าต่าง โหลดหน้าใหม่หลังเปลี่ยนกฎ อัปเดตรายการตอนนี้ บังคับให้อัปเดต รายการจะถูกแคชในเครื่อง หลังเริ่มแอปใหม่ การเปิดเบราว์เซอร์จะตรวจสอบรายการที่เก่ากว่าสี่วัน การตั้งค่าแสดงจำนวนตัวกรองที่แปลงและข้าม ความล้มเหลว และการใช้แคช เมื่อเปลี่ยนรายการไม่สำเร็จ จะไม่ใช้รายการอื่นที่ยกเลิกเลือกไว้อย่างเงียบ ๆ
รองรับไวลด์การ์ด URL จุดยึด ประเภททรัพยากรทั่วไป ข้อยกเว้น @@ ขอบเขตโดเมนแบบง่าย และ CSS ##/#@# โดยอ้างอิงโดเมนของหน้าระดับบนสุดและการจำแนกบุคคลตาม WebKit สคริปต์เล็ต ตัวกรองเชิงกระบวนการ การเปลี่ยนเส้นทาง นิพจน์ทั่วไป การอนุญาตทั้งหน้า และข้อยกเว้นโดเมนย่อยของโดเมนที่รวมไว้จะถูกข้าม จึงไม่รองรับ uBlock Origin อย่างสมบูรณ์