【问题标题】:Modifying HTTP request and responses with a Browser Helper Object使用 Browser Helper 对象修改 HTTP 请求和响应
【发布时间】:2009-05-22 15:14:02
【问题描述】:

我想使用 Internet Explorer 浏览器帮助程序对象修改 HTTP 请求标头。 我基本上需要为每个请求更改一些标头,然后在响应返回浏览器之前对其进行修改。

我尝试使用 OnNavigate2 事件,但这些事件甚至无法让您访问所有标题。

我尝试制作一个异步可插入协议,但我真的无法访问默认的 HTTP 实现,也无法覆盖默认的 HTTP 请求。

你知道这应该怎么做吗? 我更喜欢 C#,但如有必要可以使用 C++。

【问题讨论】:

  • 在更高层次上解释你的总体目标会很有帮助。
  • 只要勾搭 WinInet 就可以了。
  • 嗨,你解决了这个问题还是我在同样的情况下仍然有问题

标签: windows internet-explorer http bho


【解决方案1】:

这可以通过 URL monikers 来完成。 有一个叫 Igor Tandetik 的人实现了类似的东西。 您可以在以下位置找到代码链接:microsoft.public.inetsdk.programming google group - 只需查找 PassthruAPP。 (我会发布一个链接,但显然不允许新用户这样做)

虽然它不直接支持修改响应正文。 您必须在 IInternetProtocolImpl::Read 方法中插入一个钩子。

【讨论】:

  • Google 工具栏使用 APP-wrapper 方法。 Microsoft 特别建议开发人员不要这样做,因为它会导致稳定性、性能和可靠性问题。如果不止一个插件(例如 Gears 和其他任何插件)这样做,结果几乎总是崩溃或损坏的插件。
【解决方案2】:

最简单的方法是使用 http 代理来拦截 Fiddler 所做的一切。

查看Fiddler PowerToy (Part 1)的描述。

【讨论】:

  • 这不是我想为自己做的事情,而是我想安装在用户计算机上的事情。我不想使用 HTTP 代理,因为它需要设置一个代理,而他可能已经有了一个。我确实想充当代理,但不想注册为 the 代理。我知道我想做的事情必须是可能的,因为 Google 使用 Google 工具栏中的 google.com/support/toolbar/bin/…> SDCH 功能
  • 我猜我使用链接的方式有问题。我的意思是:google.com/support/toolbar/bin/…
【解决方案3】:

您似乎只能通过使用 BeforeNavigate2 事件的 headers 参数来修改 CUSTOM 标头。并非所有标题都可以访问。这是一种尝试将 BHO 作为特洛伊木马的可能性降到最低的方法。请改用 HTTP 代理。

【讨论】:

  • 事实并非如此:>
  • 您无权访问发送的标头,但您可以添加标头并替换现有标头。例如,如果您指定 User-Agent: foo,这将覆盖常规的 User-Agent 标头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多