Avatar billede _cyberdude_ Nybegynder
15. marts 2008 - 18:37 Der er 10 kommentarer og
1 løsning

Webbrowser uden billeder

Hej eksperter
Jeg vil høre om der er nogen der ved om det er muligt og hvordan man kan få et Webbrowser object til ikke at hente billeder.
Jeg vil gerne kunne tilgå en hjemmeside med mit Webbrowser object, når siden tilgås vil jeg gerne have at webbrowseren ikke henter billeder på siden.. Altså det er ikke nok ikke at vise dem, den skal hindres i at hente billederne.

I for sig skal dette bruges til at hente sourcen ned fra en side.
Hvilket jeg godt ved normalt kan gøres med en WebResponse.
Dette virker dog også på de fleste sider. Men nogle sider virker det som om WebResponse ikke virker, den får ikke hele siden med.
Umiddelbart vil jeg skyde på, at det er fordi siden jeg prøver at tilgå, bruger AJAX og derved dynamisk opdatere siden. Siden jeg tilgår er dog "fast", men hvis jeg henter sourcen via WebResponse får jeg kun lidt af siden, resten kommer åbentbart efterfølgende via AJAX. Bruger jeg en WebBrowser object til at tilgå hjemmesiden og henter sourcen fra den, får jeg hele sourcen. Der er dog billeder på denne side, som derved også bliver hentet ned, hvilket er overflødigt da billederne ikke skal bruges og det er vel spild af resourcer og båndbredde fra både min side og hjemmesiden.
Så hvis nogen har en anden løsning end WebBrowser object, som kan håndtere, at noget data fra siden, først kommer meget kort tid, efter ville det være optimalt...

Håber nogen kan hjælpe. Har søgt google, men syntes ikke jeg kan finde noget..
Avatar billede Slettet bruger
15. marts 2008 - 19:34 #1
Med Linux kan du gøre det med browseren LYNX
Avatar billede Slettet bruger
15. marts 2008 - 19:35 #2
Avatar billede thesurfer Nybegynder
15. marts 2008 - 19:36 #3
helgec> Spørgeren spørger til en del af et udviklingsmiljø (VB.NET).. det er ikke et program han ønsker, men hjælp til at få en webbrowser-komponent (sikkert i Microsoft Visual Studio) til ikke at vise billeder..
Avatar billede _cyberdude_ Nybegynder
15. marts 2008 - 19:56 #4
helgec:
thesurfer har ret, det er lige netop hvad jeg søger. Men ellers tak for svaret :)...
Avatar billede kalp Novice
15. marts 2008 - 20:11 #5
Webbrowser kører, så vidt jeg ved med samme indstillinger, som din IE gør.
Det er nærmest en wrapper klasse hvis man kan sige det sådan.

men du kan vel google noget kode der skal til for, at tilføje en side til en internet zone med lave rettigheder.. som f.eks ikke downloade billeder!

på den måde kan du tilføje din side denne zone før du downloader den og efterfølgende fjerne den igen.

det er i hvertfald mit bud på en løsning af problemet.

og ellers må du jo hente hele siden ned.. du har alligevel hele kildekoden på den måde..

og hvis du vil af med alle referencer til billeder kan en regexp ordne det.
Avatar billede arne_v Ekspert
15. marts 2008 - 22:18 #6
Hvis du kan sætte den embeddede browser til at bruge en proxy server, så kunne du
sætte den til at bruge programmet selv som proxy server og deri sortere alle
billeder fra.
Avatar billede kalp Novice
16. marts 2008 - 01:48 #7
mit forslag med "zoner" virkede ikke.
men men.. det kan gøres ret nemt.
Følgende svarer præcis til det samme, som hvis du slå "vis billeder" fra i IE.
Om den henter billederne eller bare ikke viser dem skal jeg ikke kunne sige.
Det har jeg ikke testet.

Hvis du opretter en form og smider et webbrowser objekt på den, så kan du benytte denne kode, som jeg har lavet.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;

namespace SourceDownloader
{
    public partial class Form1 : Form
    {
        private RegistryKey key = null;
        public Form1()
        {
            InitializeComponent();
            load();
        }
        private void load()
        {
            key = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Internet Explorer\Main");
            key.SetValue("Display Inline Images", "false");
            webBrowser1.Navigate("http://www.eksperten.dk");   
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            key.SetValue("Display Inline Images", "true");
        }
    }
}
Avatar billede kalp Novice
16. marts 2008 - 01:49 #8
nu er der mange andre medier man kan slå fra også.. f.eks flash.
Det bliver ikke slået fra af min kode.

men du kan sikkert finde den nøgle der skal sættes til false under
Software\Microsoft\Internet Explorer\Main

i registry.
Avatar billede _cyberdude_ Nybegynder
16. marts 2008 - 01:55 #9
Har fundet løsningen, dog ikke den løsning jeg efterspurgte men bedre :P...
Det viser sig at hjemmesiden genere indholdet på baggrund af AcceptLanguage headeren, og uden den sat giver den åbentbart kun en halvt genereret side tilbage.
Så jeg satte acceptlanguage headeren til på min HttpWebRequest object og så virkede det... :)...
Vil gerne give point til kalp og/eller arne_v for jeres hjælp, hvis i vil have dem så læg lige et svar, ellers lukker jeg spgm. snart...
Tak for hjælpen.
Avatar billede _cyberdude_ Nybegynder
16. marts 2008 - 01:58 #10
Kalp:
Du har lige indsendt et svar imens jeg skrev. Som du kan se fandt jeg en løsning, men du skal have mange tak for at forsøge. Men din løsning kan måske bruges til noget andet en dag.. :)... Giver dig points for svar, og hvis arne_v føler han har brug for pointsne (selvom han vidst ikke ser ud til at mangle points ;) ) må han lige brokke sig, så skal jeg nok smide nogle til ham... :)... Lukker spgm.
Avatar billede arne_v Ekspert
16. marts 2008 - 02:07 #11
Kalp gav en komplet løsning, mens jeg kun gav en løs ide, så jeg synes at
det er helt fint at han fik points.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester