Как получить доступ к контенту iframe?
В WP админке через блок "проивзольный HTML" встраивается iframe с видео (рутуб, ютуб, вк).
Нужно программно определить, что iframe -- именно ролик. Хотел подвязаться к потомственному тегу video,
но не могу получить к нему доступ (iframe вроде несколько изолирует свой контент от места, куда встраивается).
Как получить доступ к внутреннему контенту iframe?
Дополнительно:
Если через js с другого домена то кто ж вам разрешит?
Ну только если на стороне php - дернуть curl вбитую страницу и посмотреть на ее контент. Однако ж тут можно упереться в то что никто не любит ботов
Ответы:
ну так анализируй его src
- мне сказали, что это недостаточно надёжно, домены src могут поменяться.
а так бы я не против на этом вариантте остановиться. - froggush,
рутуб, ютуб, вк
так у тебя варианты же ограничены
- Everything_is_bad, да, но аргументировали против этого подхода тейком, что домены могут поменяться. типа возьмут и резко поменяют свои имена все видео-хостинги.
Кроме src совсем никаких вариантов? - froggush,
резко поменяют свои имена все видео-хостинги
возьмешь и поправишь на новые
- froggush, думаю не поменяют)
На javascript с правами вебсайта ты этого не сможешь сделать, браузер не дает доступ к сторонним доменам в iframe, за исключением доменов-потомков (типа твой domain.ru а iframe - zzz.domain.ru, такой вариант доступ имеет), потому что там сайт открывается с куками пользователя, т.е. можно было бы открывать критичные сайты в iframe и собирать доступы к ним нахяляву.
Доступ к iframe в браузере имеют плагины и скрипты, запущенные из консоли (плюс все что управляется из selenium).
Так же возможен свой кастомный браузер на базе какого-нибудь webkit (там доступ к контенту прямой без ограничений), но что то мне говорит что ни плагины ни свой браузер тебе не подходит.
p.s. универсально, а точнее если со стороны сайта, публикуемого в iframe, идет борьба с этим, у тебя нет возможности узнать что там отображается.
Но если специально никто не следит, то можно поднять на своем сервере прокси, который будет заворачивать в твой домен указанный (например сайт domain.ru в iframe - yoyo.com, а ты создаешь yoyo-com.domain.ru как копию yoyo.com и открываешь уже этот сайт в iframe, доступ будет с твоими куки (а не куки пользователя).
Особого смысла в таком действии нет, как и нет смысла проверять, что же там открылось в iframe.
- rPman А на php? Та же история?
- на php нет понятия iframe, это исключительно браузерная фишка, поэтому тут вопрос 'а на php?' не имеет смысла.
тебе уже сказали - смотри по src, ты посчитал что владелец домена по этой ссылке может что то там подменять и хитрить, в таких условиях уж на php проверку сделать адекватную ты точно не сможешь.
- rPman, спасибо! :)
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для получения доступа к контенту внутри iframe существует несколько способов, в зависимости от того, насколько тесно интегрирован iframe с основным контентом страницы.
1. Если iframe и основной контент находятся на одном домене, вы можете использовать JavaScript для доступа к содержимому iframe. Например, чтобы получить доступ к элементам внутри iframe, вы можете использовать следующий код:
var iframe = document.getElementById('myIframe'); var innerDoc = iframe.contentDocument || iframe.contentWindow.document; var element = innerDoc.getElementById('elementId');
2. Если iframe и основной контент находятся на разных доменах, у вас может возникнуть проблема безопасности из-за политики Same-Origin Policy. В этом случае, если у вас нет контроля над содержимым iframe, вы не сможете получить доступ к его содержимому из основной страницы.
3. Если вам нужно взаимодействовать с iframe на другом домене, вам может потребоваться использовать методы коммуникации между окнами, такие как postMessage(). С помощью этого метода вы можете отправлять сообщения между основной страницей и iframe, чтобы передавать данные и взаимодействовать с содержимым iframe.
Какой именно способ подходит для вас, зависит от конкретных требований вашего проекта и ограничений безопасности. Надеюсь, это поможет вам получить доступ к контенту в iframe!