cURL : en route vers le scrapping
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.