Điều gì phải xảy ra trước khi một trang web trao cho bạn tệp của nó
Bạn có thể thấy video. Nó đang phát, ngay đó, trong trình duyệt web. Vậy tại sao không có cách nào để giữ lại nó? Câu trả lời là một trang web hiếm khi trao đi một tệp — nó trao đi các chỉ dẫn, và tệp mà trình duyệt lắp ráp từ chúng có thể hoàn toàn không tồn tại như một thứ đơn lẻ.
FoxDL Bốn cách một trang cung cấp video, chỉ một trong số đó là một tệp
Cách cũ nhất và đơn giản nhất là một tệp trực tiếp: trang trỏ tới một địa chỉ kết thúc bằng .mp4 và trình duyệt tải nó về. Nếu bạn tìm được địa chỉ đó, bạn có tệp. Đây vẫn là cách hoạt động của hầu hết các trang nhỏ hơn, diễn đàn, hãng tin và các trang lưu trữ tệp.
Cách thứ hai là streaming thích ứng — HLS hoặc DASH. Trang tải một danh sách phát liệt kê hàng trăm đoạn ngắn ở nhiều mức chất lượng, và trình phát ghép chúng lại khi đang chạy, chuyển đổi chất lượng khi kết nối của bạn thay đổi. Không có một tệp duy nhất nào để tìm. Lưu nó nghĩa là tải về từng đoạn và dựng lại một tệp từ chúng.
Cách thứ ba là một blob URL. Trang đã tải dữ liệu bằng JavaScript và trao cho trình phát một tham chiếu tới thứ gì đó sống trong bộ nhớ riêng của trình duyệt. Địa chỉ bạn nhìn thấy (blob:https://…) vô nghĩa bên ngoài trang đó và phiên đó — nó không thể mở, chia sẻ hay tải xuống được, và điều này khiến hầu hết các "công cụ tìm video" ngây thơ bị vấp ngã.
Cách thứ tư là nội dung được bảo vệ: các đoạn được mã hóa phát qua một hệ thống DRM, nơi khóa giải mã được cấp cho trình duyệt theo các điều kiện cấm rõ ràng việc giữ một bản sao. Đây không phải là một trở ngại để vượt qua; đó là cơ chế mà một thỏa thuận cấp phép được xây dựng trên đó, và không công cụ hợp pháp nào phá vỡ được nó.
Cách một trình duyệt web nhận ra có thứ gì đó để lưu
Một trình duyệt web tích hợp đề nghị lưu những gì nó tìm thấy đang làm nhiều việc cùng lúc. Mỗi việc bắt được một trường hợp mà các việc khác bỏ lỡ.
- Đọc các phần tử media của trang
- Duyệt qua tài liệu để tìm thẻ
<video>,<audio>và<source>và đọc địa chỉ của chúng. Bắt được ngay trường hợp tệp trực tiếp, bỏ lỡ mọi thứ được dựng bằng JavaScript sau khi trang tải xong. - Nhìn vào bên trong shadow DOM
- Các trình phát hiện đại là các phần tử tùy chỉnh có phần bên trong bị cố ý niêm phong khỏi trang. Một lượt tìm kiếm chỉ dừng ở tài liệu thông thường sẽ thấy một cái hộp trống nơi video đáng lẽ nằm đó.
- Theo dõi những gì trang thực sự đã yêu cầu
- Trình duyệt biết mọi tài nguyên mà một trang đã tải. Một tệp media đã được tải — bất kể kịch bản nào đã yêu cầu nó, hay khi nào — sẽ xuất hiện ở đây kể cả khi không có gì trong trang hiển thị trỏ tới nó.
- Đánh hơi loại phản hồi thực sự
- Một URL kết thúc bằng
.phpcó thể trả về một video, và một URL kết thúc bằng.mp4có thể trả về một trang lỗi.Content-Typemà máy chủ thực sự gửi mới cho bạn biết đó là loại gì — phần mở rộng chỉ là một suy đoán.
Việc lưu từ một trang trông như thế nào khi nó hoạt động
Thứ tự rất quan trọng. Hầu hết thất bại đến từ việc bỏ qua bước thứ hai và bắt đầu một lượt chuyển bốn gigabyte của một trang đăng nhập.
-
Phát một giây media trước
Nhiều trang không tải gì cả cho tới khi việc phát bắt đầu. Hai giây phát thường là sự khác biệt giữa một danh sách ứng viên trống rỗng và một danh sách đầy đủ.
-
Kiểm tra ứng viên đó thực sự là gì
Trước khi chốt, hãy nhìn vào kích thước và loại được báo cáo. Một "bộ phim" 14 KB là một trang HTML. Một loại
text/htmlkhi bạn kỳ vọngvideo/mp4nghĩa là bạn có nhầm liên kết. -
Chọn chất lượng bạn muốn
Một luồng phát thường cung cấp nhiều mức. Mức cao nhất không phải luôn luôn là câu trả lời đúng trên điện thoại, nơi sự khác biệt là vô hình còn dung lượng lưu trữ thì không.
-
Để phiên đăng nhập đi cùng
Các liên kết được bảo vệ kiểm tra ai đang yêu cầu: cookie từ phiên đăng nhập của bạn, trang đã giới thiệu bạn, đôi khi là danh tính trình duyệt khớp. Một lượt tải xuống bắt đầu mà thiếu những thứ đó sẽ nhận lỗi 403 dù trang phát hoàn toàn bình thường.
-
Xác minh những gì đã tới nơi
Mở nó ra. Một tệp phát được hai giây rồi dừng đã bị cắt cụt — thường là một liên kết đã hết hạn — và đáng để bắt đầu lại thay vì giữ lại.
Điều một trình duyệt web tích hợp phải làm đúng
Ngoài việc tìm ra media, đây là những thứ quyết định liệu lượt tải xuống có thực sự hoàn thành hay không.
- Mang theo phiên đăng nhập cho tới lượt tải xuống
Cookie, referer và user agent phải đi cùng yêu cầu. Thiếu chúng, một liên kết được bảo vệ sẽ giải quyết được trên trang nhưng thất bại ở trình tải xuống.
- Giữ những thông tin đăng nhập đó ngoài bộ nhớ lưu trữ
Cookie phiên đăng nhập có giá trị như một mật khẩu trong suốt thời gian phiên tồn tại. Chúng nên nằm trong bộ nhớ trong thời gian chuyển tệp và không ở đâu khác — không trong cơ sở dữ liệu, không trong nhật ký.
- Từ chối trao liên kết cho một ứng dụng khác
iOS sẽ vui vẻ mở một liên kết đã chạm vào trong một ứng dụng khác nếu ứng dụng đó tuyên bố sở hữu tên miền đó. Một trình duyệt web dành cho việc lưu media phải tự hủy và phát lại điều hướng đó, nếu không trang bạn muốn sẽ biến mất vào ứng dụng của người khác.
- Cắt gọn trang trước khi nó hiển thị
Một trình chặn nội dung ở đây không chỉ về quảng cáo — ít trình theo dõi và lớp phủ hơn nghĩa là ít ứng viên giả trong danh sách media hơn.
- Xử lý tài liệu cũng như video
PDF, ZIP và tệp Office là nửa còn lại của những gì mọi người lưu từ web, và chúng nên rơi vào cùng thư viện với mọi thứ khác.
Câu hỏi mọi người thường đặt ra
Vì sao Safari không tự làm được điều này?
Safari thực sự có tải tệp xuống — từ iOS 13. Điều nó không làm là kiểm tra một trang để tìm media đang được truyền phát thay vì được liên kết, hay dựng lại một luồng phân đoạn thành một tệp. Nó là một trình duyệt web, và công việc đó thuộc về một trình quản lý tải xuống.
Blob URL là gì và vì sao tôi không thể tải nó xuống?
Đó là một tham chiếu tới dữ liệu mà trang đã giữ trong bộ nhớ. Nó không tồn tại bên ngoài tab đó, nên dán nó ở bất cứ đâu sẽ không tạo ra kết quả gì. Media gốc được tải từ một nơi có thật, và địa chỉ đó — không phải blob — mới là thứ đáng tìm.
Trang phát bình thường nhưng lượt tải xuống nhận lỗi 403. Tại sao?
Yêu cầu tải xuống đến mà thiếu những thứ trang có: cookie phiên của bạn, trang giới thiệu, đôi khi là một danh tính trình duyệt khớp. Máy chủ dùng chính xác sự kết hợp đó để phân biệt một người xem với một công cụ cào dữ liệu.
Mọi thứ đều có thể lưu được không?
Không, và đó là chủ đích. Nội dung được bảo vệ bằng DRM được mã hóa với các khóa cấp theo một giấy phép cấm việc giữ lại. Một số trang cũng ký từng đoạn riêng lẻ bằng các mã thông báo tồn tại ngắn hạn. Cả hai đều đang hoạt động đúng như dự định.
Trình duyệt web bên trong FoxDL
Đó là một trình duyệt web có tab thông thường với công việc là đưa mọi thứ vào thư viện của bạn thay vì làm trình duyệt hằng ngày của bạn.
- Sáu kênh phát hiện, bao gồm shadow DOM và bản ghi những gì trang thực sự đã yêu cầu, nên một trình phát được dựng hoàn toàn bằng JavaScript vẫn hiển thị được.
- Loại thực sự được đánh hơi từ phản hồi thay vì đoán từ phần mở rộng, và các ứng viên
blob:không thể tải được sẽ bị lọc ra thay vì được đề xuất rồi thất bại. - Cookie, referer và user agent được mang theo cho tới lượt tải xuống để một liên kết được bảo vệ có thể giải quyết được — và không cái nào trong số đó bao giờ được ghi ra đĩa.
- Một trình chặn nội dung cắt gọn trang trước khi nó hiển thị.
- PDF, ZIP và tài liệu lưu vào cùng thư viện với media, chỉ với một lần chạm.
- Tab, dấu trang và một trang khởi đầu với các lối tắt của riêng bạn.
FoxDL không cung cấp bất kỳ nội dung nào của riêng nó. Những gì bạn lưu là thứ bạn mang tới, và bạn chịu trách nhiệm về việc có quyền giữ nó.
Câu hỏi thường gặp
- Làm sao để tải một tệp từ một trang web?
- FoxDL có tải được luồng HLS (m3u8) không?
- Tải xuống có tiếp tục chạy khi tôi rời khỏi ứng dụng không?
- FoxDL có cung cấp kênh, phim hay luồng IPTV không?
Đọc tiếp
Điều một trình quản lý tải xuống làm mà trình duyệt web thì không
Vì sao lượt chuyển tệp dừng lại khi bạn chuyển ứng dụng, việc tiếp tục thực sự đòi hỏi gì, và luồng phát trở thành tệp như thế nào.
Một ứng dụng media trên điện thoại của bạn có thể thấy gì, và điều gì nó không bao giờ nên gửi đi
Một ứng dụng media có thể thấy gì, cách đọc nhãn quyền riêng tư, và vì sao một khóa không phải là mã hóa.
Tệp của bạn thực sự nằm ở đâu trên một chiếc iPhone, và ai có thể thấy chúng
Sandbox, nơi các lượt tải xuống thực sự đi tới, và vì sao đổi tên một tệp làm hỏng nhiều ứng dụng đến vậy.
Thư viện của bạn, cuối cùng cũng ở một nơi.
Tải miễn phí. Không tài khoản, không đăng ký — đủ tính năng trong bản miễn phí.