Video và phụ đề · Direct Media Downloader
Tên của tệp đã tải xuống đến từ đâu: đường dẫn URL so với Bố trí nội dung
· Cách thức hoạt động
http lượt tải xuống phương tiện truyền thông
Giải thích cách trình duyệt quyết định tên tệp đã lưu: phân đoạn cuối cùng của URL, tiêu đề Bố trí nội dung của máy chủ và thuộc tính tải xuống mà một công cụ có thể đặt. Cho biết lý do tại sao URL sạch đôi khi vẫn mang lại tên tệp không hợp lệ.
Tệp được lưu dưới dạng 'file.php' và sẽ không mở — vấn đề đặt tên mà liên kết trực tiếp có thể ẩn
URL kết thúc bằng `file.php?id=42` có thể phân phối byte video trong khi để lại tên đường dẫn không hữu ích cho trình duyệt. Ngược lại, địa chỉ kết thúc bằng `.mp4` có thể trả về HTML. Tên tệp là nhãn được chọn từ siêu dữ liệu yêu cầu và phản hồi, không phải bằng chứng về tải trọng bên trong.
Direct Media Downloader chỉ tính toán tên được đề xuất sau khi có phản hồi GET thành công. Trước tiên, nó kiểm tra Bố trí nội dung, sau đó là phân đoạn đường dẫn không trống cuối cùng, sau đó là dự phòng nhỏ dựa trên MIME. Thứ tự này hẹp hơn và dễ dự đoán hơn so với việc yêu cầu trình duyệt thực hiện một cuộc đàm phán chung. Sự phân tách này ngăn tài liệu ủy quyền tạm thời bị rò rỉ vào tên đĩa và tránh các ký tự tên tệp bất hợp pháp được đóng góp bởi toàn bộ chuỗi truy vấn.
Đoạn đường dẫn cuối cùng: dự đoán mặc định — cách trình duyệt đọc tên tệp từ URL và nơi các chuỗi truy vấn gây nhầm lẫn cho nó
Đường dẫn dự tuyển là đoạn cuối cùng sau khi phân tách bằng dấu gạch chéo, được giải mã từ mã hóa phần trăm. Các tham số truy vấn không được bao gồm vì URL API lưu trữ chúng một cách riêng biệt. Do đó `/episodes/launch.mp3?token=...` mang lại `launch.mp3`, trong khi dấu gạch chéo ở cuối không có phân đoạn cuối cùng và cần một nguồn khác.
Quy tắc đường dẫn này không quyết định liệu tiện ích mở rộng có trung thực hay không. Tuyến phân phối đã ký có thể ẩn tiêu đề con người trong một tham số và việc triển khai này sẽ không khai thác các khóa truy vấn tùy ý cho tên. Hạn chế đó tránh nhầm lẫn thành phần chữ ký, giá trị chiến dịch hoặc mã nhận dạng bản ghi với tên tệp. Khi cả hai biểu mẫu tồn tại, biểu mẫu quốc tế hóa có thể lưu giữ các tên không phải ASCII rõ ràng hơn, trong khi dự phòng xử lý việc triển khai máy chủ đơn giản hơn.
Bố trí nội dung: đề xuất của máy chủ — cách tiêu đề có thể ghi đè tên của URL và tại sao một số CDN đặt nó còn những CDN khác thì không
Bố trí nội dung có thể mang đề xuất `filename=` đơn giản hoặc biểu mẫu UTF-8 `filename*=` được mã hóa. ToolAcre ưu tiên dạng sao được mã hóa và thử giải mã phần trăm; nếu giải mã không thành công, nó sẽ chuyển sang dạng đơn giản và sau đó chuyển sang logic đường dẫn thay vì làm hỏng quá trình truyền đã hoàn tất.
Tiêu đề chỉ đơn thuần là gợi ý của máy chủ phục vụ. Mã ứng dụng không kiểm tra siêu dữ liệu phương tiện để xác minh nó và máy chủ gây hiểu lầm có thể cung cấp tên gây hiểu lầm. Xem lại các ký tự và phần mở rộng bất thường trước khi mở tệp, đặc biệt khi máy chủ nguồn không quen thuộc. URL đối tượng là tham chiếu trình duyệt tạm thời, không phải địa chỉ từ xa và việc sử dụng chúng không tạo ra yêu cầu tải lên hoặc HTTP khác cho nội dung phương tiện.
Thuộc tính tải xuống: nội dung mà công cụ có thể tự thiết lập - cách trình tải xuống phía trình duyệt có thể chọn tên cho Blob mà nó lưu
Sau khi Blob sẵn sàng, giao diện người dùng sẽ chuyển cả Blob và tên tệp đã chọn tới tiện ích tải xuống được chia sẻ. Tiện ích đó kích hoạt hành vi lưu trình duyệt với đối tượng URL và tên tải xuống. Tiêu đề của máy chủ không còn được tham khảo ở lần nhấp cuối cùng vì đề xuất của nó đã được giải quyết.
Cơ chế này không đổi tên tệp đĩa hiện có hoặc chọn thư mục. Cài đặt trình duyệt vẫn xác định xem hộp thoại có xuất hiện hay không và cách xử lý các tên trùng lặp. ToolAcre cung cấp một ứng cử viên; trình duyệt và khách truy cập vẫn chịu trách nhiệm về kết quả cuối cùng của hệ thống tệp. Người dùng không nên “sửa” sự không phù hợp bằng cách chỉ đổi tên; kiểm tra vùng chứa và codec thực tế trước khi quyết định xem siêu dữ liệu hoặc nội dung có cần chỉnh sửa hay không.
Tiện ích mở rộng và loại MIME: giữ chúng nhất quán — tại sao tệp có tên .mp4 thực sự là WebM lại khiến người chơi bối rối
Tên `.mp4` được ghép với `video/webm` có thể gây nhầm lẫn cho phần mềm định tuyến theo tiện ích mở rộng, ngay cả khi người chơi có khả năng có thể kiểm tra byte. ToolAcre giữ nguyên đường dẫn hoặc tên tiêu đề thay vì viết lại phần mở rộng của nó để khớp với Loại nội dung. Nó cũng bảo toàn giá trị MIME của máy chủ trên Blob.
Nếu không có tiêu đề và phân đoạn đường dẫn nào tồn tại thì dự phòng sẽ nhận ra Loại nội dung chứa WebM hoặc MP4 và trả về `download.webm` hoặc `download.mp4`; mọi loại khác đều trở thành `download.bin`. Các giá trị âm thanh MIME hiện không nhận được tiện ích mở rộng đặc biệt thông qua nhánh cuối cùng này. Nếu chữ ký hết hạn trong khoảng thời gian từ HEAD đến GET thì không có tên tệp nào thắng vì yêu cầu nội dung không thành công; việc đặt tên chỉ bắt đầu sau khi có phản hồi thành công có thể đọc được.
Ví dụ đã hoạt động: một liên kết CDN đã ký và ba tên tệp có thể có — xem qua tên nào thắng và tại sao
Lấy địa chỉ CDN đã ký có đường dẫn kết thúc bằng `asset`, địa chỉ có phản hồi là `filename*=UTF-8''approved%20cut.mp4` và loại là `video/mp4`. Tiêu đề được mã hóa sẽ thắng, tạo ra `approved cut.mp4`. Xóa tiêu đề và đường dẫn mang lại `asset`; cũng xóa phân đoạn đó và dự phòng MIME mang lại `download.mp4`.
`filename="review.webm"` đơn giản sẽ thắng khi không tồn tại giá trị sao có thể sử dụng được, ngay cả khi đường dẫn có nội dung `clip.mp4`. Ví dụ này cho thấy mức độ ưu tiên chứ không phải xác nhận. Việc kiểm tra Loại nội dung và mở kết quả đã lưu trong phần mềm đáng tin cậy vẫn là các bước kiểm tra riêng biệt sau khi tên được chọn. Ngoài ra, danh mục có thể ghi lại tổng kiểm tra sau khi lưu, nhưng việc băm nằm ngoài trình tải xuống này và không được ngụ ý bởi số byte được hiển thị của nó.
Điều này không bao gồm - đổi tên sau khi tải xuống, đặt tên hàng loạt hoặc đọc siêu dữ liệu bên trong tệp để đặt tên cho nó
Trình tải xuống không đánh số lô tệp, đọc thẻ tiêu đề từ vùng chứa phương tiện, xóa danh mục lưu trữ hoặc sửa chữa tiện ích mở rộng gây hiểu lầm sau khi lưu. Nó cũng không thể hứa rằng mọi biến thể ngữ pháp Bố trí nội dung sẽ khớp với các biểu thức chính quy tập trung của nó.
Đổi tên sau này là một nhiệm vụ của hệ điều hành. Nếu việc đặt tên lưu trữ quan trọng, hãy ghi lại nguồn URL, loại phản hồi, số byte và tên mô tả được phê duyệt trong danh mục của riêng bạn. Không coi tiêu đề thuận tiện là nguồn gốc hoặc phần mở rộng tên tệp là nhận dạng mật mã. Mã hóa phần trăm không đúng định dạng trong một đường dẫn là một vấn đề khác về chất lượng máy chủ; dự phòng hiện tại không yêu cầu đưa mọi tên do máy chủ cung cấp vào các quy tắc của mọi hệ điều hành.
Bài học rút ra: tên là sự thỏa thuận giữa URL, tiêu đề và công cụ — nội dung cần kiểm tra trong tên và phần mở rộng của tệp đã lưu sau khi sử dụng Direct Media Downloader
Ưu tiên được triển khai cụ thể: tên tệp sao UTF-8 hợp lệ, tên tệp đơn giản, phân đoạn đường dẫn cuối cùng được giải mã, sau đó là `download.webm`, `download.mp4` hoặc `download.bin`. Chuỗi truy vấn có thể ủy quyền phân phối mà không trở thành một phần của tên đã lưu. Điều này giải thích nhiều điều ngạc nhiên về việc “tải xuống” và “lập chỉ mục”.
Sau khi sử dụng Direct Media Downloader, hãy so sánh tên, tiện ích mở rộng, Loại nội dung, nguồn dự kiến và khả năng phát thực tế. Những quan sát này trả lời các câu hỏi khác nhau. Tên tệp sạch sẽ cải thiện khả năng xử lý, nhưng chỉ byte của máy chủ và ứng dụng nhận mới xác định tệp thực sự chứa gì. Lựa chọn tên tệp cải thiện khả năng sử dụng, trong khi nguồn gốc vẫn đến từ nguồn được ủy quyền, yêu cầu được ghi lại và kiểm tra độc lập các byte hoàn chỉnh.