要求是实现一个HTTP/HTTPS请求过滤器,要求根据关键字匹配请求URL,如果命中,则修改URL至某个指定的网址。另外还需要修改请求头中的User-Agent加上自己的标识。要求尽量不通过BHO实现,因为BHO容易被用户禁用,并且有些IE核心的浏览器是不加载BHO的。所以想通过替换Asynchronous Pluggable Protocol的HTTP/HTTPS Handler来实现全局过滤(所有使用URLMON.DLL的程序或者浏览器),但是微软好像对默认的APP Handler有保护,无法做到替换。参考资料:http://support.microsoft.com/kb/303740。
这个问题已经困扰我一周了,查了N多资料也弄不清如何下手。
如何替换或者HOOK HTTP/HTTPS Handler呢?或者有没有其它的方法可以做到过滤?烦请各位大牛指点迷津,有Sample Code最好了,在这里先行谢过了。
111222曾经写过一篇文章是通过BHO+IE的IinternetProtocolRoot接口来做到过滤,就是下面的这篇文章:
http://blog.csdn.net/111222/archive/2002/02/09/7255.aspx
文章中的代码下载连接已经失效了,哪位朋友有这个代码能不能给我发一份?非常感谢,。另外,namespace handler能不能做到?namespace handler的概念还不是很清楚。

解决方案 »

  1.   

    只要进入了IE(或其他IE内核的浏览器)的进程空间,想实现什么都可以,BHO或者永久MimeFilter只是一种合法进入IE进程空间的手段而已。如果因为用户禁止或者不支持BHO的浏览器而导致不起作用,就考虑其它不合法方式,例如远程注入、HOOK浏览器窗口过程等等,但这些方式又容易被安全软件禁止。最合法又最有效的方式还是做驱动。
      

  2.   

    http://topic.csdn.net/t/20050601/18/4052185.html
      

  3.   

    to jameshooo:我觉得从驱动入手,即使抛弃写驱动本身的难度,处理分片什么的,麻烦还是不小,更何况HTTPS从驱动层无法搞定的。MIME FILTER主要是过滤响应吧。其它远程注入什么的感觉在这里不太合适。
    TO  oyljerry :那个帖子还是没有解决我的问题。
      

  4.   

    IE异步插件只是对协议的替换, 如你所讲默认的http/https是不能替换掉的.
      

  5.   

    http://blog.csdn.net/lion_wing/archive/2006/06/27/839134.aspx
      

  6.   

    还有其他方法,利用 api hook ,hook wininet 的函数吧。
      

  7.   

    风老大,你给的BLOG文章我已经看过了,无法解决我的问题,你那文章是过滤响应内容,我问题的要求是过滤请求URL。
    aa3000的方法倒是可以一试,就怕主动防御之类会报警。
      

  8.   

    我的例子注册的FILTER类型是“text/html”,如果要过过滤http/https你注册应该注册成“http”,你可以查看MSDN,看看FILTER的类型有哪些。