Par où commencer pour créer un robot ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Par où commencer pour créer un robot ?

par bravegars » 29 mai 2007, 22:29

Salut, et merci encore pour vos commentaires.

Je vais vous expliquer un peu le projet. Je voudrais créer un annuaire d'un nouveau genre, qui établirait un classement suivant le nombre de liens pointant vers l'annuaire.

Donc, il faudrait que mon robot soit capable de retrouver tous les liens pointant vers mon annuaire.
Bien entendu il n'ira scanner que les sites qui se seront inscrits dans mon annuaire, ce qui réduit quand même pas mal sa tâche. :)

Merci pour ton code Hubert, je vais m'en servir et vais l'ajouter à tous les exemples que j'ai déjà récoltés de ci de la sur le net.

Re: Par où commencer pour créer un robot ?

par Hubert Roksor » 28 mai 2007, 23:41

Que me conseillez-vous de faire
Je te conseille d'y réfléchir à huit fois :P

Il y a un gros potentiel de problèmes divers liés à ce genre de système. Je pourrais par exemple bombarder ton site de liens vers un autre site et ton serveur me servirait alors d'outil à DoS'er ou tout un tas d'autres abus que certains ne manqueront pas de trouver (même par hasard).

J'ai voulu tester la méthode HEAD en PHP et je me suis laissé emporter, je te recopie une routine qui pourrait t'être utile :
error_reporting(E_ERROR);

$status = array();
$urls = array(
	'http://localhost/lien1.php',
	'http://localhost/lien2.php'
);

$context = stream_context_create(array(
	'http'	=>	array(
		'method'	=>	'HEAD'
	)
));

foreach ($urls as $k => $url)
{
	// $http_response_header est une variable magique qui apparait quand on ouvre un flux HTTP
	unset($http_response_header);

	$fp = fopen($url, 'r', false, $context);

	if ($fp)
	{
		// Ça a marché, on présume une réponse 200
		$code = 200;
		fclose($fp);
	}
	elseif (isset($http_response_header))
	{
		// Voir http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
		if (preg_match('#^HTTP.* ([1-5][0-9][0-9])#', $http_response_header[0], $m))
		{
			$code = $m[1];
		}
		else
		{
			// Ne devrait pas arriver
			$code = 'wtf';
		}
	}
	else
	{
		// Timeout?
		$code = 500;
	}

	$status[$code][] = $url;
}
Clique sur les fonctions que tu ne connais pas, le manuel est très bien à ce sujet. Inspire-t'en si tu le souhaites, mais je n'ai pas prévu de faire du support dessus donc j'espère que tu t'en sortiras :P

par iclo » 28 mai 2007, 22:28

Oui, mais tout dépend du volume de données à récupérer, mais si tu dois "scanner" un grand nombre de pages web, php risque vite d'être dépassé.
Essaie de nous donner plus de détails.

par bravegars » 28 mai 2007, 22:17

Merci pour ta réponse. Je vais l'écrire en php car je n'y connais rien en C et java. Je n'ai pas besoin qu'il soit connecter en permanence. En fait il se chargera de récolter des données tous les 15 jours, qui seront ensuite enregistrées dans une base de données.

par Sékiltoyai » 22 mai 2007, 17:17

Je te conseille déjà de ne pas le faire en PHP.
Ce genre de choses, ce sont des services, donc des programmes qui restent exécutés en permamence. Personnellement je l'aurais fait en JAVA ou en C...

Par où commencer pour créer un robot ?

par bravegars » 22 mai 2007, 15:05

Salut,

Je voudrais créer un robot, qui irait repérer la présence d'un lien retour. Que me conseillez-vous de faire ? Connaissez-vous des sites qui traitent de ce sujet ? Que me conseillez-vous de faire pour commencer ? Merci. :)