Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   В локальном html файле отобразить страницу Яндекса с заменой (https://javascript.ru/forum/misc/59097-v-lokalnom-html-fajjle-otobrazit-stranicu-yandeksa-s-zamenojj.html)

ruslan_mart 28.10.2015 19:46

optik77, никакие привилегии не нужны.

По сути получается следующая картина: мы с помощью file_get_contents получаем страницу яндекса и записывает это всё в переменную. Далее, в заголовке указываем, что на выходе у нас должен получиться JS-файл (text/javascript), хотя это не обязательно. Потом мы генерируем название ф-ции, которая будет вызвана (в нашем случае - yandexCallback), и в качестве параметра передаём в неё то, что получили от яндекса.

В итоге у нас получается JS файл примерно такого вида:

yandexCallback("<html><head>....</head><body>....</body></html>");


И мы подключаем этот файл предварительно объявив нашу ф-цию yandexCallback, и она будет вызвана из того самого файла. Как-то так.

P.S.: ещё нужно экранировать или удалить переносы строк, иначе будет ошибка:

yandexCallback("<html><head>...

</head><body>....</body></html>");

//Syntax error


Можно сделать вот так:
echo 'yandexCallback("' . addslashes(preg_replace(/[\n\r\f]+/, '', $content)) . '")';

laimas 28.10.2015 20:18

Цитата:

Сообщение от optik77
свой/не свой сервер?

Свой, этот тот которым вы можете управлять, в том числе заголовками, а что более важно разрешать доступ к нему только выше указанным адресам.

Чужой, это не ваш, сервером Яшки вы управлять не можете, и распоряжаться его контентом не получится.

optik77 29.10.2015 15:03

Ruslan_xDD,
Прикол в том, что сделал я все как велели. Создал файл get_content.php
Сперва указал в качестве урла некий другой адрес, проверил работу, вызвал пхп, получил html код запрашиваемого ресурса. Указал свой нужный адрес сайта и получил в качестве кода некий штмл код из трех строк с тайтлом этого сайта и в боди указано 'невозможно выполнить запрошенную операцию'. Т.е видимо их сайт был готов что я функцией file_get_contents полезу к ним за кодом и аккуратно послали меня.

Help! Как еще можно их обмануть и выцепить злосчастный исходник?

laimas 29.10.2015 15:49

Цитата:

Сообщение от optik77
Как еще можно их обмануть и выцепить злосчастный исходник?

cURL или для file_get_contents задать контекст.

optik77 29.10.2015 16:24

laimas,

Подскажите пожалуйста, как понять какой контекст составить?

ruslan_mart 29.10.2015 16:33

$stream = curl_init();
curl_setopt($stream, CURLOPT_HEADER, 0);
curl_setopt($stream, CURLOPT_USERAGENT, 'Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51');
curl_setopt($stream, CURLOPT_URL, 'http://yandex.ru/');
curl_setopt($stream, CURLOPT_TIMEOUT, 10);
curl_setopt($stream, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($stream, CURLOPT_FOLLOWLOCATION, 1);
$content = curl_exec($stream);
curl_close($stream);

laimas 29.10.2015 16:48

Контекст собственно опции запроса, а вот что проверяет ресурс запрашиваемый, это нужно определять, это могут быть и куки, и реферер... Для file_get_contents контекст задается так.
Но в с случае кук лучше использовать cURL, и почитать об этом:
просто - http://www.odmin4eg.ru/2008/curl-cookie-cookies/
продвинуто - http://habrahabr.ru/post/133191/

Экспериментируйте пока не установите, что требует сервер.

optik77 30.10.2015 11:51

Уважаемые, получилось с помощью курла!
Но только в ie.....*плач*
В файерфоксе пустой лист
Причем если в файрфоксе открыть мой сайт с пхп скриптом то он на экране отображает весь код:

GetHTMLcode("<html>...</html>")

А при отработке моей штмл страницы с рабочего стола-пустота, хотя в интернет эксплорере все работает!
?

laimas 30.10.2015 12:08

Цитата:

Сообщение от optik77
Причем если в файрфоксе открыть мой сайт с пхп скриптом


Это как, страницу с РНР сценарием? Ну а с чего бы оно выполнялось, для этого нужно локальный сервер иметь.

optik77 30.10.2015 15:36

Разобрался, в файрфоксе не работало из за кодировки самого файла. Спасибо


Часовой пояс GMT +3, время: 21:12.