C# webclient 下载最新的CCleaner

C# webclient download latest CCleaner

我如何更改我的 C# 下载方法,以便它从重定向到它的给定 link 获得最终下载 link。 现在我有兴趣获得最新的 CCleaner 便携版本,它可以使用浏览器从 https://www.ccleaner.com/ccleaner/download/portable 获取。

这是我目前的下载方式:

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

当然,在给定的 link 上使用它会导致下载一个文件,该文件似乎是 html 页面本身。 我的项目是并且需要是 net3.5,下载必须是异步的。知道如何实现吗?

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

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