2009-07-24 16 views
1

私はmediafireからの直接リンクを取得する方法を探しています。デフォルトでは、ユーザーがダウンロードリンクを訪問すると、ダウンロードページが表示され、そこでダウンロードが処理されるのを待たなければならず、リンクが表示されます。WebBrowser .NETコントロールを使用せずにmediafireダイレクトリンクを取得しますか?

私はGoogleで検索し、WebブラウザーWB

http://www.vbforums.com/showthread.php?t=556681

それはかなりうまく動作しますが、私はポップアップウィンドウと読み込み速度の疲れを使ってこれをVB.NET 2008解決策を見つけました。だから、この問題の解決策があるのだろうか? (非WB溶液^^)

何か助けていただければ幸いです。

+1

..あなたはそれのうち –

+0

SRYをIPを取得することができるかどうかが、私はあなたが何を意味するのか分からない:JScriptの評価上のD – ByulTaeng

+1

私は申し訳ありませんが、ちょうど私その引用を少なくとも1回投稿する必要がありました:http://www.youtube.com/watch?v=hkDD03yeLnU 一方、WBコントロールを使用する代わりに、 eページの難しい方法... –

答えて

3

私は、これは私が考えるようかかわらず仕事に行くされていることを確認、私はコードに正規表現を働いてきたときではないポストバックされます実際のリンクはAJAXによって取得されます。私はまだこれで遊んでいます。

AJAXの懸念が議論:コメントで提供PHPコードに基づいてStackOverflow related question


  • 第一対応 - > 「CG(VAR1という関数に を渡された値を取得、var2、var3) "私は mediafireがまだその機能を使用しているとは思わない " cu(var1、var2、var3) "と呼ばれているようです。 あなたが与えたPHPは引き続き動作します。とにかく、我々は同じことをすることができます cuの値からの値& に私たちの要求を投稿しますか? 最初の応答から取得したクッキーを に追加しました。
  • 第二応答は、ランダムに生成変数、 のこの巨大な リストはそれら 変数、これはusing the Microsoft.JScript engine to evaluate this codeであるかどうかを URLを取得するための唯一の方法の一部を連結ダウンロードURL を生成作成されます。我々は最初の要求のクッキーを受信&ストアを送信ここで

    string sURL = "http://www.mediafire.com/?syzjuytmdkn"; 
    
        HttpWebRequest wrGETURL = (HttpWebRequest)WebRequest.Create(sURL); 
        wrGETURL.CookieContainer = new CookieContainer(); 
        wrGETURL.Referer = "http://www.mediafire.com"; 
        wrGETURL.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 
    
        HttpWebResponse wrResponse = (HttpWebResponse)wrGETURL.GetResponse(); 
        CookieCollection cookies = wrResponse.Cookies; 
    

    :私は私の コード(このコードをクリーンアップする醜い&ニーズである警告)まもなく

コードに掲載されます。

string sURL2 = String.Format("http://www.mediafire.com/dynamic/download.php?qk={0}&pk={1}&r={2}", 
         parameters[0],parameters[1],parameters[2]); 

    HttpWebRequest wrGETURL2 = (HttpWebRequest)WebRequest.Create(sURL2); 
    wrGETURL2.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 
    wrGETURL2.Referer = "http://www.mediafire.com"; 

    wrGETURL2.CookieContainer = new CookieContainer(); 
    wrGETURL2.CookieContainer.Add(cookies); 
    wrResponse = (HttpWebResponse)wrGETURL2.GetResponse(); 
    objReader = new StreamReader(wrResponse.GetResponseStream()); 
    html = objReader.ReadToEnd(); 

このHTMLは、そのするJavaScriptが含まれています

StreamReader objReader = new StreamReader(wrResponse.GetResponseStream()); 

    string[] parameters = {};//will contain the parameters fetched 
    string html = objReader.ReadToEnd(); 
    int cupos1 = html.IndexOf("cu("); 
    int cupos2 = html.IndexOf("')",cupos1); 
    string[] separators = { "','"}; 

    parameters = html.Substring(cupos1 + 4, cupos2 - cupos1 - 4) 
        .Split(separators, StringSplitOptions.None); 

は、エンコードされたダウンロードURLが含まれています2ページ目を取得:次は第二の要求のための鍵を見つけるためにページを解析したいですダウンロードURLを生成し、ここで私たちは、その後& finalyコンソールに書き込み、それを評価し、それを抽出します。

int varpos1 = html.IndexOf("<script language=\"Javascript\">")+35; 
    //The variables are declared just before the 'function' 
    int varpos2 = html.IndexOf("function",varpos1); 
    string vardata = html.Substring(varpos1, varpos2 - varpos1); 

    int hrefpos1 = html.IndexOf("href=\\\"http://", varpos2)+6 ; 
    int hrefpos2 = html.IndexOf(">", hrefpos1); 
    string hrefdata = String.Format("var url = {0};", html.Substring(hrefpos1, hrefpos2 - hrefpos1-5)); 
    object Result = EvalJScript(vardata + "\n" + hrefdata); 
    Console.WriteLine(Result.ToString()); 

このようなものが私のために働いたが、REWRにする必要がありますイッテン、私はまた、あなたが(Evaluating JScript in c#から)私が使用しているものとして動作するためEvalJScript機能を残して廃止されました

私の元の答えは上のコードの最後のブロックが遮断され
+0

PHPの解決策がありますが、私はPHPを知らないので、誰かが必要とする場合に投稿します。 http://www.mysteryzillion.org/forums/showthread.php?t=4381 – ByulTaeng

+1

PHPは非常に便利で、明らかにmediafireコードはCookieを設定します(http://www.mediafire .com/dynamic/download.php)また、cG関数は、URLリクエストに含める必要があるqk、pk&r変数を初期化します。これは、最終的なURLを生成するために評価する必要があるjavascriptを返します... –

+0

あなたの提案で、私は最終的にWebRequest:Dを使用して直接リンクを取得する方法を見つけました。もう一度ありがとう。 – ByulTaeng

1
Dim req As HttpWebRequest, res As HttpWebResponse 
Dim cok As New CookieContainer, str As String, match As Match 
req = WebRequest.Create("http://www.mediafire.com/?65d1dftjwml") 
req.CookieContainer = cok 
res = req.GetResponse 
str = New StreamReader(res.GetResponseStream).ReadToEnd 
match = Regex.Match(str, "cu\('(.+)','(.+)','(.+)'\);") 
Dim qk As String = match.Groups(1).Value 
Dim pk As String = match.Groups(2).Value 
Dim r As String = match.Groups(3).Value 
Dim t As String = "http://www.mediafire.com/dynamic/download.php?qk=" & qk & "&pk=" & pk & "&r=" & r & "&ukey=" & res.Cookies.Item("ukey").Value 

req = WebRequest.Create(t) 
res = req.GetResponse 
txtcode.Text = New StreamReader(res.GetResponseStream).ReadToEnd 
+0

ランダムに生成された変数の巨大なリストを取得するコードです。次のステップは、あなたのコードと同じです。私に助けてくれてありがとう^ – ByulTaeng

+0

偶然、RegEX:Dを使って最終的な変数を得るのにちょっとしたトリックが見つかりました。 var \ s [a-z0-9] {6} = '([a-z0-9] {11})'; – ByulTaeng

+0

あなたのコードは、共有のおかげでもっときれいです:) –

0

- それは、C#のコードを示しますVisual Basicを使用してGUIインタフェースを作る

int varpos1 = html.IndexOf("<script language=\"Javascript\">")+35; 
    //The variables are declared just before the 'function' 
    int varpos2 = html.IndexOf("function",varpos1); 
    string vardata = html.Substring(varpos1, varpos2 - varpos1); 

    int hrefpos1 = html.IndexOf("href=\\\"http://", varpos2)+6 ; 
    int hrefpos2 = html.IndexOf(">", hrefpos1); 
    string hrefdata = String.Format("var url = {0};", html.Substring(hrefpos1, hrefpos2 - hrefpos1-5)); 
    object Result = EvalJScript(vardata + "\n" + hrefdata); 
    Console.WriteLine(Result.ToString()); 
関連する問題