C#WebClient下载最新的CCleaner

时间:2018-12-18 13:21:40

标签: c# redirect webclient downloadfileasync

如何更改我的C#下载方法,以便它从给定的链接获取最终的下载链接,并将其重定向到该链接。 现在,我感兴趣的是可以使用浏览器从https://www.ccleaner.com/ccleaner/download/portable中获取最新的CCleaner便携式版本。

这是我当前的下载方法

public void downloadFile(String address, String filename)
    {
        WebClient down = new WebClient();
        down.Headers.Add(HttpRequestHeader.UserAgent,"Mozilla/5.0 (compatible; http://example.org/)");
        down.DownloadFileAsync(new Uri(address), filename);
    }

当然,在给定的链接上使用它会导致下载文件,这似乎是html页面本身... 我的项目是并且需要是net3.5,下载必须是异步的。有什么想法可以实现吗? 预先感谢

1 个答案:

答案 0 :(得分:1)

您应该注意,它不是重定向。它由JavaScript代码触发。该页面包含您需要的url,但是您必须自己提取它。这样的事情可能会起作用,但是您应该为regexp添加一些检查:

WebClient down = new WebClient();
down.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (compatible; http://example.org/)");
var result = down.DownloadString(new Uri("https://www.ccleaner.com/ccleaner/download/portable"));
var download = Regex.Match(result, "data-download-url=\"(.*?)\"").Groups[1].Value;
var uri = new Uri(download);

down.DownloadFileAsync(uri, Path.GetFileName(download));