C # webclient скачать последнюю версию CCleaner - PullRequest
0 голосов
/ 18 декабря 2018

Как я могу изменить свой метод загрузки C #, чтобы он получал окончательную ссылку для загрузки по данной ссылке, которую он перенаправляет на него.Сейчас я заинтересован в том, чтобы получить последнюю портативную версию 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);
    }

Конечно, использование этого по данной ссылке приводит к загрузке файла, который, по-видимому, является самой html-страницей ... Мой проект и должен быть net3.5, и загрузка должна быть асинхронной.Любая идея, как я мог это осуществить?Заранее спасибо

1 Ответ

0 голосов
/ 18 декабря 2018

Вы должны заметить, что это не редирект.Это вызвано кодом 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));
...