2017-01-10 23 views
1

Я в основном пытаюсь получить ссылку на файл m3u8. Когда страница сначала загружается, он запрашивает файл m3u8 с секретным токеном, который меняется каждый день. Файл загружается, если страница полностью загружена. Я вижу это, используя инструменты разработчика chrome на вкладке сети. Поскольку этот токен генерируется динамически, мне нужно сначала запросить этот файл, а затем дать мне URL-адрес файла, включая токен (что-то вроде http://secret-website.com/file?token=342782g1bud1).Selenium - Ждите веб-страницы, чтобы запросить внешний URL-адрес

Я никогда не пользовался селеном, поэтому мне интересно, как я могу это сделать, если это возможно. Мне нужно сделать это программно, используя python или C#.

+0

http://stackoverflow.com/questions/15122864/selenium-wait-until-document-is-ready – Muckeypuck

+0

О "подождите, пока загружается страница". В этом есть два разных типа. Предположим, вы используете Chrome, а страница все еще загружается, если круг на вкладке перестает вращаться? Или ты имеешь в виду, что он готов? –

ответ

1

Я нашел решение, которое будет ждать, пока не найдет файл .m3u8. Я использую fiddlecore как прокси-сервер, поэтому я могу видеть, что отправляется браузером. Это позволит мне зафиксировать любой запрос, и если запрос содержит .m3u8, он просто распечатает URL-адрес (который мне нужен). Обратите внимание, что это не будет работать с https, так как для этого требуются сертификаты fiddlecore (я думаю, это легко исправить). Это простой рабочий код.

bool close = false; 

    // - Initialize fiddler for http proxy 

    Fiddler.FiddlerApplication.Startup(5000, true, false); 
    Fiddler.FiddlerApplication.BeforeResponse += delegate(Session s) 
    { 
     string path = s.fullUrl; 
     if (path.Contains("720p.m3u8")) 
     { 
      Console.WriteLine(path); 
      close = true; 
     } 
    }; 

    // - Create a selenium proxy 
    var seleniumProxy = new OpenQA.Selenium.Proxy { HttpProxy = "localhost:5000"}; 
    var profile = new FirefoxProfile(); 
    profile.SetProxyPreferences(seleniumProxy); 

    // - Initialize selenium for browser automation 
    IWebDriver driver = new FirefoxDriver(profile); 
    driver.Navigate().GoToUrl("http://www.asite"); 
    while (!close) { } 

    driver.Quit(); 
    Fiddler.FiddlerApplication.Shutdown(); 
+0

Вы должны принять свой собственный ответ, если он сработает для вас. –