如何使用C#獲取.mp4視頻的直接URL?

c# html-agility-pack video web-scraping windows-phone

我需要一些能從mp4engine中提取鏈接的algorythm。

這是我要廢棄的頁面示例。

在這種情況下,期望的輸出將是: http ://mp4engine.com:182 / d / a2chmyndcqqgkpskitclvbgu5pgwxve2vmlrdsctpwbte2flb4i4hrz6 / .hack_Roots(Dub)Episode 001-360p.mp4

我嘗試使用HtmlAgilityPack來獲取播放器代碼,但它是p,a,c,k,e,d ,而我無法在我的C#Windows Phone 8.1項目中執行它。我想過使用Jurassic包來執行JS,但它似乎不適用於WinPhone8.1

這是我使用HAP獲得的腳本:

<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字符串,但該頁面似乎沒有。

我該怎麼做才能獲得視頻網址?

熱門答案

HtmlAgilityPack只接受靜態HTML代碼,需要執行動態內容(javascript)來獲取數據。

你有三種方式:

1 - 在你的c#中為javascript實現一個美化代碼(這裡你可以看到一個例子: http//jsbeautifier.org/ )。在這種情況下,僅適用於您的情況,您可以提取視頻網址,因為它就在上面,但這並不常見。

2 - 使用.net Web瀏覽器連接到頁面並執行javascript代碼來刮取數據,在這種情況下,您的應用程序必須是Windows窗體應用程序。

3 - 使用無頭瀏覽器連接到頁面並執行javascript代碼來刮取數據。你可以使用著名的phatomjs。此處的示例:使用PhantomJS webdriver ExecutePhantomJS過濾掉圖像的C#示例




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因