Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [c#] creazione di un client per download sorgenti html

    salve a tutti, sono alle prese con la creazione di un client c# che sia in grado di effettuare download di sorgenti html o cmq di ottenerne lo stream, allo stato attuale ho fatto ricorso all'oggetto System.net.WebClient, ma il webserver che detiene la pagina che mi interessa credo riconosca che il client non è un browser e mi restituisce un sorgente criptato, qualcuno ha qualche suggerimento?

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    La base è questa, il namespace dei metodi WebRequest, WebResponse e della classe statica HttpWebRequest stanno in System.net.
    codice:
    class Program
        {
            static void Main(string[] args)
            {
                //Richiesta http
                WebRequest request = HttpWebRequest.Create("http://www.google.it");
                WebResponse response = request.GetResponse();
    
                //Se la risposta non è una stringa html non vado avanti
                //Questo controllo lo puoi gestire come meglio credi
                string contentType = response.Headers[HttpResponseHeader.ContentType];
                if (contentType.Contains("text/html"))
                {
                    //Riversa la risposta http in uno stream
                    Stream stream = response.GetResponseStream();
    
                    //Leggo lo stream con un metodo adhoc
                    string htmlString = LeggiStreamHtml(stream);
    
                    //leggo gli indirizzi di posta elettronica e faccio partire lo spam... :)
                }
            }
    
            private static string LeggiStreamHtml(Stream stream)
            {
                StreamReader reader = new StreamReader(stream);
    
                StringBuilder sb = new StringBuilder();
                while (!reader.EndOfStream)
                        sb.Append(reader.ReadLine());
    
                return sb.ToString();
    
            }
        }

  3. #3
    niente spam stavolta, leggo (ci provo) l'elenco dei contenuti di un portale creo un webservice, ma al momento il portale non risponde neanche

  4. #4
    niente da fare, il sorgende che mi restituisce il portale è sempre criptato, forse capiscono che non è un browser a fare il request

  5. #5
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    strano in fondo si tratta di effettuare una richiesta get cosi come fanno i browser.
    Ho appena provato il codice con siti famosi come yahoo, facebook, wikipedia, msn... ritornano tutti html in chiaro. Il contentType della risposta è Text/Html?
    Se vai sul sito con il browser e fai Visualizza Sorgente l'html esce in chiaro?

  6. #6
    ad esempio prova www.gazzetta.it

  7. #7
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    html in chiaro.
    Al massimo in alcune parti di un sito i dati potrebbero venir caricati nel dom da javascript perciò non vengono visualizzati nell'html ma nel sito in questione tranne che per la roba in flash (i cui dati vengono inseriti con chiamate javascript) le informazioni sono tutte li (Classifiche, marcatori...).

  8. #8
    scusa gazzetta.it non l'avevo verificato ancora, sto sbattendo la testa su ondemand.mtv.it, veramente non capisco

  9. #9
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    ciao, ho provato ed effettivamente arriva una risposta compressa. Cosi la risolvi.
    codice:
    class Program
        {
            static void Main(string[] args)
            {
                //Richiesta http
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://ondemand.mtv.it/");
                request.AutomaticDecompression = DecompressionMethods.GZip;
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    
                //Se la risposta non è una stringa html non vado avanti
                //Questo controllo lo puoi gestire come meglio credi
                if (response.ContentType.Contains("text/html"))
                {
                    //Riversa la risposta http in uno stream
                    Stream stream = response.GetResponseStream();
    
                    //Leggo lo stream con un metodo adhoc
                    string htmlString = LeggiStreamHtml(stream);
                }
            }
    
            private static string LeggiStreamHtml(Stream stream)
            {
                StreamReader reader = new StreamReader(stream);
    
                StringBuilder sb = new StringBuilder();
                while (!reader.EndOfStream)
                    sb.Append(reader.ReadLine());
    
                return sb.ToString();
    
            }
        }

  10. #10
    abbiamo risolto contemporaneamente
    io ho risolto settando lo User-Agent del HttpWebRequest e la risposta è in chiaro, probabilmente il server capiva che non era un browser ad effettuare la richiesta
    ti ringrazio veramente tantissimo, la soluzione della decompressione mi è ugualmente utile, ho imparato una cosa in +!!!!

    sono in debito, alla prossima

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.