2009-06-27 3 views
4

Я изучаю способы разработки расширения для IE6 +, которое позволит обрабатывать пользовательские типы MIME.IE MIME/фильтрация содержимого

В качестве примера я должен иметь возможность взять документ с настраиваемым типом MIME, который возвращается сервером, выполнить некоторую обработку на нем, а затем изменить тип MIME на то, что может обрабатывать IE, таких как text/html или image/jpeg.

Я знаком с фильтрами MIME с urlmon, но у них огромная слабость; они вызываются только для документа верхнего уровня, а не для какого-либо дополнительного контента страницы, такого как изображения и тому подобное.

Единственный способ, с помощью которого я могу думать, что это будет работать, - это связать обработчики протокола HTTP/S с помощью патчей vtable/iat, аналогично тому, как работает Google Gears, чтобы перехватить заголовки ответов и изменить заголовков и тела ответа при получении документа с указанным типом MIME.

Мне интересно, есть ли у кого-нибудь какие-либо хорошие идеи о том, как это можно сделать в менее хакерском/назойливом способе.

Редактировать: Просто подумал, что буду следить за этим и упомянуть, что я пошел с патчем vtable в обработчики протокола HTTP/S, и он работал намного лучше, чем я ожидал. Если кто-то еще хочет сделать что-то подобное, я настоятельно рекомендую взглянуть на класс HttpHandlerPatch в Google Gears для некоторого вдохновения.

+0

Привет, Я пишу расширение для IE, которое блокирует рекламные объявления. Мне нужны аналогичные функции, такие как вы - фильтрация MIME/контента. К сожалению, у меня нет большого опыта программирования на Windows C++. Не могли бы вы рассказать мне больше о «vtable и iat patching». Это то же самое, что «API-соединение»? Потому что я не могу много узнать о «vtable patching» в google. У вас есть хорошие ресурсы по этой теме и как вы сделали эту фильтрацию контента? Я смотрел класс HttpHandlerPatch этого механизма, но сейчас это сложно для меня. –

+1

Привет. То, о чем я говорил, довольно сложно. В конечном итоге я закончил работу с некоторыми API-технологиями для привязки к API WinInet, поскольку он был более чистым и дал мне больше контроля. Уметь делать то, что вы хотите с помощью этого метода, все еще не совсем просто, но это не так уж плохо. Вы можете заглянуть в проект Detours от Microsoft Research для библиотеки API-соединений, которая должна работать для этого, хотя я закончил свою собственную (хотя и менее гибкую) версию из-за крутого ценового индекса ($ 10 000 +) для коммерческой версии Detours , – Gerald

ответ

0

Несколько лет назад я написал такие расширения, панели инструментов BHO, IE и т. Д. На основе книги под названием «Программирование оболочки» в VB6. Книга, которую я использовал, такова: http://oreilly.com/catalog/9781565926707/ В этой книге рассказывается, как подключать и помещать сообщения в IE. Я написал своего рода экранный скребок (стиль пост-рендеринга не похож на паука, который не выполняет JavaScript сначала). Он был основан на IE5, но расширения все еще работают с IE6. У меня, вероятно, все еще есть источник VB6. Я не предлагаю обновить его до .Net для вас.

PS. Обзор на этой странице Haroeris Astrum по мне :)

Смежные вопросы