- Bài viết về cách vượt qua giới hạn tốc độ tải xuống video của YouTube
- YouTube tạo doanh thu từ lượt xem quảng cáo và áp dụng các biện pháp hạn chế để ngăn việc xem hoặc tải video bằng các ứng dụng khách không chính thức
- Bước đầu tiên để vượt qua giới hạn tốc độ là giao tiếp với API của YouTube để tìm URL thực chứa tệp video
- YouTube sử dụng một tham số cụ thể là
n trong hầu hết URL tệp, và tham số này phải được преобразовать bằng thuật toán JavaScript nằm trong tệp base.js. Tham số này đóng vai trò như một thử thách để xác minh xem việc tải xuống có được bắt đầu từ ứng dụng khách "chính thức" hay không
- Thuật toán JavaScript bị làm rối và thay đổi thường xuyên, nên việc cố gắng đảo ngược để hiểu nó là không thực tế. Giải pháp là tải tệp JavaScript về, trích xuất mã thuật toán, rồi thực thi nó bằng cách truyền tham số
n
- YouTube vẫn áp dụng các quy tắc giới hạn tốc độ tải xuống biến thiên dựa trên kích thước và độ dài của video. Để vượt qua giới hạn này, có thể chia việc tải xuống thành nhiều phần nhỏ bằng cách dùng header HTTP Range
- YouTube phân phối kênh video và âm thanh thành hai tệp riêng biệt. Bước cuối cùng là kết hợp hai kênh này thành một tệp, có thể thực hiện bằng
ffmpeg
- Hiện nay nhiều dự án sử dụng các kỹ thuật này để vượt qua những hạn chế được thiết lập nhằm ngăn tải xuống video YouTube. Phổ biến nhất là
yt-dlp được lập trình bằng Python (một nhánh fork của youtube-dl), nhưng nó có kèm một trình thông dịch JavaScript tùy chỉnh riêng để biến đổi tham số n
- Bài viết giải thích quy trình và cung cấp các đoạn mã mẫu, giúp các kỹ sư phần mềm mới vào nghề cũng có thể tiếp cận
1 bình luận
Ý kiến trên Hacker News