Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di sacara
    Registrato dal
    Jun 2005
    Messaggi
    21

    curl_init ed errore 403

    Ciao,
    vorrei elaborare una stringa presente su una pagina web e sto facendo qualche prova.
    Ho letto che è possibile utilizzare le librerie CURL .
    Ho usato il seguente codice:

    codice:
    $url = "http://www.google.it/"; // Sito da cui ricevere il codice 
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $res = curl_exec($ch); // $res contiene il codice HTML del sito curl_close($ch); 
    echo "Il codice HTML di ".$url." è: <hr />".htmlspecialchars($res);
    usando come l'url : google.it (o altri) lo script funziona, ma se metto http://www.meteoam.it/
    ho il seguente errore:

    codice:
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>403 Forbidden</title> </head><body> <h1>Forbidden</h1> 
    
    You don't have permission to access / on this server.</p> 
    
    Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.</p> <hr> <address>Apache/2.2.3 (Linux/SUSE) Server at www.meteoam.it Port 80</address> </body></html>
    sapete spiegarmi il perchè? e se esiste un modo per evitarlo
    grazie!

  2. #2
    molto probabilmente hanno fatto in maniera tale da bloccare spiders e screen scrapers per evitare che vengano raccolti automaticamente i dati metereologici

    prova a "simulare" la richiesta di un normale browser aggiungendo qualche riga nell'header della richiesta, ovvero tipo

    GET / HTTP/1.1
    Host: www.meteoam.it
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-us,en;q=0.5
    Accept-Encoding: gzip, deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Connection: keep-alive

    http://it.php.net/manual/en/function.curl-setopt.php

  3. #3
    Utente di HTML.it L'avatar di sacara
    Registrato dal
    Jun 2005
    Messaggi
    21
    avevi ragione, ho utilizzato questo codice e funziona!
    codice:
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; 
    $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; 
    $header[] = "Cache-Control: max-age=0"; $header[] = "Connection: keep-alive"; 
    $header[] = "Keep-Alive: 300"; 
    $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
    $header[] = "Accept-Language: en-us,en;q=0.5"; 
    $header[] = "Pragma: ";
     // browsers keep this blank. 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)'); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com'); 
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); 
    curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    
    $res = curl_exec($ch); // $res contiene il codice HTML del sito curl_close($ch);
    grazie

  4. #4
    perfetto, l'unica cosa è che non conviene fingersi Googlebot, se ti sgamano e ti bannano l'ip sei punto a capo

  5. #5
    Utente di HTML.it L'avatar di sacara
    Registrato dal
    Jun 2005
    Messaggi
    21
    purtroppo senza la riga

    curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');

    non funziona , mi nega l'accesso.

  6. #6
    Originariamente inviato da sacara
    purtroppo senza la riga

    curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');

    non funziona , mi nega l'accesso.
    non dico di toglierla, ma bensi di sostituire a Googlebot/2.1 ecc ecc la stringa di uno user agent tipo firefox o safari o chrome

  7. #7
    Utente di HTML.it L'avatar di sacara
    Registrato dal
    Jun 2005
    Messaggi
    21
    ok, funziona!

    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)');

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.