Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.07.2015, 15:35
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

Получить произвольную страницу в браузере и обработать через JavaScript
... без использования юсерскрипта и проксирующего сервера.

Вопрос. Есть ли возможность в браузере получить HTML-код (или XML-объект) страницы по произвольному URL и обработать через JavaScript?

Например, нужно в браузере через JavaScript получить код страницы:

https://yandex.ru/search/?text=привет

Каким образом это можно сделать?

Задача предельно простая.

Но читаю интернет и поражаюсь: похоже, что такого действия в браузере сделать нельзя. Какие-то дикие ограничения: сервер, куда обращается JavaScript, должен находиться под вашим контролем, там вы должны разместить на отдаваемых страницах поддержку postMessage HTML5 или реализацию JSONP, или вы должны сделать на сервере тупой PROXY, или включить на сервере CORS. Но я же не могу этого сделать на yandex.ru.

Может быть, есть какое-нибудь таки решение? Пускай извратное, типа побайтной реализации HTTP протокола на JavaScript через websocket или что нибудь наподобе?

Рассмотрю так же решение с PROXY, если в нем будет понятно как избежать бана PROXY-сервера со стороны поисковика при слишком частых запросах. Поэтому хотелось бы «распределенного» решения, которое просто работает из браузера пользователя.
Ответить с цитированием
  #2 (permalink)  
Старый 08.07.2015, 16:36
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

Походу, просто так действительно нельзя. Сейчас рассматриваю такой вариант.

Можно пойти по пути JSONP. Грузить страницу как яваскрипт-код (уж его-то можно брать с любого домена). И надо запретить исполняться коду внутри этого фальшивого тега <script>, например через атрибут defer + несуществующий скрипт который никогда не загрузится:

<script defer type="text/javascript"
         src="https://mydomain.ru/tooslowsend">
</script>

<script defer type="text/javascript"
         src="https://yandex.ru/search/?text=привет">
</script>


Потом попробовать вытянуть содержимое файльшивого <script> из DOM-модели.
Ответить с цитированием
  #3 (permalink)  
Старый 08.07.2015, 17:11
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

xintrea,
Мон пробовать ЧаВО - часто задаваемые вопросы (faq)
Ответить с цитированием
  #4 (permalink)  
Старый 09.07.2015, 05:32
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от xintrea
Какие-то дикие ограничения
Ну хоть что-то для защиты предусмотрено. По крайней мере чтоб не так просто было.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подгрузить скрипт в тело страницы через javascript aleksandr8i Javascript под браузер 10 30.12.2016 21:10
Криво отображается SVG через Javascript Ruslan_as jQuery 3 01.08.2014 12:08
в getElement удаётся получить тэг через getElemetsByTagName Терехов Станислав Общие вопросы Javascript 19 19.06.2014 06:35
Как получить текущую страницу браузера psychodrake Общие вопросы Javascript 12 19.09.2008 00:28
Обращение к именам, полученным через Javascript baal1988 Events/DOM/Window 1 31.08.2008 15:08