Video và phụ đề · Bộ công cụ phụ đề
Cách chỉnh sửa tệp phụ đề mà không cần rời khỏi thiết bị của bạn: Tệp API tới Blob
· Cách thức hoạt động
phụ đề browser-processing quyền riêng tư
Công cụ tệp của ToolAcre đọc và ghi tệp bên trong tab. Bài đăng này giải thích các API trình duyệt giúp thực hiện điều đó đối với tệp phụ đề, từ trình chọn tệp đến liên kết tải xuống và cách xác nhận không có gì được tải lên.
Bản ghi được giữ bí mật và trình chuyển đổi muốn bạn tải nó lên — vấn đề xử lý phía trình duyệt sẽ được giải quyết
Bản ghi lời khai không phải là một tệp bạn gửi đến dịch vụ web để tìm hiểu xem quá trình chuyển đổi có hoạt động hay không. Hầu hết các trình chuyển đổi trực tuyến đều là tải lên và trả lại: các byte đi đến máy chủ, điều gì đó xảy ra và kết quả được trả về. Đối với tài liệu bí mật, đó là sự tiết lộ và nó đã xảy ra vào thời điểm bạn nhìn thấy kết quả.
Quá trình xử lý phía trình duyệt sẽ loại bỏ câu hỏi. Tệp được trang mở thay vì được gửi đến nó, mọi chuyển đổi đều chạy dựa trên một bản sao trong bộ nhớ và kết quả được ghi lại vào đĩa từ cùng một tab. Xác nhận quyền sở hữu có thể kiểm chứng được, điều này quan trọng hơn xác nhận quyền sở hữu vì bảng điều khiển mạng sẽ hiển thị liệu có bất kỳ yêu cầu nào chứa nội dung hay không.
Chọn một tệp: đối tượng Tệp - cách trình duyệt xử lý trang theo byte mà không gửi chúng đi bất cứ đâu
Việc chọn một tệp thông qua đầu vào tệp sẽ không chuyển bất kỳ thứ gì. Trang này nhận được một đối tượng Tệp, là một điều khiển: tên, kích thước, loại và tham chiếu mà trình duyệt có thể đọc từ đó. Việc chọn tệp không phải là tải lên và việc giữ phần xử lý đó không gây ra yêu cầu. Các byte vẫn giữ nguyên vị trí cho đến khi mã yêu cầu chúng.
Sự khác biệt này là toàn bộ cơ sở của quá trình xử lý cục bộ và đó cũng là lý do tại sao thuộc tính quyền riêng tư là thuộc tính của mã chứ không phải của trình duyệt. Một trang chứa đối tượng Tệp hoàn toàn có khả năng đăng nó ở đâu đó. Điều tạo nên một công cụ mang tính địa phương là nó không có tính chất địa phương.
Đọc văn bản cục bộ - File.text() và TextDecoding biến byte thành tín hiệu trong bộ nhớ
Việc đọc văn bản sẽ gọi phương thức văn bản Tệp API, phương thức này phân giải thành một chuỗi được giải mã là UTF-8. Chuỗi đó được phân tích cú pháp thành các tín hiệu trong bộ nhớ và mọi thao tác tiếp theo sẽ hoạt động trên các đối tượng tín hiệu đó: dịch chuyển sẽ thêm vào dấu thời gian nguyên mili giây, làm sạch các thay thế trên văn bản, xác thực sẽ duyệt qua danh sách để tìm lỗi thứ tự và thời lượng. Không ai trong số đó chạm vào tệp gốc, tệp này không bao giờ được ghi vào.
Vì phân tích cú pháp tạo ra các đối tượng đơn giản nên tệp trên đĩa không bị ảnh hưởng ngay cả khi tab bị đóng giữa chừng. Không có bản sao tạm thời để dọn dẹp và không có kết quả được ghi một phần vì việc ghi chỉ diễn ra khi có yêu cầu tải xuống.
Tại sao điều này chạy trên luồng chính chứ không phải trong Web Worker và kích thước trần thực sự làm gì
Phác thảo sổ làm việc yêu cầu giai đoạn này chạy trong Web Worker và đối với một số công cụ ToolAcre nó sẽ chạy; mỗi ứng dụng CSV, hình ảnh và PDF đều chuyển công việc nặng nhọc của chúng ra khỏi luồng chính. Ứng dụng phụ đề cố tình không làm như vậy và lý do được ghi lại trong nguồn riêng của nó: một nhân viên sẽ thêm gói thứ hai và chế độ lỗi thứ hai cho công việc không cần đến nó, vì tệp phụ đề có độ dài tính năng là vài trăm kilobyte và phân tích cú pháp tính bằng mili giây.
Lời cảnh báo trung thực là kích thước trần nhà. Giới hạn mười megabyte được thực thi trước khi phân tích cú pháp và đặt tên trên trang công cụ, nhưng công cụ ghi lại rằng việc kiểm tra sẽ bị bỏ qua đối với bất kỳ nội dung nào có tên có phần mở rộng phụ đề, do đó, tệp phụ đề quá khổ sẽ tải và chặn trang thay vì bị từ chối. Đó là hậu quả thực sự của việc chạy trên luồng chính và nó được ghi lại thay vì bị ẩn.
Viết lại: Blob và thuộc tính tải xuống - cách tệp đã chỉnh sửa đến đĩa của bạn dưới dạng bản tải xuống mới
Viết lại xây dựng một Blob từ văn bản được tuần tự hóa và đưa nó vào trình duyệt dưới dạng tải xuống. Văn bản được bao bọc bằng loại phương tiện rõ ràng mang bộ ký tự UTF-8, một đối tượng URL được tạo cho Blob đó, một mỏ neo mang thuộc tính tải xuống được nhấp vào và mỏ neo bị loại bỏ. Tệp đến thư mục tải xuống dưới dạng tệp mới; bản gốc không được sửa đổi.
Việc thu hồi được cố tình trì hoãn thay vì ngay lập tức. Việc thu hồi đối tượng URL một cách đồng bộ sau khi nhấp chuột có thể hủy quá trình tải xuống trong một số trình duyệt, do đó, nó được lên lịch một tác vụ macro sau đó, vừa an toàn vừa nhanh chóng. Đây là loại chi tiết chỉ hiển thị khi quá trình tải xuống không bắt đầu được.
Ví dụ đã hoạt động: xem bảng điều khiển mạng trong toàn bộ thời gian chuyển đổi và chạy lại - bảng điều khiển yên tĩnh từ khi mở tệp đến lưu tệp
URL đối tượng là phần bị rò rỉ nếu không có ai xem. Bài học được ghi vào trình trợ giúp kho lưu trữ: một dự án đã được kiểm tra đã tạo các URL đối tượng ở một số vị trí và thu hồi chúng ở mức chính xác bằng 0, vì vậy mọi bản xem trước đều giữ toàn bộ đốm màu trong suốt vòng đời của tab. Trên điện thoại, một số trang được phân loại là đủ để trình duyệt tắt tab.
Biện pháp khắc phục mang tính cơ cấu hơn là kỷ luật. Không có gì gọi trực tiếp trình duyệt API; một trình trợ giúp có phạm vi chạy mã của bạn với URL và thu hồi mã đó khi mã đó ổn định, khi thành công, khi gửi và khi bị từ chối, đồng thời một tay cầm được quản lý cung cấp lệnh thu hồi tạm thời cho các trường hợp tồn tại lâu hơn một chức năng. Dọn dẹp đúng cách là mặc định chứ không phải là điều mà mỗi trang cuộc gọi phải ghi nhớ.
Điều này không bao gồm - công cụ không thể bảo vệ tệp mà sau này bạn tải lên nơi khác; quyền riêng tư kết thúc khi quy trình làm việc của bạn rời khỏi tab
Để xác minh thay vì tin cậy, hãy mở bảng mạng trước khi chọn tệp và để nó mở trong toàn bộ công việc. Chọn tệp, chuyển đổi nó, đặt lại thời gian, tải xuống kết quả. Yêu cầu về trang và các tập lệnh của nó xuất hiện khi tải trang; những gì không nên xuất hiện là bất kỳ yêu cầu nào có tải trọng là tệp. Lưu giữ nhật ký trong toàn bộ phiên để không bỏ sót điều gì giữa các bước.
Hai bằng cấp trung thực. Một trang có thể tải các tập lệnh phân tích hoặc quảng cáo từ các nguồn khác và những tập lệnh đó hiển thị trong cùng một bảng điều khiển và là một câu hỏi riêng biệt với việc liệu tệp của bạn có được gửi hay không. Và thuộc tính kết thúc ở tab: một công cụ xử lý cục bộ không thể bảo vệ tệp mà sau đó bạn gửi email, đồng bộ hóa với bộ nhớ đám mây hoặc dán vào dịch vụ khác. Quá trình xử lý cục bộ thu hẹp khả năng hiển thị đối với máy của chính bạn; nó không theo tệp sau đó.
Bài học rút ra: tệp của bạn, tab của bạn, ổ đĩa của bạn — cách Bộ công cụ phụ đề thực hiện toàn bộ công việc cục bộ và cho phép bạn xác minh nó
Đường dẫn là phần xử lý tệp, văn bản trong bộ nhớ, tín hiệu trong bộ nhớ, Blob, tải xuống và không có gì trong chuỗi đó yêu cầu máy chủ. Tệp được trang đọc thay vì được gửi đến nó, được chuyển đổi thành đối tượng và được ghi lại dưới dạng tệp mới, với bản gốc không bị ảnh hưởng xuyên suốt.
Lý do để ưu tiên điều này đối với tài liệu bí mật không phải vì lời hứa đã được đưa ra mà vì yêu cầu đó có thể được kiểm tra trong khoảng một phút. Trước tiên hãy mở bảng mạng, thực hiện toàn bộ công việc và đọc nhật ký. Một công cụ xử lý cục bộ sẽ hiển thị cho bạn một bảng không có yêu cầu chứa bản ghi của bạn, đây là sự đảm bảo mạnh mẽ hơn bất kỳ chính sách quyền riêng tư nào.