Hướng dẫn tải phim trên VTV Giải Trí
Hello! Xin chào các bạn. Hôm nay, tôi sẽ hướng dẫn các bạn tải phim trên một trang web hoàn toàn mới. Một trang web có sử dụng có sử dụng công nghệ DRM (quản lý bản quyền nội dung số).
Có bạn hỏi là: Sao không hướng dẫn tải phim trên Netflix, Amazon Prime, HBO Max hay Disney+ đi? Tôi xin trả lời là: những trang streaming đa quốc gia như vậy đều đã có công cụ (phần mềm) để tải. Bạn có thể sử dụng nó trong giai đoạn Trial. Sau đó thì đóng tiền để mua nếu muốn sử dụng lâu dài. Những trang streaming mà tôi hướng dẫn ở đây đều không được các công cụ (phần mềm) kể trên "ngó" tới vì nó chẳng mang lại lợi nhuận gì cho họ, với một thị trường Việt Nam đến 99% là xài "lậu" phần mềm.
Thêm nữa, những công cụ (phần mềm) đó cũng không phải là từ hành tinh khác đến. Nó do con người ở trên Trái Đất này viết ra, mà đã là do con người viết ra thì người Việt cũng có thể làm được. Người Việt cũng sử dụng những kỹ thuật mà các công cụ (phần mềm) đó sử dụng để tải phim ở những trang streaming không nằm trong "list" đa quốc gia kể trên. Đơn giản vậy thôi.
Để có thể hiểu được các hướng dẫn, mời bạn đọc qua bài:
Làm thế nào mà các trang web có thể phát phim và
Cơ bản về HLS
Nhắc lại kiến thức:
- Giao thức HLS thì sẽ có tập tin Master Playlist sẽ chứa đường dẫn tới các tập tin Media Playlist, tập tin Media Playlist sẽ chứa đường dẫn đến các tập tin phân mảnh (segment) của phim. Các tập tin Master và Media Playlist có thể gọi ngắn gọn là tập tin m3u8.
- Giao thức HLS được chia thành 02 loại: không mã hoá tập tin phân mảnh và có mã hoá tập tin phân mảnh (có thêm thẻ EXT-X-KEY, chỉ ra phương thức mã hoá, đường dẫn đến chìa khoá (key) giải mã)
- Để kiểm tra giao thức HLS có mã hoá tập tin phân mảnh hay không? Đơn giản, chỉ cần tải thử một tập tin phân mảnh về và dùng phần mềm VLC hoặc Media Player Classic (có trong K-Lite Codec Pack) để xem. Nếu xem được là không mã hoá, nếu không xem được là đã bị mã hoá.
Tóm tắt các bước thực hiện:
- Tìm đường dẫn đến tập tin m3u8.
- Kiểm tra yêu cầu (request) đến tập tin m3u8 có bị server chặn hay không (có mã lỗi 401, 403). Nếu bị server chặn thì tìm cách fake request đến server (đã hướng dẫn cách fake trong bài Hướng dẫn tải phim trên Mango TV". Nếu không thích cách fake đó thì copy nội dung tập tin m3u8 thành một tập tin lưu trữ trên đĩa cứng ở trên máy tính. Xây dựng lại tập tin m3u8 cho phù hợp với phần mềm m3u8 downloader.
- Đối với trường hợp có mã hoá: tìm phương thức mã hoá (trong bài này là AES-128), đường dẫn đến key giải mã. Đọc hồi đáp (response) của server trả về để có key. Đối với thuật toán mã hoá là AES-128 thì key giải mã có độ dài 128 bit, tức là 16 byte. Chuyển thành key dưới dạng mã HEX.
- Sử dụng phần mềm m3u8 downloader ưa thích của bạn. Trong bài này, tôi sử dụng phần mềm hlsdl.exe để tải tập tin m3u8 (đã có sửa chữa nội dung) về máy. Lúc này sẽ có được tập tin TS bị mã hoá.
- Giải mã tập tin TS bị mã hoá bằng công cụ openssl.exe với key (ở mã HEX) đã tìm được ở trên thành tập tin TS hoàn chỉnh có thể xem được.
- Chuyển tập tin TS thành tập tin MP4 hoặc MKV (nếu thích).
Trình tự các bước thực hiện:
1. Truy cập trang
https://www.vtvgiaitri.vn/, chọn phim: "Hồ Sơ Cá Sấu (tập 1)". IDM thần thánh đã tìm thấy link tải và đưa ra list cho chúng ta lựa chọn.
2. Nhưng khi ta nhấn chọn link để tải thì lại xuất hiện thông báo này. Đại loại là nó "bó tay" toàn tập rồi.
3. Vẫn những chiêu như cũ: Vào Chrome Dev Tool (F12), tab Network, gõ vào "stream" ở ô filter. Có bạn sẽ hỏi là: Sao biết mà gõ vào "stream" vậy? Xin thưa là, tôi phải bỏ hàng tiếng đồng hồ ngồi trên máy tính để tìm ra đường dẫn đến tập tin m3u8 đấy? Chứ không phải thần thánh gì đâu.
4. Mở thử tập tin m3u8 trên một tab mới xem có bị chặn không? Kết quả là nhận được: mã lỗi 401. Bạn hỏi bác Google mã lỗi "http 401" là gì nhé.
5. Ở bài Hướng dẫn tải phim trên trang Mango TV, tôi đã chỉ ra một chiêu để chống lại kỹ thuật 403 Forbidden, bạn có thể xem lại và áp dụng vào trường hợp này. Tương tự như nhau thôi. Nhưng hôm nay tôi không áp dụng cách đó mà tôi muốn chỉ thêm cho các bạn một cách là lưu tập tin m3u8 trên đĩa cứng máy tính để cho các m3u8 downloader đọc nó và tải thay vì đưa URL cho m3u8 downloader đọc.
6. Chọn link file m3u8, nhấn phải chuột, hiện ra menu phụ, chọn Copy -> Copy response. Mở Notepad, paste nội dung đã copy vào. Lưu lại thành file: ho-so-ca-sau-tap-01.m3u8 trên ổ cứng.
7. Thử dùng IDM để download đường dẫn URL đến key giải mã xem thế nào
8. Vẫn dùng chiêu như tìm link m3u8, tìm key xem ở đâu nào
9. Key đã tìm thấy, đưa nó vào bộ nhớ tạm (clipboard) bằng cách Copy response nhé
10. Đến bước này thì key đang ở trong bộ nhớ tạm (clipboard) và ở dưới dạng những ký tự của bảng mã ASCII. Bạn đã thấy tự hào chưa nào, khi đã "bắt" được key (chìa khoá) để mở cửa trái tim, ý quên: mở khoá nội dung DRM của trang VTV Giải Trí. Và để chuyển nó sang dạng HEX. Tại sao phải chuyển? Vì các chương trình m3u8 downloader chỉ đọc key ở dạng HEX (HEX string), key ở dạng base64 (Base64 string) hoặc tập tin binary 16 byte. Đến trang chuyển đổi trực tuyến ASCII to Hex converter (https://www.utilities-online.info/ascii-to-hex) để chuyển sang dạng chuỗi HEX thôi nào
Key giải mã phim "Hồ Sơ Cá Sấu (tập 1)"
Mã:
33 74 89 84 f0 5e 67 3f db a8 a9 f6 7b a7 6b fc
11. Mở tập tin ho-so-ca-sau-tap-01.m3u8 đã lưu ở trên bằng Notepad, xoá đi dòng có thẻ #EXT-X-KEY:METHOD=AES-128,URI="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" và Save lại
12. Sử dụng công cụ hlsdl.exe để tải bản phim về, nó sẽ đọc tập tin m3u8, tải các tập tin phân mảnh theo thứ tự rồi nối (merge) thành một file có tên là ho-so-ca-sau-tap-01.ts duy nhất. Và dĩ nhiên, tập tin này vẫn còn bị mã hoá.
PHP:
hlsdl.exe -o "ho-so-ca-sau-tap-01.ts" "ho-so-ca-sau-tap-01.m3u8"
13. Mở tập tin ho-so-ca-sau-tap-01.ts bằng PotPlayer xem có xem được phim không?
14. Giải mã tập tin bằng OpenSSL với key tìm được ở trên theo câu lệnh:
PHP:
openssl.exe aes-128-cbc -d -nosalt -iv 0 -K 33748984f05e673fdba8a9f67ba76bfc -in ho-so-ca-sau-tap-01.ts -out decrypted-ho-so-ca-sau-tap-01.ts
15. Và đây là thành quả sau những nỗ lực vừa qua
Bổ sung thêm:
Nếu bạn sử dụng trình duyệt Firefox thì các bước thực hiện tương tự. Tuy nhiên, bạn sẽ thấy key tìm được ở dạng chuỗi base64. Bạn chuyển đổi sang chuỗi HEX ở trang online (https://tomeko.net/online_tools/base64.php?lang=en)
Cập nhật nhỏ:
- Nếu tập tin ho-so-ca-sau-tap-01.m3u8 có nội dung được copy response từ server, không cần phải xoá thẻ #EXT-X-KEY:METHOD=AES-128,URI="xxxxxx", chạy lệnh này tự giải mã luôn:
PHP:
hlsdl.exe -F -K "33748984f05e673fdba8a9f67ba76bfc" -o "ho-so-ca-sau-tap-01.ts" "ho-so-ca-sau-tap-01.m3u8"
Ý nghĩa các tham số:
-F bỏ qua không kiểm tra DRM, nghĩa là xem như không có thẻ #EXT-X-KEY
-K giá trị HEX của key AES
-o tên tập tin output
Chúc các bạn thành công. Hẹn gặp lại trong những bài hướng dẫn khác.