Utiliser TOR pour vos scripts PHP

2015mai26

Vous réaliser régulièrement des parser pour récupérer automatiquement des données sur différents sites internet, et en conséquence êtes confrontés au problème d’adresse bannie par le site analysé, cette méthode est faite pour vous !

En effet, pour maximiser vos chances de résultat, vous pouvez grâce à TOR, anonymiser vos requêtes et ainsi déjouer le processus de bannissement !

Installer TOR sous Linux Debian

Pour installer TOR, rien de plus facile :

apt-get install tor

Configurez l’accès console de TOR

Pour configurer l’accès console sur le port 9051 (utile dans la dernière partie de ce tuto), commencez par créer votre mot de passe avec la commande suivante :

tor --hash-password MON_MOT_DE_PASSE

Vous obtenez alors une chaine hexadécimale du style 18:AB69BDEF…, copiez là pour modifier la configuration de TOR

Ouvrez alors le fichier /etc/tor/torrc et modifier les éléments suivants :

  • décommentez la ligne « ControlPort 9051 »
  • décommentez la ligne « HashedControlPassword »
  • sur la ligne « HashedControlPassword », remplacez le hashage par celui que vous avez généré à l’étape précédente
  • redémarrez TOR : /etc/init.d/tor restart

Modifiez votre parser PHP

Maintenant que TOR est installé, vous pouvez modifier votre parser pour utilisez TOR en proxy de sortie. Pour cela, si vous utilisez l’extension curl, procédez comme ceci :

<?php
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, "http://www.monip.org");
 curl_setopt($ch, CURLOPT_PROXY, "127.0.0.1:9050");
 curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($ch, CURLOPT_VERBOSE, 0);
 $reponse = curl_exec($ch);
 var_dump($reponse);
?>

Vous devriez alors voir apparaître la page http://www.monip.org qui affiche une adresse différente de celle de votre serveur !

Renouveller l’adresse de sortie TOR

Vous pouvez également grâce à la console renouveler régulièrement l’adresse de sortie TOR grâce au script suivant :

<?php
 $ip = '127.0.0.1';
 $port = '9051';
 $auth = 'MON_MOT_DE_PASSE'; //votre mot de passe défini lors du calcul du hash
 $command = 'signal NEWNYM';
 $fp = fsockopen($ip,$port,$error_number,$err_string,10);
 if(!$fp) { 
  echo "ERROR: $error_number : $err_string";
  return false;
 } else {
  fwrite($fp,"AUTHENTICATE \"".$auth."\"\n");
  $received = fread($fp,512);
  fwrite($fp,$command."\n");
  $received = fread($fp,512);
 }
 fclose($fp);
?>

Obliger TOR à utiliser des adresses de sortie géolocalisées

Lors de la configuration de TOR, vous pouvez également l’obliger à utiliser des adresses géolocalisées en France par exemple. Pour cela ajoutez les lignes suivantes à la fin de votre fichier /etc/tor/torrc :

StrictNodes 1
ExitNodes {fr}

A partir ce moment (et une fois TOR relancé), vos adresses de sortie seront toujours géolocalisées en France…

Commentaires

 Clément Levallois
 18000 Bourges
 SIRET : 81783887300021