Цм
$рапе1 = оЬ_де^согЛег^8();
оЬ_епс!_с1еап();
?>
Здесь командой оЬ_э1аг1 начинаем буфериза-
цию вывода, затем идет НТМЬкод нашей панели,
а потом результат вывода получаем в перемен-
ную
$рапе1
и командой
оЬ_епс1_с1еап
очищаем
буфер вывода и отключаем буферизацию вывода.
В результате переменная
$рапе1
будет содержать
текст с НТМЬкодом нашей
навигационной панели.
Получение и про-
смотр веб-страницы
W ІИ Ж 8 7 71
Agerst РНЗР/З 2 17
*■*»*»■
W*MW■ЧІМІЧІМУ
-«V)
jjygjjjljyj
Рис.
2. Никуда не скрыться
Ад«*; Moetfa&OOMrsdfcws; U>
bit
S,l; ni; tv.l •$. 3.16)^ecLo/<Mi£>U30f*irefe*/$S.t6
WebMorwy Adv
isor Most: лгяип*.
.com
П
оскольку
форма
на-
шей
панели
передает
данные
адреса
про-
сматриваемой веб-страницы методом GET, то про-
веряем, был ли получен параметр
site
в массиве
$_GET.
Если такой параметр присутствует и длина
строки в нем больше нуля, то параметр не пустой и
приступаем к загрузке и разбору страницы:
if (isset($_GET[“site”]) and
(strlen($_GET[“site”])>0)) {
$asite = $_GET[“site”];
/ / Выделяем домен сайта без “http://”
$asite = ‘http://’.str_replace( ‘http://’, ” , $asite);
/ / Загружаем страницу с указанного адреса
$html = file_get_contents($asite);
/ / Устанавливаем базовый URL
$html = str_replace( ‘<head>’, ‘<headxbase
href=”’.$asite.’”>’, $html);
/ / Избавляемся от конца веб-страницы
$html = str_replace( ‘</htm l>’, ” , $html);
$html = str_replace( ‘</body>’, ", $html);
I I
Ищем тег BODY, чтобы после него вставить
нашу навигационную форму
$k = strpos($html,’<body’);
if (!$к) $к = strpos($html,’<BODV);
if ($к) {
$tmp = substr( $html, 0, $k );
$html = substr( $html, $k, strlen($html) );
$k = strpos($html,’>’);
$tmp .= substr( $html, 0, $k+1 ).$panel.substr(
$html, $k+1, strlen($html) );
$html = $tmp;
>
else / / Если тег BODY не найден, то ищем HEAD
и корректируем веб-страницу
$html = str_replace( ,</head>’1
,</head><body>,.$panel1
$html);
echo $html;
11
}
else echo $panel;
r
В данном
РНР-коде сначала корректируем ад-
рес сайта в
$asite,
чтобы он
всегда был с пре-
фиксом.
Если пользователь укажет его без пре-
фикса http://, то адрес будет исправлен. А если
префикс уже окажется там, то на всякий случай
его вырезаем из адреса, чтобы не получилось в
нем двух префиксов.
і
При
помощи
команды
file_get_contents
получа-
ем текст HTML-кода веб-
страницы
в
переменную
Shtml.
.
Вслед
за
этим
ищем
в
коде
страницы
тег
<HEAD>
и
заменяем
его на такой же, но с тегом
BASE,
чтобы все ре-
сурсы (картинки,
ссылки, JS-скрипты) страницы
загружались и работали правильно.
/
Это необходимо сделать, поскольку практически
всегда веб-страницы содержат не прямыр, а отно-
сительные ссылки на собственные ресурсы. У нас
ведь в прокси страница будет загружаться в брау-
зер с адреса прокси, а ресурсы, необходимые для
корректного отображения веб-страницы, находят-
ся на ее домашнем сервере.
Далее удаляем
из кода страницы замыкающие
теги
BODY и
HTML,
поскольку
нам
в
конец этой
страницы
предстоит сделать инъекцию
;).
После
этого ищем открывающий тег BODY,
написанный
либо строчными, либо прописными буквами.
Все, что до этого тега копируем в переменную
$tmp,
а
вторую
часть
страницы
в
переменную
$html. Затем в этой части ищем первый попавший-
ся знак “>” - он же замыкающий для тега BODY,
поскольку в этом теге могут быть какие-то важные
для
верстки
страницы
параметры.
После
чего
в
переменной $tmp собираем весь код веб-страни-
цы, но уже с нашей навигационной панелью.
Если по каким-то причинам тег BODY в странице
отсутствует,
то
ищем
закрывающий
тег
HEAD
и
корректируем страницу так,
чтобы в ней был тег
BODY, затем шла бы наша панель. Ведь в конце на-
шего РНР-скрипта мы всё равно будем закрывать
страницу тегами </BODY> и </HTML>.
>
Когда
все
необходимые
действия
выполнены,
командой
echo Shtml
выводим содержимое пере-
менной
Shtml
в браузер пользователя. Если ника-
ких параметров пользователь нашему проксику не
передавал, то просто выводим навигационную па-
нель в ветви
else echo Spanel.
Замыкает вывод
в
браузер пользователя
наша
JavaScript-инъекция:
<script>
function CatchClick( url ) {
var d - document.getElementByldfsite”);
предыдущая страница 37 Компьютер 2012 02 читать онлайн следующая страница 39 Компьютер 2012 02 читать онлайн Домой Выключить/включить текст