2010-01-27 6 views
3

Disons que j'obtiens le code source d'une page (par exemple http://example.com). Je veux maintenant écrire ce code source à un navigateur Web, en utilisant quelque chose comme:Spoofing de l'URL dans un WebBrowser

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

Maintenant, supposons que sur la page d'accueil Example.com, il y a une URL relative tels que:

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

Le WebBrowser tentera de le charger à partir de about:blank/logo.gif. Je veux dire au WebBrowser que "l'adresse actuelle" est http://example.com de sorte qu'il utilise http://example.com/logo.gif à la place.

Écrire directement dans la propriété Url du WebBrowser provoquera un Navigate(), qui se débarrassera de tout texte que j'ai écrit.

Je suis à la recherche d'une solution qui fonctionne pour d'autres éléments tels que les feuilles de style, javascript (par exemple <script language="text/javascript" src="myscript.js">), les liens, etc., et pas seulement les images.

Est-ce possible?

Répondre

5

Vous pouvez essayer d'insérer un élément <base> dans la tête: http://www.w3.org/TR/html4/struct/links.html#edef-BASE

Comment insérer la balise dépend de la langue que vous utilisez, mais vous devriez viser à obtenir l'étiquette de base directement après la <head> si que la source résultant lit comme suit:

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

Bien sûr, s'il y a déjà un élément <base> dans le document, vous devez supprimer cela.

3

Si vous essayez de changer l'URL de la barre d'adresse, le navigateur la parcourra, et vous ne pouvez rien y faire. Mais, dans votre code HTML, il est possible de "fausser" l'URL source de vos ressources, en utilisant <BASE> tag. Je pense que c'est le plus proche, vous pouvez aller.