Вторая просьба была такова — описать работу простейшего анонимайзера. Ну-с приступим. Сначала теория. Сайт для браузера — это последовательность всяких символов, именуемых html-кодом. В самом простом случае мы должны эту последовательность символов считать и куда-то записать. Что-то типа такого:
<?php $url = fopen ("https://makson.ru", "r"); $file = fopen ("site.html", "w"); $k = ""; while (!feof($url)) { $i = fgets ($url); $k = $k.$i; } fputs ($file,$k); ?>
Разберём по-строчно.
1. $url = fopen («https://makson.ru», «r»); — функция fopen открывает файл или url. Режим ‘r’ открывает файл только для чтения и помещает указатель в начало файла.
2. $file = fopen («site.html», «w»); — аналогично, но режим ‘w‘ открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует — пробует его создать.
3. Переменной $k пока задаём пустое значение.
4. while (!feof($url)) { — указывает PHP выполнять вложенные выражения повторно до тех пор, пока выражение в самом while является TRUE. Функция feof() проверяет, достигнут ли конец файла. Знак ‘!‘ в php является знаком отрицания, то есть цикл будет работать пока не будет достигнут конец файла.
5. $i = fgets ($url); — функция fgets читает строку из файлового указателя. В нашем случае указатель на файл — переменная $url. Указатель на файл должен быть корректным и указывать на файл, успешно открытый функциями fopen() или fsockopen() (и все еще не закрытым функцией fclose()).
6. $k = $k.$i; — переменная $k равняется самой себе плюс значение переменной $i (строка). То есть цикл накладывает содержимое строк файла друг на друга.
8. fputs ($file,$k); — функция известна также, как fwrite. Записывает содержимое в файловый поток. То есть в site.html будет записано значение переменной $k.
Простейший анонимайзер готов, конечно, для динамических сайтов оно не годится.
А вот для отображения в браузере нужно этот самый браузер сэмулировать путём передачи заголовков (HTTP/1.1 — RFC 2068). Как-нибудь напишу об этом.