Selenium - 等待网页请求外部URL

时间:2017-01-10 16:13:01

标签: c# python selenium web m3u8

我基本上试图获取m3u8文件的链接。当页面首次加载时,它会向m3u8文件请求一个每天更改的秘密令牌。如果完全加载页面,则下载文件。我可以在网络选项卡上使用chrome开发人员工具查看它。由于这个令牌是动态生成的,我需要先让网站请求这个文件,然后给我一个文件的URL,包括令牌(类似http://secret-website.com/file?token=342782g1bud1)。

我从未使用过硒,所以我想知道如果可能的话我该如何做到这一点。我需要使用python或c#以编程方式执行此操作。

1 个答案:

答案 0 :(得分: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();