Hướng dẫn tải phim trên iQiyi
Kiến thức cơ bản:
Làm thế nào mà các trang web có thể phát phim
iQiyi sử dụng HLS và cái bạn đi tìm là link đến tập tin M3U8. Thông thường, tập tin Manifest nằm trên máy chủ và có thể tìm thấy link của nó bằng cách sử dụng Chrome Dev Tool. Tuy nhiên, iQiyi lại không lưu tập tin Manifest trên máy chủ và bằng các kỹ thuật "che code" khiến cho Internet Download Manager (IDM) bó tay. Tập tin Manifest do chính Player của iQiyi trên web browser sinh ra nên để có được tập tin này, chúng ta phải mô phỏng lại cách thức mà Player thực thi để sinh ra tập tin Manifest đó.
- Chạy Google Chrome, mở trang
https://www.iq.com/, chọn phim muốn rip, chọn độ phân giải cao nhất (free thì chỉ tới 720p)
- Nhấn F12 để vào Chrome Dev Tool
- Chọn tab Console
- Dán đoạn code dưới đây vào và nhấn Enter
Mã:
javascript:try{var info=playerObject._player._core._movieinfo.originalData.data.program.video;info.forEach(function(item,index){if(item._selected){var m3u8Content="";if(item.m3u8==undefined){try{if(typeof(eval(cmd5x))=="function"){}}catch(e){var req1=new XMLHttpRequest();req1.open("GET","https://static.iqiyi.com/js/common/f6a3054843de4645b34d205a9f377d25.js",false);req1.onload=function(){var script=document.createElement("script");script.text=req1.responseText;document.getElementsByTagName("head")[0].appendChild(script)};req1.send(null)}var fs=item.fs;var content="#EXTM3U\n";fs.forEach(function(fs_i,fs_index){var url=fs_i.l;var prefix="https://data.video.iqiyi.com/videos";var api=prefix+url;try{var t=playerObject._player._core._movieinfo.originalData.data.boss.data.t;api=prefix+url+"&cross-domain=1&t="+t+"&QY00001="+/qd_uid=(\d+)/g.exec(url)[1]+"&ib=4&ptime=0&ibt="+cmd5x(t+/\/(\w{10,})/g.exec(url)[1])}catch(err){}var req=new XMLHttpRequest();req.overrideMimeType("application/json");req.open("GET",api,false);req.onload=function(){var jsonResponse=JSON.parse(req.responseText);content+="#EXTINF:0\n"+jsonResponse["l"]+"\n"};req.send(null)});content+="#EXT-X-ENDLIST";m3u8Content=content}else{m3u8Content=item.m3u8}var blob=new Blob([m3u8Content],{type:"text/plain"});var url=URL.createObjectURL(blob);var title=(document.title.indexOf("-")!=-1?document.title.substring(0,document.title.indexOf("-")):document.title.replace(/\s/,""))+"_"+item.scrsz+"_"+(item.code==2?"H264":"H265")+"_"+document.getElementsByClassName("iqp-time-dur")[0].innerText.replace(/:/,".")+"_"+(item.vsize/1024/1024).toFixed(2)+"MB.m3u8";var aLink=document.createElement("a");aLink.href=url;aLink.download=title;aLink.style.display="none";var event;if(window.MouseEvent){event=new MouseEvent("click")}else{event=document.createEvent("MouseEvents");event.initMouseEvent("click",true,false,window,0,0,0,0,0,false,false,false,false,0,null)}aLink.dispatchEvent(event)}})}catch(err){var info1=playerObject._player.package.engine.adproxy.engine.movieinfo.vidl;info1.forEach(function(item1,index1){if(item1.responseData!=undefined){var info=item1.responseData.data.program.video;info.forEach(function(item,index){if(item._selected){var m3u8Content="";if(item.m3u8==undefined){try{if(typeof(eval(cmd5x))=="function"){}}catch(e){var req1=new XMLHttpRequest();req1.open("GET","https://static.iqiyi.com/js/common/f6a3054843de4645b34d205a9f377d25.js",false);req1.onload=function(){var script=document.createElement("script");script.text=req1.responseText;document.getElementsByTagName("head")[0].appendChild(script)};req1.send(null)}var fs=item.fs;var content="#EXTM3U\n";fs.forEach(function(fs_i,fs_index){var url=fs_i.l;var prefix="https://data.video.iqiyi.com/videos";var api=prefix+url;try{var t=playerObject._player.package.engine.adproxy.engine.movieinfo.current.boss.data.t;api=prefix+url+"&cross-domain=1&t="+t+"&QY00001="+/qd_uid=(\d+)/g.exec(url)[1]+"&ib=4&ptime=0&ibt="+cmd5x(t+/\/(\w{10,})/g.exec(url)[1])}catch(err){console.error(err)}var req=new XMLHttpRequest();req.overrideMimeType("application/json");req.open("GET",api,false);req.onload=function(){var jsonResponse=JSON.parse(req.responseText);content+="#EXTINF:0\n"+jsonResponse["l"]+"\n"};req.send(null)});content+="#EXT-X-ENDLIST";m3u8Content=content}else{m3u8Content=item.m3u8}var blob=new Blob([m3u8Content],{type:"text/plain"});var url=URL.createObjectURL(blob);var title=(document.title.indexOf("-")!=-1?document.title.substring(0,document.title.indexOf("-")):document.title.replace(/\s/,""))+"_"+item.scrsz+"_"+(item.code==2?"H264":"H265")+"_"+document.getElementsByClassName("iqp-time-dur")[0].innerText.replace(/:/,".")+"_"+(item.vsize/1024/1024).toFixed(2)+"MB.m3u8";/*nilaoda*/var aLink=document.createElement("a");aLink.href=url;aLink.download=title;aLink.style.display="none";var event;if(window.MouseEvent){event=new MouseEvent("click")}else{event=document.createEvent("MouseEvents");event.initMouseEvent("click",true,false,window,0,0,0,0,0,false,false,false,false,0,null)}aLink.dispatchEvent(event)}})}})}
- Khi nhấn Enter thì sẽ bật ra 01 cửa sổ Save as... thành file M3U8. Lưu lại trên ổ D: chẳng hạn (ví dụ là: D:\phim.m3u8) hoặc tự động tải xuống luôn.
- Chạy một chương trình M3U8 Downloader ưa thích của bạn (ở đây tôi thường dùng N_m3u8DL-CLI) để tải file M3U8 nói trên.
Mã:
N_m3u8DL-CLI_v2.9.7.exe D:\phim.m3u8 --workDir D:\ --saveName phim --enableDelAfterDone --enableMuxFastStart
- Tải phụ đề tiếng Việt tại trang
https://downsub.com/. Nếu trang downsub.com không lấy được phụ đề thì sử dụng đoạn code javascripts (chạy trong console) sau {chắc chắn 100% vì code mô phỏng cách thức mà player thực thi, trừ phi iQiyi thay đổi player khác}:
Mã:
javascript:var tvid=playerObject._player.package.engine.adproxy.engine.movieinfo.tvid;var oData=playerObject._player.package.engine.adproxy.engine.episode.EpisodeStore[tvid].movieInfo.originalData;var prefix=oData.data.dstl;var subUrl=oData.data.program.stl[n-1].webvtt;var title=(document.title.indexOf("-")!=-1?document.title.substring(0,document.title.indexOf("-")):document.title.replace(/\s/,""));prompt(title+" [webvtt]",prefix+subUrl);
Chú ý:
oData.data.program.stl[n-1] trong đó n là vị trí của phụ đề tiếng Việt (tính từ trên xuống dưới). Vì vị trí của phụ đề tiếng Việt của mỗi phim là khác nhau nên không có một con số chính xác được.
Ví dụ: Trong phim (hay tập phim)
[Thuyết minh] Như Ý Phương Phi vị trí phụ đề tiếng Việt là 4 (tính từ trên xuống dưới) thì: oData.data.program.stl[3]
- Lúc này sẽ xuất hiện một cửa sổ có chứa đường link đến file phụ đề. Sử dụng IDM tải link này về ta sẽ có được phụ đề dạng VTT.
- Chuyển từ dạng VTT sang SRT bằng công cụ online
https://subtitletools.com/convert-to-srt-online hoặc bằng phần mềm Subtitle Edit.
- Tương tự bạn có thể lấy phụ đề tiếng Anh, tiếng Thái, tiếng Malaysia, tiếng Indonesia v.v...
==> Như vậy, ta đã có video, audio và phụ đề của phim. Đóng gói thành file MKV bằng công cụ MKVToolNix.
Thành quả cuối cùng (tài khoản free nên chỉ đến 720p, chủ yếu là lấy phụ đề và audio thuyết minh, lồng tiếng)