在 WebBrowser 中欺骗 URL

Posted

技术标签:

【中文标题】在 WebBrowser 中欺骗 URL【英文标题】:Spoofing the URL in a WebBrowser 【发布时间】:2011-01-09 20:40:06 【问题描述】:

假设我获得了某个页面的源代码(例如http://example.com)。我现在想将此源代码写入 WebBrowser,使用类似:

myWebBrowser.Navigate("about:blank");
myWebBrowser.Document.Write(sourceCode);

现在,假设在 Example.com 的主页上,有一个相对 URL,例如:

<img src="/logo.gif" />

WebBrowser 将尝试从about:blank/logo.gif 加载它。我想告诉浏览器“当前地址”是http://example.com,以便它使用http://example.com/logo.gif

直接写入 WebBrowser 的 Url 属性将导致 Navigate(),它会删除我写的任何文本。

我正在寻找一种适用于其他元素的解决方案,例如样式表、javascript(例如&lt;script language="text/javascript" src="myscript.js"&gt;)、链接等,而不仅仅是图像。

这可能吗?

【问题讨论】:

【参考方案1】:

您可以在代码中注入&lt;BASE&gt; 元素并声明基数为http://example.com

【讨论】:

【参考方案2】:

如果您尝试更改地址栏 URL,浏览器将通过该 URL 导航,而您对此无能为力。

但是,在您的 html 中,可以使用 &lt;BASE&gt; tag 为您的资源“伪造”源 URL。

我认为这是你可以去的最接近的地方。

【讨论】:

【参考方案3】:

您可以尝试在头部插入一个&lt;base&gt; 元素: http://www.w3.org/TR/html4/struct/links.html#edef-BASE

如何插入标签取决于您使用的语言,但您应该直接在 &lt;head&gt; 之后获取基本标签,以便生成的源代码如下:

<head><base href="http://example.com"/>

当然,如果文档中已经有一个&lt;base&gt; 元素,你应该删除它。

【讨论】:

以上是关于在 WebBrowser 中欺骗 URL的主要内容,如果未能解决你的问题,请参考以下文章

Duilib中使用webbrowser

如何让 JavaScript 在 WebBrowser 控件中运行?

如何在 C# 中更新 WebBrowser 控件中的 DOM 内容?

HTML 'img' 标签在 WebBrowser 控件中不起作用

在 WebBrowser 控件中调试 HTML

WinForm中WebBrowser的使用