2017-01-10 8 views
1

기본적으로 m3u8 파일에 대한 링크를 얻으려고합니다. 페이지가 처음로드되면 매일 변경되는 비밀 토큰으로 m3u8 파일을 요청합니다. 페이지가 완전히로드 된 경우 파일이 다운로드됩니다. 네트워크 탭에서 크롬 개발자 도구를 사용하여 볼 수 있습니다. 이 토큰은 동적으로 생성되므로 웹 사이트에서이 파일을 먼저 요청한 다음 토큰 (http://secret-website.com/file?token=342782g1bud1과 같은)을 포함하여 파일 URL을 제공해야합니다.Selenium - 웹 페이지가 외부 URL을 요청할 때까지 기다리십시오.

나는 셀레늄을 한번도 사용하지 않았기 때문에 가능한 경우 어떻게 할 수 있는지 궁금합니다. 나는 그것을 프로그래밍 방식으로 파이썬이나 C#을 사용하여 할 필요가있다.

+0

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

+0

. 이것에는 두 가지 유형이 있습니다. Chrome의 경우 탭의 원이 회전하지 않으면 페이지가 '로드 중'입니까? 아니면 준비가되었다는 뜻입니까? –

답변

1

.m3u8 파일을 찾을 때까지 기다릴 해결책을 찾았습니다. 브라우저로 보내지는 것을 볼 수 있도록 프록시로 fiddlecore를 사용하고 있습니다. 이렇게하면 모든 요청을 캡처 할 수 있으며 요청에 .m3u8이 포함되어 있으면 필요한 URL을 간단히 인쇄합니다. 그것은 fiddlecore가 인증을 필요로하므로 https에서 작동하지 않습니다 (수정하기 쉽습니다). 이것은 간단한 작업 코드입니다. "페이지가로드 될 때까지 기다립니다"에 대해

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

그것이 효과가 있다면 자신의 대답을 받아 들여야합니다. –