在 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(例如<script language="text/javascript" src="myscript.js">
)、链接等,而不仅仅是图像。
这可能吗?
【问题讨论】:
【参考方案1】:您可以在代码中注入<BASE>
元素并声明基数为http://example.com
【讨论】:
【参考方案2】:如果您尝试更改地址栏 URL,浏览器将通过该 URL 导航,而您对此无能为力。
但是,在您的 html 中,可以使用 <BASE>
tag 为您的资源“伪造”源 URL。
我认为这是你可以去的最接近的地方。
【讨论】:
【参考方案3】:您可以尝试在头部插入一个<base>
元素:
http://www.w3.org/TR/html4/struct/links.html#edef-BASE
如何插入标签取决于您使用的语言,但您应该直接在 <head>
之后获取基本标签,以便生成的源代码如下:
<head><base href="http://example.com"/>
当然,如果文档中已经有一个<base>
元素,你应该删除它。
【讨论】:
以上是关于在 WebBrowser 中欺骗 URL的主要内容,如果未能解决你的问题,请参考以下文章
如何让 JavaScript 在 WebBrowser 控件中运行?
如何在 C# 中更新 WebBrowser 控件中的 DOM 内容?