我如何使用c#获得.mp4视频的直接URL
本文关键字:URL 视频 mp4 何使用 获得 | 更新日期: 2023-09-27 18:17:36
我需要某种算法来从mp4engine中提取链接。
这是一个我想要废弃的页面的例子。
在这种情况下期望的输出将是:http://mp4engine.com:182/d/a2chmyndcqqgkpskitclvbgu5pgwxve2vmlrdsctpwbte2flb4i4hrz6/.hack_Roots(配音)Episode 001-360p.mp4
我试图使用HtmlAgilityPack
来获得玩家代码,但它是p,a,c,k,e,d
,我无法在我的c# Windows Phone 8.1项目中执行它。我想使用侏罗纪包来执行JS,但它似乎不与WinPhone8.1工作
<script type='text/javascript'>eval(function(p,a,c,k,e,d){while(c-- )if(k[c])p=p.replace(new RegExp('''b'+c.toString(a)+'''b','g'),k[c]);return p} ('15("14").13({f:"0://2.1:e/d/c/.b (a) 9 8- 7.6",12:"0://2.1/4/h.g",11:"0://2.1/i/10/z.y",x:"w",v:u,t:s,5:"0",r:"0://2.1/4/q /p",o:[{3:"n",m:"0://2.1/4/h.g"},{3:"l",k:{f:''0://2.1:e/d/c/.b (a) 9 8- 7.6'',''5'':''0''}},{3:"j"}],});',36,42,'http|com|mp4engine|type|player|provider|mp4|360p|001|Episode|Dub|hack_Roots|a2chmyndcqqgkpskitclvbgu5pgwxve2vmlrdsctpwbte2flb4i4hrz6||182|file|swf|jw6||download|config|html5|src|flash|modes|six|skins|skin|420|height|722|width|1484|duration|jpg|hahgl235zwv2|00000|image|flashplayer|setup|flvplayer|jwplayer'.split('|')))
我也试过使用内置的WebView控件:
WebView wv = new WebView();
//... navigation to string and all that
var res = await wv.InvokeScriptAsync("eval", null);
不幸的是,函数返回空字符串(res = ""
)
我也搜索了base64
字符串,我可以解码,但页面似乎没有一个。
如何获取视频URL?
在<div id="player_code" ...
中,最后一个<script>
标签包含视频URL所在的模糊javascript代码。这个站点可以简化这段代码,结果如下所示:
jwplayer("flvplayer").setup({
file: "http://mp4engine.com:182/d/a2chmyndcqqgkpskitclvbgu5pgwxve2vmlrdsctpwbsg7asjwghgk4p/.hack_Roots (Dub) Episode 001-360p.mp4",
flashplayer: "http://mp4engine.com/player/jw6.swf",
image: "http://mp4engine.com/i/00000/hahgl235zwv2.jpg",
duration: "1484",
width: 722,
height: 420,
provider: "http",
skin: "http://mp4engine.com/player/skins/six",
modes: [{
type: "flash",
src: "http://mp4engine.com/player/jw6.swf"
}, {
type: "html5",
config: {
file: 'http://mp4engine.com:182/d/a2chmyndcqqgkpskitclvbgu5pgwxve2vmlrdsctpwbsg7asjwghgk4p/.hack_Roots (Dub) Episode 001-360p.mp4',
'provider': 'http'
}
}, {
type: "download"
}],
});
可以看到,file:
包含视频URL。因此,在您的c#代码中,您可以下载页面的HTML代码,在<div id="player_code" ...
中查找最后一个<script>
标记,并使用同一站点上列出的c#端口来消除混淆。
htmllagilitypack只取静态HTML代码,需要执行动态内容(javascript)才能取数据。
你有三种方法:
1 -在c#中为javascript实现一个美化代码(这里你可以看到一个例子:http://jsbeautifier.org/)。在这种情况下,仅针对您的情况,您可以提取视频url,因为它在上面,但这并不常见。
2 -使用。net web浏览器连接到页面并执行javascript代码来抓取数据,在这种情况下,您的应用程序必须是Windows Form应用程序。
3 -使用无头浏览器连接到页面并执行javascript代码来抓取数据。你可以用著名的摄影师。这里的例子:使用PhantomJS web驱动程序ExecutePhantomJS来过滤图像