2009-07-24 11 views
1

Ich suche nach dem Weg, um die direkte Verbindung von Mediafire zu bekommen. Wenn ein Benutzer einen Download-Link aufruft, wird ihm standardmäßig eine Download-Seite angezeigt, auf der er auf die Verarbeitung des Downloads warten muss. Anschließend wird ein Link angezeigt.Mediafire direkte Verbindung ohne WebBrowser .NET Kontrolle erhalten?

ich gegoogelt und

WebBrowser WB fanden eine VB.NET 2008 Lösung dieses Problems

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

Es funktioniert gut, schön, aber ich bin von Pop-up-Fenster und die Ladegeschwindigkeit müde. Also, ich frage mich, ob es eine Lösung für dieses Problem gibt? (eine nicht WB Lösung ^^)

Jede Hilfe wird sehr geschätzt.

+1

eine GUI-Schnittstelle Machen Sie Visual Basic .. sehen, ob Sie eine IP aus ihm –

+0

Sry bekommen kann, aber ich weiß nicht, was Sie meinen: D – ByulTaeng

+1

es tut mir leid, ich habe gerade musste dieses Zitat mindestens einmal posten: http://www.youtube.com/watch?v=hkDD03yeLnU Auf der anderen Seite, anstatt die WB-Kontrolle zu verwenden, können Sie versuchen, & GET th Die Seite auf die harte Tour ... –

Antwort

3

ich wieder veröffentlichen werde, wenn ich den regulären Ausdruck in den Code gearbeitet haben, nicht sicher, dies wird allerdings arbeiten, wie ich glaube, Die tatsächliche Verbindung wird durch AJAX erhalten. Ich spiele immer noch damit.

AJAX Bedenken diskutiert: StackOverflow related question


Basierend auf dem PHP-Code in den Kommentaren versehen:

  • 1. Response-> den Wert holen auf eine Funktion „cG (var1 genannt weitergegeben , var2, var3) "Ich glaube nicht, dass mediafire immer noch diese Funktion verwendet, es scheint " cu (var1, var2, var3) "jetzt, nicht sicher, ob der php, den du gabst, wird immer noch funktionieren. trotzdem können wir das gleiche tun bekommen die werte aus der cu-funktion & post unsere anfrage an ? mit dem Cookie wir von unserer ersten Antwort abgerufen.
  • Die zweite Reaktion dieser großen Liste von zufällig generierte Variablen erstellt, erzeugt dann die Download-URL einige dieser Variablen verketten, der einzige Ausweg die URL zu erhalten, wenn dies durch using the Microsoft.JScript engine to evaluate this code ist. Ich werde mein Code sein Posting so schnell wie möglich

-Code (Warnung dieser Code ist hässlich & Bedarf gereinigt werden):

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; 

Hier haben wir die erste Anfrage & Speichern Sie die Cookies empfangen senden.Als nächstes wollen wir die Seite, um herauszufinden, die Schlüssel für die zweite Anforderung analysieren:

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); 

die zweite Seite holen, die die codierten Download-URL enthalten:

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(); 

Diese html enthält die Javascript das wird die Download-uRL generieren, hier wir es extrahieren, sie dann bewerten & finaly es an die Konsole schreiben:

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()); 

das Zeug für mich gearbeitet, aber muss rewr sein itten, lasse ich auch die EvalJScript Funktion für Sie als ein arbeiten Ich bin mit (von Evaluating JScript in c#) veraltet

+0

Es gibt eine PHP-Lösung, aber ich kenne PHP nicht, also poste ich hier, falls jemand es braucht. http://www.mysteryzillion.org/forums/showthread.php?t=4381 – ByulTaeng

+1

das PHP ist sehr nützlich, anscheinend setzt der mediafire-Code einen Cookie (der bei der Bewegung in Richtung http: //www.mediafire enthalten sein muss) .com/dynamic/download.php) auch eine cG-Funktion initialisiert qk, pk & r-Variablen, die in der URL-Anfrage enthalten sein müssen. das wird ein Javascript zurückgeben, das ausgewertet werden muss, um die endgültige URL zu generieren ... –

+0

Danke, mit Ihrem Vorschlag, habe ich endlich den Weg gefunden, den direkten Link mit WebRequest zu bekommen: D. Danke nochmal. – 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

Hier ist mein Code, um die riesige Liste der zufällig generierten Variablen zu erhalten. Der folgende Schritt ist genau wie Ihr Code. Vielen Dank, dass Sie mir geholfen haben ^^ – ByulTaeng

+0

Durch Zufall habe ich einen kleinen Trick gefunden, um die endgültigen Variablen mit Hilfe von RegEX zu erhalten: D. var \ s [a-z0-9] {6} = '([a-z0-9] {11})'; – ByulTaeng

+0

Ihr Code ist viel sauberer, danke für die Weitergabe :) –

0

der letzte Block des Codes auf meiner ursprünglichen Antwort ist abgeschnitten - es zeigt den C# -Code auf die Bewertung jscript:

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()); 
Verwandte Themen