使用浏览器辅助对象修改HTTP请求和响应

4
我想使用Internet Explorer的Browser Helper Object来修改HTTP请求头。我基本上需要在每个请求中更改一些头,并在返回给浏览器之前修改响应。
我尝试使用OnNavigate2事件,但这些事件并不能让您访问所有标头。
我尝试创建异步可插入协议,但是那样我实际上无法访问默认的HTTP实现,并且无法覆盖默认的HTTP请求。
您有任何想法吗?我更喜欢使用C#,但如果必要,也可以使用C ++。

在更高的层面上解释您的总体目标会很有帮助。 - EricLaw
只需钩取WinInet并解决问题。 - John Lewis
你好,你解决了这个问题还是仍然存在?因为我也处于同样的情境。 - yo2011
3个回答

3

可以使用URL monikers来完成。 有一个名叫Igor Tandetik的人实现了类似的东西。 您可以在microsoft.public.inetsdk.programming google group中找到代码链接-只需搜索PassthruAPP即可。 (我本来想发链接的,但显然不允许新用户这样做)

但它不直接支持修改响应主体。 您需要将挂钩插入到IInternetProtocolImpl :: Read方法中。


1
Google工具栏采用APP-wrapper方法。微软明确建议开发人员不要这样做,因为它会导致稳定性、性能和可靠性问题。如果有多个插件都这样做(例如Gears和其他任何东西),结果几乎总是崩溃或损坏插件。 - EricLaw

0

这不是我想为自己做的事情,而是我希望能够安装在用户的计算机上。 我不想使用HTTP代理,因为这需要设置代理,而他可能已经有一个。我确实想充当代理,但不想被注册为<b>the</b>代理。 我知道我想做的必须是可能的,因为Google在Google工具栏中使用<a href=http://www.google.com/support/toolbar/bin/answer.py?hl=en&answer=113087> SDCH</a>功能。 - jenia
我猜我使用链接的方式有问题。 我的意思是: http://www.google.com/support/toolbar/bin/answer.py?hl=en&answer=113087 - jenia

0

看起来你只能通过使用BeforeNavigate2事件的headers参数来修改自定义标头。并非所有标头都是可访问的。这是一种尝试最小化BHO作为特洛伊木马的潜力的方法。请改用HTTP代理。


这实际上并不是真的:“<<这是一种试图最小化BHO充当特洛伊木马的潜力的方式。>>” - EricLaw
1
你无法访问已发送的标头,但可以添加标头并替换现有标头。例如,如果您指定User-Agent:foo,则会覆盖常规User-Agent标头。 - Julien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接