Visualizzazione risultati 1 fino 2 di 2

Discussione: problema chiamata https con curl

  1. #1
    Guest

    Predefinito problema chiamata https con curl

    Ciao ragazzi,

    devo fare una chiamata https da uno script php, ho trovato questo codice che funziona se lo uso per fare una chiamata http ma non per https. Devo aggiungere qualcosa per una chiamata di questo tipo? Grazie.

    Codice:
    <?php
    
    	function getRandomUserAgent ( ) {
    	$someUA = array (
    		"Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1b1) Gecko/20081007 Firefox/3.1b1",
    		"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.0",
    		"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.18 Safari/525.19",
    		"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13",
    		"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)",
    		"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.40607)",
    		"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.1.4322)",
    		"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 5.1; .NET CLR 1.0.3705; Media Center PC 3.1; Alexa Toolbar; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",
    		"Mozilla/45.0 (compatible; MSIE 6.0; Windows NT 5.1)",
    		"Mozilla/4.08 (compatible; MSIE 6.0; Windows NT 5.1)",
    		"Mozilla/4.01 (compatible; MSIE 6.0; Windows NT 5.1)");
    	    srand((double)microtime()*1000000);
    	    return $someUA[rand(0,count($someUA)-1)];
    	}
    
    	function getContent ($url) {
    	 
    	    // Crea la risorsa CURL
    	    $ch = curl_init();
    	 
    	    // Imposta l'URL e altre opzioni
    	    curl_setopt($ch, CURLOPT_URL, $url);
    	    curl_setopt($ch, CURLOPT_HEADER, 0);
    	    curl_setopt($ch, CURLOPT_USERAGENT, getRandomUserAgent());
    	    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    	    // Scarica l'URL e lo passa al browser
    	    $output = curl_exec($ch);
    	    $info = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    	    // Chiude la risorsa curl
    	    curl_close($ch);
    	    if ($output === false || $info != 200) {
    		 $output = null;
    	    }
    	    return $output;
    	}
    	
    	$res = getContent("https://twitter.com/"); //provo a fare una chiamata https
    	echo $res;
    ?>

  2. #2
    Guest

    Predefinito

    Ho risolto, il problema è il certificato https di curl che a quanto ho letto è troppo vecchio e va sostituito con uno scaricato da qui:

    http://curl.haxx.se/ca/cacert.pem

    bisogna copiare il file nel proprio spazio web e aggiungere questa riga al codice che ho postato sopra:

    curl_setopt ($ch, CURLOPT_CAINFO, dirname(__FILE__)."/cacert.pem");

    Finora l'ho provato in locale, presto proverò se funziona su altervista

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •