cURL : en route vers le scrapping

cURL : une première étape pour tout black hat qui se respecte ! ;+)cURL est à l’origine une commande en ligne dont l’objet est de transférer les données à partir des protocoles de l’Internet et notamment à partir des adresses HTTP et HTTPS. C’est un outil qui sait se montrer extrêmement discret, lorsqu’il est couplé à  Tor, à la condition de glisser des en-têtes dans votre requête qui vous assimile à un navigateur.

Ma classe Curl écrite en PHP

J’ai sauvegardé la classe Curl sous le nom curl.class.php.

<?php
/*
 * https://www.php.net/manual/fr/book.curl.php
 * https://php.net/manual/fr/function.curl-setopt.php
*/
class Curl
{
    protected $ch;
    /*
     * Initialisation des paramètres
     */
    function __construct($url,$tor=false)
    {
        
        $this->ch = curl_init();
        $headers= [
            'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
            'Accept-Language: en-US;q=0.7,en;q=0.3'
        ];
        $options=[
            CURLOPT_HEADEROPT => CURLHEADER_UNIFIED,
            CURLOPT_HTTPHEADER => $headers,
            CURLOPT_HEADER => false,
            CURLOPT_URL => $url,
            CURLOPT_ENCODING => 'gzip,deflate',
            CURLOPT_AUTOREFERER => true, 
            CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_COOKIESESSION => true, 
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_PROTOCOLS => CURLPROTO_HTTPS,
            CURLOPT_SSL_VERIFYPEER => false, 
            CURLOPT_PROXY_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYSTATUS => false,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_2TLS,
            CURLOPT_CONNECTTIMEOUT => 15,
            CURLOPT_TIMEOUT => 15,
            CURLOPT_HTTPGET => true,
            CURLOPT_HTTP_CONTENT_DECODING => true,
            CURLOPT_TCP_FASTOPEN => true,
            CURLOPT_VERBOSE => false
        ];
        curl_setopt_array($this->ch,$options);
        /*
         * Prise en charge de Tor
         */
        if($tor)
        {
            curl_setopt($this->ch,CURLOPT_PROXY,'127.0.0.1:9050');
            curl_setopt($this->ch,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);
        }
    }
    /*
     * Récupération du contenu
     */
    public function get_content()
    {
        $response=false;
        $response=curl_exec($this->ch);
        $httpcode = curl_getinfo($this->ch, CURLINFO_HTTP_CODE);
        if($httpcode >= 400 and $httpcode < 200) 
        {
            $response=$httpcode;
        }
        return $response;
    }
    /*
     * Destructeur
     */
    function __destruct()
    {
       curl_close($this->ch); 
    }
}
?>

Exemple d’utilisation

J’ai testé l’utilisation de cette classe curl.class.php avec Tor sous Windows. L’objectif est de ne pas se faire repérer.

<?php
/*
* Test Classe Curl
*/
require_once 'curl.class.php';
$url='https://www.lemonde.fr';
/*
* Le paramètre true permet d'activer Tor, installé sur la machine.
*/
$curl=new Curl($url,true);
$content=$curl->get_content();
unset($curl);
echo $content;
?>

Téléchargement de la classe

Vous pouvez télécharger ce code à partir de ce lien. Elle est aussi sur Pastebin.

Php /