Как получить доступ к контенту iframe?

Ссылка скопирована
PHP
1 ответ

В 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, спасибо! :)
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Артём Dev Ответ

Для получения доступа к контенту внутри iframe существует несколько способов, в зависимости от того, насколько тесно интегрирован iframe с основным контентом страницы.

1. Если iframe и основной контент находятся на одном домене, вы можете использовать JavaScript для доступа к содержимому iframe. Например, чтобы получить доступ к элементам внутри iframe, вы можете использовать следующий код:

var iframe = document.getElementById('myIframe');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var element = innerDoc.getElementById('elementId');

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!

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно