Video và phụ đề · Direct Media Downloader
Cách trình duyệt tải xuống tệp từ liên kết trực tiếp bằng tìm nạp và Blob
· Cách thức hoạt động
lượt tải xuống browser-apis cors
Đi qua quy trình mà công cụ trình duyệt sử dụng để biến liên kết trực tiếp thành tệp đã lưu: tìm nạp byte, giữ chúng dưới dạng Blob và chuyển chúng cho thuộc tính tải xuống. Giải thích tại sao không cần máy chủ ở bất kỳ bước nào.
Liên kết mở trình phát thay vì lưu tệp — nhấp vào liên kết MP4 hoặc MP3 trực tiếp thường phát nội tuyến, đây là vấn đề mà trình tải xuống giải quyết
Nhấp vào liên kết MP3 trực tiếp có thể mở trình phát vì trình duyệt biết cách chơi loại MIME đó. Việc lưu cùng một byte là một hành động riêng biệt. Từ khóa là trực tiếp: một liên kết đến một phản hồi tệp thực tế, không phải một trang web chứa trình phát hoặc một danh sách các phân đoạn phương tiện truyền thông liệt kê. ToolAcre tạo ra sự khác biệt này trước khi cung cấp bản tải xuống và không coi trang URL là một tệp URL.
Bước một: tìm nạp() yêu cầu máy chủ cung cấp byte - yêu cầu GET gửi đến máy chủ đã thông báo trông như thế nào và kết quả trả về là gì
Sau khi bạn chọn Kiểm tra liên kết, trình duyệt có thể đưa ra yêu cầu HEAD tới URL mà bạn đã cung cấp để kiểm tra trạng thái, loại và độ dài. Việc tìm nạp tệp sử dụng yêu cầu GET tới máy chủ đó chứ không phải proxy ToolAcre. Yêu cầu cố tình bỏ qua thông tin xác thực, vì vậy máy chủ yêu cầu thông tin đăng nhập của bạn có thể từ chối yêu cầu đó. Máy chủ từ xa cũng phải cho phép đọc tập lệnh có nguồn gốc chéo; nếu CORS chặn quyền truy cập, công cụ sẽ giải thích việc từ chối thay vì định tuyến xung quanh quyền truy cập đó thông qua một rơle ẩn. Chuyển hướng có thể thay đổi đích đến, vì vậy hãy kiểm tra máy chủ đã thông báo.
Bước hai: nội dung phản hồi trở thành Blob — cách thu thập byte trong bộ nhớ và lý do Blob mang loại MIME
Phần thân phản hồi được đọc dưới dạng luồng các khối byte. Tiến trình có thể sử dụng Độ dài nội dung khi máy chủ hiển thị nó; nếu không biết độ dài, công cụ có thể hiển thị số byte nhận được nhưng không hiển thị tỷ lệ phần trăm đáng tin cậy. Nó thực thi giới hạn bộ nhớ trong khi thu thập các khối, sau đó tập hợp một Blob với loại nội dung được trả về. Điều này an toàn hơn việc gọi response.blob() trên luồng không giới hạn, nhưng đó không phải là truyền trực tuyến vào đĩa không có bộ nhớ: Blob đã hoàn thành vẫn chiếm dung lượng trong phiên trình duyệt của bạn.
Bước ba: URL.createObjectURL và thuộc tính tải xuống — cách một blob tạm thời: URL cộng với một neo kích hoạt hộp thoại lưu
Blob là dữ liệu trong bộ nhớ, không phải địa chỉ Internet. Trình duyệt có thể tạo một blob tạm thời: đối tượng URL và đính kèm nó vào một neo có tên tệp tải xuống; việc nhấp vào mỏ neo đó sẽ yêu cầu trình duyệt lưu byte. Tên tệp có thể đến từ tiêu đề Bố trí nội dung hoặc đường dẫn URL thay vì từ tiêu đề trang. Vì liên kết hiện là Blob cùng trang URL nên trình duyệt có thể lưu kết quả mà không cần lưu trữ kết quả đó trên ToolAcre. Bạn vẫn nên kiểm tra tiện ích mở rộng và loại MIME trước khi mở tệp từ một nguồn không quen thuộc.
Ví dụ đã hoạt động: lưu một tập podcast từ liên kết đính kèm của nó — theo sau một tập MP3 từ URL đã dán vào một tệp trên đĩa
Hãy tưởng tượng một nhà xuất bản podcast tiết lộ một phần bao vây được ủy quyền URL kết thúc bằng tập.mp3. Dán địa chỉ chính xác đó, kiểm tra máy chủ đã thông báo và sử dụng liên kết Kiểm tra. Nếu HEAD được cho phép, nó có thể hiển thị âm thanh/mpeg và số byte dự kiến; Sau đó, tìm nạp sẽ yêu cầu nhà xuất bản cung cấp MP3 byte, truyền chúng vào Blob và lưu tập.mp3. Nếu máy chủ bỏ qua các tiêu đề CORS, trình duyệt có thể phát liên kết trong tab riêng của nó trong khi trang này không thể tìm nạp liên kết đó bằng tập lệnh; Khi đó, “Save link as” có thể là lộ trình chính xác. Quyền lưu tệp của người dùng tách biệt với việc máy chủ của nó có cho phép tìm nạp tệp về mặt kỹ thuật hay không.
Dọn dẹp: thu hồi đối tượng URL và giải phóng bộ nhớ — lý do tại sao trình tải xuống được xây dựng tốt sẽ phát hành Blob sau khi quá trình lưu hoàn tất
Các URL đối tượng tạm thời giữ các tham chiếu đến các Blobs sao lưu của chúng. Trình tải xuống để lại mọi URL còn hoạt động có thể giữ lại các tệp lớn trong một tab tồn tại lâu dài. Tiện ích tải xuống được chia sẻ của ToolAcre tạo URL cục bộ cho hành động lưu và thu hồi nó khi hoàn tất; việc hủy bỏ giải phóng trình đọc phản hồi và loại bỏ một phần các đoạn. Đối với các tệp rất lớn, tải xuống trình duyệt thông thường từ máy chủ sẽ phù hợp hơn việc thu thập toàn bộ phản hồi trong bộ nhớ trang.
Điều này không bao gồm những gì — URL trang, bảng kê khai phát trực tuyến, DRM và các liên kết cần đăng nhập
Công cụ này sẽ không tìm thấy phương tiện ẩn đằng sau trang video, phân tích cú pháp HLS/DASH .m3u8 hoặc .mpd, bỏ qua DRM, tiêu đề giả mạo hoặc truy cập luồng được bảo vệ theo phiên. Nó không tải xuống nội dung riêng tư cho bạn và không quyết định liệu giấy phép có cấp quyền sao chép tệp hay không. 403, chuyển hướng đến trang đăng nhập hoặc lỗi CORS là ranh giới cần hiểu chứ không phải là gợi ý để tìm kiếm proxy không có giấy tờ.
Bài học rút ra: ba API trình duyệt, không có máy chủ - cách Direct Media Downloader áp dụng quy trình này cho liên kết bạn dán
Đường dẫn được tìm nạp từ máy chủ được cung cấp → nhận các khối → tạo Blob → kích hoạt tải xuống cục bộ. Không có chuyển tiếp ToolAcre nào được tham gia nhưng hoàn toàn có liên quan đến yêu cầu thực sự đối với máy chủ bên thứ ba; nhật ký của nó có thể thấy kết nối. Direct Media Downloader sẽ thông báo liên hệ đó trước khi thực hiện và cho bạn biết khi các quy tắc bảo mật của trình duyệt từ chối đọc trên nhiều nguồn gốc.