2009-07-24 2 views
1

Я ищу способ получить прямую ссылку от mediafire. По умолчанию, когда пользователь посещает ссылку для загрузки, ему будет представлена ​​страница загрузки, где он должен дождаться загрузки, а затем появится ссылка.Получение прямой ссылки mediafire без использования элемента управления WebBrowser .NET?

Я гугл и нашел решение VB.NET 2008 для этого с помощью WebBrowser WB

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

Она работает довольно хорошо, но я устал от всплывающих окон и скорости загрузки. Итак, интересно, есть ли решение этой проблемы? (не WB-решение ^^)

Любая помощь с благодарностью.

+1

Сделать графический интерфейс с использованием Visual Basic .. если вы можете получить IP-адрес из него –

+0

Sry, но я не знаю, что вы имеете в виду: D – ByulTaeng

+1

Я извиняюсь, я просто должен был опубликовать эту цитату хотя бы один раз: http://www.youtube.com/watch?v=hkDD03yeLnU С другой стороны, вместо использования элемента управления WB вы можете попробовать и получить e page трудный путь ... –

ответ

3

Я буду отправлять назад, когда я работал регулярное выражение в код, не уверен, что это будет работать, хотя, как я думаю, фактическая ссылка получена через AJAX. Я все еще играю с этим.

AJAX касается обсуждения: StackOverflow related question


на основе кода PHP, содержащейся в комментариях:

  • первый response-> получить значение передается в функцию под названием «Cg (var1 , var2, var3) «Не думаю, что mediafire все еще использует эту функцию, кажется, что это называется « cu (var1, var2, var3) »сейчас, не уверен, что php, который вы дали, по-прежнему будет работать. В любом случае, мы можем сделать то же самое, получить значения от функции cu & Отправьте наш запрос на ? с печеньем, который мы получили от нашего первого ответа.
  • 2-ая реакция создает этот огромный список случайных сгенерированных переменных, затем генерирует URL загрузки конкатенации некоторые из этих переменных , единственный способ получить URL, если это является using the Microsoft.JScript engine to evaluate this code. Я буду размещение моих код как можно скорее

Code (предупреждение этого код некрасивые & должен быть очищен до):

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; 

Здесь мы послать первый запрос & магазина получило печенье.Далее мы хотим разобрать страницу, чтобы узнать ключи для 2-го запроса:

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

Fetch 2-ю страницу, которая будет содержать кодированный URL загрузки:

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 генерировать URL загрузки, здесь мы извлечь его, а затем оценить его &, наконец записать его на консоль:

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 Иттен, я также оставить функцию EvalJScript для вас работать, как один я использую (от Evaluating JScript in c#) осуждается

+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 инициализирует переменные qk, pk & r, которые необходимо включить в URL-запрос. это вернет javascript, который необходимо оценить для генерации окончательного url ... –

+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# по оценке 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()); 
Смежные вопросы