Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить HTMLDocument из IE, используя C# 
V
    Опции темы
NET_or_not_NET
Дата 14.5.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: нет
Всего: 1



Доброго дня!

Народ помогите, мне надо поставить фильтр на "ненармотивную лексику"  (IE - шные не устраивают) на страницу загруженную в IE

Могу получить хендл (окно класса 'Internet Explorer_Server'), а как дальше??  smile 
Возможно ли вообще через хендл получить html страничку?

кто что делал? помогите!
PM MAIL   Вверх
Mymik
Дата 14.5.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Как я понимаю тебе нужно получить уже сгенерированный код страницы... Вообще как такового простого решения нет. Нужно изворачиваться всегда...
Я знаю два решения (вероятно, что есть еще какие-то)
Первый способ через Response.Filter
Тут ты присваиваешь этому свойству свой класс. Твой класс должен быть унаследован от System.IO.Straem
Что-то типа вот этого вот
Код

public class HtmlFilterStream: System.IO.Stream
{
    private Stream stream;

    public HtmlFilterStream(Stream stream, string applicationPath)
    {
        this.stream = stream;
    }

    public override void Write(byte[] buffer, int offset, int count)
    {
        string html = System.Text.Encoding.UTF8.GetString(buffer, offset, count);
        /* А тут фильтруем все что тебе нужно. Ну и после этого отдаем его пользователю */
        stream.Write(buffer, 0, buffer.Length);
    }
}

Ну и соответственно в cs коде страницы пишем
Код

Response.Filter = new HtmlFilterStream(Reponse.Filter);

Это был как бы локальный случай. Т.е. для одно страницы будет подходить. А второй способ это через HttpModule && Response.Filter. Это уже глобальный способ. Будет работать везде.
Тебе нужен класс, который будет унаследован от IHttpModule
Код

    public class HTTPModule_Clearer : IHttpModule
    {
        public void Dispose()
        {         
        }
        /// <summary>
        /// Подключение обработчиков событий
        /// </summary>
        public void Init(HttpApplication context)
        {
           /* Подключаем обработчик на событие ReleaseRequestState */
           context.ReleaseRequestState += new EventHandler(this.context_Clear);
           /* Подключаем обработчик на событие PreSendRequestHeaders */
           context.PreSendRequestHeaders += new EventHandler(this.context_Clear);
           /* Два обработчика необходимы для совместимости с библиотеками сжатия HTML-документов */
        }
        /// <summary>
        /// Обработчик события PostRequestHandlerExecute
        /// </summary>
        void context_Clear(object sender, EventArgs e)
        {
            /* Получение HTTP Application */ 
            HttpApplication app = (HttpApplication)sender; 
            string realPath = app.Request.Path.Remove(0, app.Request.ApplicationPath.Length + 1);

            /* Получаем имя файла который обрабатывается */
            if (realPath == "WebResource.axd") /* Проверяем не является ли он ссылкой на ресурс сборки */
                return;

            if (app.Response.ContentType == "text/html") /* Проверяем тип содержимого */
                app.Context.Response.Filter = new HTMLClearer(app.Context.Response.Filter); /* Устанавливаем фильтр обработчик*/
        }
    }

Ну и соответственно потом прописать этот класс в web.config


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
NET_or_not_NET
Дата 15.5.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: нет
Всего: 1



Mymik, ОГРОМНОЕ СПАСИБО!!! буду разбираться!!

но чувствую обязательно еще будут вопры  smile 
PM MAIL   Вверх
NET_or_not_NET
Дата 16.5.2007, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: нет
Всего: 1



Доброго утра всем!

Народ прошу мне помочь!!! 

Задача: Пришел мой шеф на работу, запустил internet explorer и серфает по инету, 
а мой модуль просматривает все страницы и вырезает ненармотивную лексику, (и вообще он еще просил все линки на XXX)!
Это конечно хорошо, он у нас человек высоко-моральный, но мне от этого не легче! У него два бзыка!
1. Написать свои фильтры, IE - шные не подходят (и ему ни чего не докажешь!)
2. Он мировой директор фан клуба MicroSoft Internet Explorer!  smile 

Народ помогите, написать модуль(приложение, что угодно) но только что-бы оно фильтровала html - страничку из IE и возвращала ему её обратно в IE?

Блин, написал как-то сумбурно, ЛЮДИ ПОМОРГИТЕ!
Запишу Ваши ники, золотыми буквами, в историю своей дизни! буду вечно Вас помнить, и всем и всегда говорить что на земле
есть люди, добрые люди!!! Не народ я серьезно, ПОМОГИТЕ!!!!!

Mymik, доброго времени суток!!!
Я пошел купил книгу и ....  уже запутался совсем!!!!
Читаю:
Цитата

по сути, когда создается модуль HTTP, он регестрируеться для получения специфических глобальных событий приложения.

Вопрос? как я понял моего собственного приложения. А мне нужен IE!
httpApplication - это класс моего приложения?

Mymik, помоги мне пожалуйста, я на хрен запутался, сил нет!!
Объясни мне как для БЛОНДИНКИ!!

HELP! need HELP! РЯТУЙТЕ! 

С Уважением, и надеждой на помощь NET_or_not_NET

P.S.
книга "asp.net 2.0 c примерами на с# 2005 для проф" издат. вильямс (Апресс - ориг), авторы Мак-Дональд, Шпушта
PM MAIL   Вверх
SpaceSpace
Дата 16.5.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 366
Регистрация: 10.4.2007
Где: Самара

Репутация: 3
Всего: 10



NET_or_not_NET

я быть может выскажу только свое мнение, но мне кажется, что основные направления работы были уже предложены  by Mymik разбирайся

Используя объектную модель ASP.NET ты можешь подключиться ко всем стадиям обработки HTML страницы, выводимой броузером.
Можешь даже при обнаружении подозрений на плохие страницы выводить предупреждение и вообще не давать ей мозолить глаза шефу.
Главная засада не в том как создать и подключить обработчик, а как ты будешь распознавать мат и не мат, порно не порно.
С тексом еще куда ни шло, но
АИ свой напешь для 
распознавание на загружаемых картинках голого тела? smile 
а если мат в картинках?
а если новости плохие, самолет упал, и шефу не понравиться?

Программист может все smile 
Что же тебя не устраивает?


--------------------
Репутация - самое ценное, что есть у человека. Зарабатывают годы, теряют за мгновение.
70-565
MCPD Enterprise 3.5 
PM MAIL   Вверх
NET_or_not_NET
Дата 16.5.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: нет
Всего: 1



SpaceSpace, меня все устраивает!
Я просто пока не могу понять, что есть....
Цитата

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

Вот поэтому прошу.... как для БЛОНДИНКИ!


P.S.
Цитата

а если мат в картинках?

Это Ты круто!!  smile 
PM MAIL   Вверх
Mymik
Дата 16.5.2007, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



Стой. А у меня вопрос такой возник. Т.е. ты хочешь написать фильтр запросов ??? ну имеет ввиду. допустим ввел в своем браузере адрес какого-нибудь порнографического сайта и меня пнули оттуда, типа низзя такое смотреть тебе на рабочем месте. Так ??? Тогда тебе нужно поднимать Proxy на сервере и пускать интернет через него. Исключительно через него
А если тебе нужно фильтровать данные, что пришли на твое сайт. Или просто хранятся где-то во вспомогательных адресах. Тогда я описать вверху решение как это реализовать.
Тебе нужно переопределить Response.Filter.

Добавлено через 2 минуты и 12 секунд


Цитата(NET_or_not_NET @  16.5.2007,  11:35 Найти цитируемый пост)
P.S.
Цитата

а если мат в картинках?

Это Ты круто!!  smile 

А что. Некоторые ж пишут e-mail картинкой... раньше помогала от ботов собирающих мыло для спама... сейчас не знаю :о)


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
arilou
Дата 17.5.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



NET_or_not_NET, у тебя два пути:

1) Написать add-in для Internet Explorer, который будет получать от браузера IHTMLDocument, а ты будешь делать с ним все, что заблагорассудится твоему шефу. Материалы:
  а) Extending Explorer with Band Objects using .NET and Windows Forms
  б) Automating Internet Explorer

2) Написать свой прокси-сервер и настроить IE твоего шефа на него. Тут будет посложнее, но тоже реализуемо. В качестве основы можно взять http://www.mentalis.org/soft/projects/proxy/

За тебя никто программу не напишет, а будут конкретные вопросы - обращайся на форуме (и кстати, к ASP.NET твой вопрос не имеет отношения  smile  ).


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
NET_or_not_NET
Дата 17.5.2007, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.1.2007

Репутация: нет
Всего: 1



Доброго времени суток!!!!

Mymik, SpaceSpace, arilou спасибо ВАМ огромное,
 очень рад что на данном форуме есть добрые люди!! 
Я решил, что мне просто необходимо получить базовые знания WEB, поэтому накуплю книг - буду изучать мат часть!

Последний вопрос:  столкнулся с тем что, получив страницу из IE, методом aad-in описсаным arilou. 
Но когда я начал искать в нем ссылку на XXX сайт, я её не нашел! (хотя на странице котороя отопражаеться в IE она есть). 
Сохранил страничку на винт - запускаю с винта... таже история ссылки уже на страничке нет, она что спрятанна или динамич. создаеться? Где я могу про это прочитать? Как мне её удалить?

Тему закрою. Почетаю немного мат.часть и догда с конкретными вопросами, ВЕРНУСЬ!
Еще раз ВСЕ ОГРОМНОЕ С П А С И Б О !!!

P.S.
Куплю себе футболку и закажу что-бы на ней написали: "ДОБРЫЕ ЛЮДИ ЕСТЬ! доказанно Vingrad", а внизу так в разброс ники всех
кто мне помог! Cool!
Еще, Еще, Еще и Еще раз ВСЕ ОГРОМНОЕ С П А С И Б О !!!
И если можно ответте пожалуйста на вопрос про ссылку!
С Уважением NET_or_not_NET

arilou а куда в следующий раз задавать такой вопрос?

Это сообщение отредактировал(а) NET_or_not_NET - 17.5.2007, 17:42
PM MAIL   Вверх
Mymik
Дата 17.5.2007, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 50
Всего: 78



NET_or_not_NET, ссылки могут подкачиваться либо через iframe либо с помощью AJAX. Либо генерироваться с помощью JS. В принципе AJAX это частность JS.

Добавлено через 3 минуты
Цитата(NET_or_not_NET @  17.5.2007,  14:24 Найти цитируемый пост)
arilou а куда в следующий раз задавать такой вопрос?

это больше в "Общие вопросы по .NET и C#"


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.