Как Bing Video Search извлекает видео с разных веб-сайтов? - PullRequest
0 голосов
/ 12 мая 2010

Они декомпилируют вспышку или что-то в этом роде? Я не представляю, как они это сделали.

1 Ответ

1 голос
/ 12 мая 2010

Просто предположение, но они могли видеть, к чему подключается SWF-файл Flash (т. Е. Найти URL FLV на основе HTTP-запроса, сделанного SWF-файлом). Как только они это сделают, они могут сделать одну из двух вещей:

1) Поставьте в очередь URL-адрес процесса, который: i) загружает FLV, ii) отсекает FLV, чтобы иметь длину 10 секунд, iii) добавляет постепенное исчезновение / исчезновение, iv) сохраняет.

или

2) Они могут просто подключаться напрямую к FLV каждый раз, используя исходный URL, и проигрывать только 10 секунд. Затем они могут добавить эффекты, такие как появление / исчезновение поверх видео. Хотя,

Я сомневаюсь, что они будут использовать второй метод, поскольку он может вызвать раздражающие всплески на серверах людей и потенциально может увеличить задержку. Первый способ позволяет серверам Bing кэшировать видео и размещать их в одном надежном месте, предназначенном для потоковой передачи видео.

Обновление

Если подумать, есть еще один способ сделать это:

Я знаю, что в PHP вы можете декомпилировать скомпилированный SWF на лету. Это довольно быстро, и это будет простой способ извлечь любые URL. Конечно, Microsoft не будет использовать PHP, но я уверен, что у них есть эквивалентная библиотека, написанная на C ++ (я уверен, что они используют C ++).

Но даже если бы они искали HTTP-запросы к FLV, у них, вероятно, был бы сканер, работающий в легковесном «браузере». Браузер должен будет визуализировать флэш-память, чтобы затем выполнить HTTP-запрос, а затем записать все связанные запросы. Это не слишком сложная задача, если вы работаете на своем собственном сервере, вы можете просто запустить фоновый процесс, который просматривает журналы в поисках FLV-запросов. Создание вашего собственного браузера для этого может показаться пугающим, но на самом деле все довольно просто (ish): в C # вы можете сделать HttpRequest на URL, отсканировать документ на наличие любых ссылок, поставить в очередь ссылки, запросить каждую ссылку и выполнить цикл таким образом. (убедитесь, что вы не посещаете ссылки, которые вы уже посетили). В PHP вы можете свернуть URL и сделать то же самое. Каждый раз, когда вы находите SWF-ссылку, вы добавляете ее в другую очередь, которая может визуализировать флэш-память (или декомпилирует ее), и находят любые ссылки на URL-адреса FLV, а затем ставите их в очередь по мере необходимости.

...