Вход

Просмотр полной версии : Получить произвольную страницу в браузере и обработать через JavaScript


xintrea
08.07.2015, 15:35
... без использования юсерскрипта и проксирующего сервера.

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

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

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

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

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

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

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

Рассмотрю так же решение с PROXY, если в нем будет понятно как избежать бана PROXY-сервера со стороны поисковика при слишком частых запросах. Поэтому хотелось бы «распределенного» решения, которое просто работает из браузера пользователя.

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

Можно пойти по пути 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-модели.

Deff
08.07.2015, 17:11
xintrea,
Мон пробовать http://javascript.ru/forum/misc/9459-chavo-chasto-zadavaemye-voprosy-faq-9.html#post193277

kostyanet
09.07.2015, 05:32
Какие-то дикие ограничения

Ну хоть что-то для защиты предусмотрено. По крайней мере чтоб не так просто было.