C#: Как программно сымитировать поведение браузера?

229
18 апреля 2017, 06:37

Не знаю даже, как именно сформулировать свой вопрос, поэтому опишу всю проблему целиком. Предположим, у нас есть некая страница в интернете, на которой есть видео-плеер. Нужно с помощью моей программы скачать видео к себе на компьютер. Раньше я делал так: заходил на страницу через браузер, перематывал в конец видео, нажимал "Исследовать элемент", переходил на вкладку "сеть", среди всех запросов выбирал те, которые имеют вот такой вид: И в свою программу из них копировал URL запроса и номер самого последнего "кусочка" видео, после чего она сама генерировала ссылки, начиная с https://блаблабла/1080p00000.ts и заканчивая 1080p000NNN.ts, где 000NNN - это последний "кусочек", затем она их всех скачивала в некоторую папку.

Теперь передо мной стоит задача усовершенствовать свою программу. А именно: сделать так, чтобы мне не надо было заходить в браузер для скачивания каждого видео, копировать URL запроса из вкладки "сеть" и т.д. и т.п. И самая главная проблема, которая тут возникает: как моя программа может узнать, по какому URL ей начинать делать запрос для скачивания? Я разбираюсь в работе сайтов на не особо продвинутом уровне, и вот как вижу механизм работы в общих чертах конкретно тут (поправьте, если ошибаюсь):

  1. Когда я захожу на страницу через браузер, на сервер сперва посылается простой http запрос, мол, "хочу загрузить страницу",
  2. после чего сервер дает браузеру страницу и все файлы, которые с ней связаны,
  3. затем браузер видит среди них скрипт *.js, начинает его выполнять,
  4. уже сам скрипт говорит браузеру "начни подгружать видео при помощи запроса GET по такому-то URL" (Два замечания: 1 - я так решил, потому что в информации браузера в "причине" указан JS (см. скриншот), 2 - важный ньюанс: самое начало видео начинает подгружаться не в тот момент, когда я нажимаю кнопку "воспроизвести", а когда я только захожу на эту страницу, что немного облегчает мою работу).
  5. Потом браузер посылает этот запрос GET по URL-у, который он узнал от скрипта и, соответственно, подгружает видео (что мы и наблюдаем на скриншоте).

И вот мы подобрались к самой сути проблемы: когда я посылаю запросы на сервер из моей программы (на адрес страницы с видео), то, само собой, никакой JS тут не выполняется, и проходит только 1ый пункт всего процесса, соответственно, необходимые URL для получения "кусочков" видео я тоже не получаю. Вопрос: как мне их все-таки получить? Именно из программы на C#.

Для работы с сетью использовал такие классы, как WebClient, WebRequest.

READ ALSO
C# WindowsForms WebBrowser [требует правки]

C# WindowsForms WebBrowser [требует правки]

Как загрузить страницу из строкичтобы при любом адресе показалось одна и то же информация

206
Создать новый PDF по шаблону

Создать новый PDF по шаблону

Вопрос по библиотеке itextSharpУ меня есть шаблон pdf документа, который я использую для формирования новых отчетов с данными из программы

245
Как из приcвоить ImageSource объект Canvas из ResourceDictionary через код

Как из приcвоить ImageSource объект Canvas из ResourceDictionary через код

Я заполняю ListBox, который содержит картинку и имя, с помощью классаКак присвоить картинке Canvas из файла ресурсов и будет ли изменятся цвет этой...

171
TimeSpan в Settings проекта

TimeSpan в Settings проекта

Добавил в настройки проекта параметр с типом TypeSpan, но почему-то я не вижу этот параметр через PropertiesSettings

200