Что нового

IE не отображает видео с ВКонтакте

asdf8

Скриптер
Сообщения
564
Репутация
152
Постоянно появляется надпись "Для просмотра необходим Flash Player последней версии", на этом весь просмотр заканчивается.
Пробовал на WinXP sp3, Win7. Flash не ниже 11 версии.

Пример :
Код:
; никакого контафакта - ссылка на небольшой рекламный ролик

$hGui = GUICreate('test', 800, 500, -1, -1)
$oIE = ObjCreate("Shell.Explorer.2")
$hiE = GUICtrlCreateObj($oIE, 1, 1, 798, 498)
GUISetState(@SW_SHOW)
$oIE.navigate('http://vk.com/video_ext.php?oid=-26750264&id=163770498&hash=d5ee0f70fbc3efb2')
Do
Until GUIGetMsg() = -3

Видео с других сайтов воспроизводится без проблем, замена Flash на последнюю версию не дает никакого эффекта.
В чем может быть проблема ?
 

DarWiM

Продвинутый
Сообщения
527
Репутация
90
asdf8
Вероятно дело в том, что Shell.Explorer.2 является упрощённой версией браузера до IE8.
Вконтакте не хочет с ним дружить.
Но это ИМХО
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
DarWiM [?]
Вероятно дело в том, что Shell.Explorer.2 является упрощённой версией браузера до IE8.
Тоже об этом думал, но на Win7, вроде, меньше чем IE8 не ставят.
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
InnI [?]
Но идентификация уходит, как IE7

Интересная мысль. Вряд ли идентификация уходит, т.к. в разных браузерах исходник страницы получается абсолютно идентичным. Скорее всего проверка происходит уже в самом браузере с помощью js. Да и от IE7 не хотелось бы отказываться.
 

InnI

AutoIT Гуру
Сообщения
4,947
Репутация
1,443
Уходит идентификация или проходит - не суть важно. Главное, что сайт уверен, что работает с нужным браузером. Причём, при установленном IE8 у меня не получилось идентифицироваться, как 9 или 10. А вот при установленном IE10 можно и "девятым" стать, и "восьмым".
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
InnI [?]
Главное, что сайт уверен, что работает с нужным браузером

Сайту, похоже, по барабану на браузер. Видимо надо в странице ковырятся. Никак не могу найти, где в коде страницы это зашито.
 

InnI

AutoIT Гуру
Сообщения
4,947
Репутация
1,443
asdf8 [?]
Сайту, похоже, по барабану на браузер
Оказалось, что нет. У меня Win7 x86, IE10, Flash Player 11.8.800.94. Прописал в реестре
Код:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION]
"AutoIt3.exe"=dword:00002328

Теперь "Shell.Explorer.2" определяется, как IE9, в чём можно убедиться
Код:
$oIE.navigate('http://bilet.pp.ru/calculator_rus/moy_brouser.php')
И после всего этого просмотрел ролик при помощи вашего скрипта. Причём в высоком качестве.
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
InnI
У меня IE8 и он представляется как IE7, хотя IEXPLORE.EXE и все его dll 8 версии, в реестре его версия тоже 8.
FEATURE_BROWSER_EMULATION у меня ни на что не влияет.
Фактически мне нужно заставить работать локальную копию страницы на том, что есть.
 

InnI

AutoIT Гуру
Сообщения
4,947
Репутация
1,443
asdf8 [?]
У меня IE8 и он представляется как IE7
Я же ранее сообщил, что выше, чем установленный IE, имитация не получается. Для имитации IE8 нужно в реестре заменить 00002328 (десятичное 9000) на 00001f40 (десятичное 8000). Я у себя попробовал - работает (при установленном IE10).
Код:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION]
"AutoIt3.exe"=dword:00001f40
Попробуйте, может и у вас заработает.


Добавлено:
Сообщение автоматически объединено:

Проверил на Win7 x86 с IE8 - работает. Но при запуске из SciTE. Если скрипт скомпилирован, то вместо "AutoIt3.exe" нужно прописывать имя запускаемого файла. А если Win7 x64, то прописывать нужно в "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION" (это я не проверял - нет 64 разрядной Win7).
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
InnI [?]
Попробуйте, может и у вас заработает.

Спасибо за помощь, но у меня на WinXP не заработало - видимо какая-то проблема с IE. Попозже на Win7 попробую.


Добавлено:
Сообщение автоматически объединено:

Попробовал на XP переустановить IE8 - никакого толку, правка реестра не изменяет версию IE для Shell.Explorer.2.
Для Win7 с IE8 - правка реестра меняет для Shell.Explorer.2 на версию IE8 (dword:00001f40), и видео все равно не воспроизводится.
Для Win7 с IE9 - правка реестра меняет для Shell.Explorer.2 на версию IE9 (dword:00001f40), и видео начинает воспроизводиться.
Посмотрел код html-страницы - есть проверка на минимально допустимую версию IE - 6, flash - 7

Из всего этого могу сделать только один вывод - бажный код html-страницы, который не тестировался меньше чем на IE9. Ну и ладно - наплевать и забыть, все равно я видео с VK смотрю другим плеером.
 

InnI

AutoIT Гуру
Сообщения
4,947
Репутация
1,443
asdf8 [?]
у меня на WinXP не заработало
Добрался до машины с XP x86, IE8, Flash 10. В реестре не оказалось раздела "FEATURE_BROWSER_EMULATION". Добавил раздел, прописал исполняемый файл, запустил... и посмотрел ролик.
На Win7 x64 c IE10 тоже работает.
Странно, но где бы я ни пробовал - везде работает :smile:
 
Автор
A

asdf8

Скриптер
Сообщения
564
Репутация
152
InnI [?]
Добрался до машины с XP x86, IE8, Flash 10. В реестре не оказалось раздела "FEATURE_BROWSER_EMULATION". Добавил раздел, прописал исполняемый файл, запустил

Все то-же самое, только Flash 11... и не посмотрел ролик. (пробовал на 2-х машинах)

Судя по коду страницы нет каких-то ограничений, кроме IE >= 6, flash >= 7, наоборот имеется расширенная поддержка различных браузеров, в т.ч. и мобильных.
Так что ролик должен был бы показываться и без "FEATURE_BROWSER_EMULATION".

ps: решение проблемы, без правки реестра :
Код:
$sURL = 'http://vk.com/video_ext.php?oid=-26750264&id=163770498&hash=d5ee0f70fbc3efb2'

$hGui = GUICreate('test', 800, 500, -1, -1)
$oIE = ObjCreate("Shell.Explorer.2")
$hiE = GUICtrlCreateObj($oIE, 1, 1, 798, 498)
GUISetState(@SW_SHOW)
$oIE.navigate($sURL)

For $i = 1 To 20
	If IsObj($oIE.document) Then
		ExitLoop
	Else
		Sleep(250)
	EndIf
Next

If IsObj($oIE.document) Then
	$oElem1 = $oIE.document.getElementById('flash_player_container_outer')
	If IsObj($oElem1) Then
		$oElem1.style.display = 'none'
	EndIf
	$oElem2 = $oIE.document.getElementById('playerObj')
	If IsObj($oElem2) Then
		$oElem2.style.display = 'block'
	EndIf
EndIf

Do
Until GUIGetMsg() = -3
 
Верх