Un petit script php de test de positionnement Google

WRInaute occasionnel
Je viens de développer un petit script de positionnement Google :
http://judith.nfrance.com/~ju37835/
(lien réactivé par Dj Apx :wink:)

Il vous donne la position de votre site sur plusieurs DataCenters (les datacenters utilisés sont ceux de WRI https://www.webrankinfo.com/outils/googl ... dance3.php )

... mais la petite nouveauté par rapport aux scripts habituels c'est que vous pouvez même utiliser le caractère "*" dans l'url :p

Dans le champ "URL à trouver", vous pouvez donc taper par exemple :
-http://*.webrankinfo.com
-https://www.webrankinfo.com/forum/*
-https://www.webrankinfo.com/*/*


PS : Vous n'êtes pas obligé de taper les "http://".
 
WRInaute occasionnel
Excellent ;)
Je suis sur que j'avais vu un script dans ce genre il y a quelques temps mais qui ne fonctionnais pas aussi bien.

Bravo et merci
 
WRInaute occasionnel
Merci pour vos messages ;)

e-kiwi => chez moi ca marche :?
... je peux même te dévoiler un scoop : tu es 1er sur tous les datas sur la requête "e-kiwi" :D
 
WRInaute impliqué
SuperPJ a dit:
Merci pour vos messages ;)

e-kiwi => chez moi ca marche :?
... je peux même te dévoiler un scoop : tu es 1er sur tous les datas sur la requête "e-kiwi" :D

un seul mot me vient à la bouche : TERRIBLE

pratique, rapide, fonctionnel... bref 8)

la grande 8) ce SuperPJ
 
WRInaute impliqué
e-kiwi a dit:
chez moi je n'existe pas pour "annuaire tutoriaux" par exemple. tu peux tester chez toi ?

chez moi t'es 1er partout

-http://judith.nfrance.com/~ju37835/index.php?q=annuaire+tutoriaux&u=http%3A%2F%2Fwww.e-kiwi.net%2F*
 
WRInaute occasionnel
e-kiwi a dit:
chez moi je n'existe pas pour "annuaire tutoriaux" par exemple. tu peux tester chez toi ?
chez moi tu es 1er partout :?

dans le champ requete j'ai tapé : "annuaire tutoriaux"
dans le champ url à trouver : -www.e-kiwi.net


Sinon voici le script pour ceux qui voudraient le réutiliser sur leur serveur (et ainsi soulager le mien ;) ) ... car il y a peut-être un problème de quotas :
Code:
<? //error_reporting(0);

$q = $_GET['q'] ? stripslashes( $_GET['q'] ) : '';
$u = $_GET['u'] ? stripslashes( $_GET['u'] ) : '';

$q2 = htmlspecialchars( $q );
$u2 = htmlspecialchars( $u );

if ( !preg_match("!^http://!",$u) )		$u = "http://$u";

if ( preg_match("!^http://[^/]+$!",$u) )	$u .= '/';

$u = str_replace
(
	array( '.', '+', '?', '(', ')', '[', ']', '*' ),
	array( '\.', '\+', '\?', '\(', '\)', '\[', '\]', '.*?' ),
	$u
);



$qe = urlencode( $q );

echo <<<EOF
	<HTML><BODY>\n
	<TITLE>POSITIONS</TITLE>\n
	<FORM ACTION=$_SERVER[PHP_SELF] METHOD=Get>
	 <A HREF=./ STYLE=font-weight:bold;>Home</A><BR>
	 <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=>
	  <TR>
	   <TD><B>Requête Google</TD>
	   <TD> &nbsp;<INPUT TYPE=Text NAME=q VALUE="$q2" SIZE=50></TD>
	  </TR>
	  <TR>
	   <TD VALIGN=Top><B>URL à trouver</TD>
	   <TD VALIGN=Top STYLE=padding-bottom:5>
	     &nbsp;<INPUT TYPE=Text NAME=u VALUE="$u2" SIZE=100> <FONT SIZE=1 FACE=Arial>( "http://" facultatif )</FONT><BR>
	     <FONT SIZE=1 FACE=Arial COLOR=Green>
	      &nbsp; <U>Astuce</U> : Vous pouvez utiliser le caractère <FONT FACE=Tahoma><B>*</B></FONT> n'importe où dans l'url :<BR>
	      &nbsp; par exemple, vous pouvez taper <FONT FACE=Tahoma><B>http://www.monsite.com/*</B></FONT> pour trouver n'importe quelle page du domaine "www.monsite.com" :-)
	     </FONT>
	    </TD>
	  </TR>
	 </TABLE>
	 <INPUT TYPE=Submit>
	</FORM>\n
EOF;

if ( !$_GET['q'] || !$_GET['u'] )
	exit;

echo "<FONT SIZE=2 COLOR=Red><B>---</B> : Signifie que le site n'a pas été trouvé parmi les 100 premiers résultats Google.</FONT><P>\n";
echo "<FONT SIZE=2 COLOR=Gray>Recherche en cours, veuillez patienter ...</FONT><P>\n";flush();


$serveurs = array
(
	'66.249.93.104',
	'64.233.179.104',
	'64.233.161.104',
	'64.233.167.104',
	'64.233.171.104',
	'64.233.183.104',
	'64.233.185.104',
	'64.233.187.104',
	'64.233.189.104',
	'66.102.7.104',
	'66.102.9.104',
	'66.102.11.104',
	'216.239.37.104',
	'216.239.39.104',
	'216.239.53.104',
	'216.239.57.104',
	'216.239.59.104',
	'216.239.63.104',
);

for ( $i=0; $i<=count($serveurs)-1; $i++ )
{
	$f = 0;
	$found = false;
	$serveur = $serveurs["$i"];
	
	for ( $s=0; $s<=9; $s++ )
	{
		$ss = $s * 10;
		$g = "http://$serveur/search?hl=fr&start=$ss&q=$qe";
		$html = file_get_contents( $g );
		
		foreach ( split('<br>',$html) as $serps )
		{
			if ( preg_match("!<a class=l href="http://!",$serps) )
			{
				$f++;
				
				if ( preg_match("!<a class=l href="$u"!",$serps) )
				{
					$found = true;
					break 2;
				};
			};
		};
	};
	if (!$found) $f='---';
	echo "n°<FONT COLOR=Red><B>$f</B></FONT> sur <A HREF="http://$serveur/search?hl=fr&q=$qe" TARGET=_blank STYLE=text-decoration:none;color=dimgray;font-weight:bold>$serveur</A> <I>(".($i+1)."/".count($serveurs).")</I>";
	
	if ( preg_match("!sur un total d'environ <b>([^<]+)!",$html,$r) )
	{
		echo " &nbsp; &nbsp; - <FONT COLOR=Blue>$r[1] résultats</FONT>";
	}
	else
	{
		echo " &nbsp; &nbsp; - <FONT COLOR=Blue>0 résultat</FONT>";
	};
	
	if ($serveur=='66.249.93.104')	echo " &nbsp; &nbsp;<FONT COLOR=Blue><B>- BigDaddy</B></FONT>";
	elseif ($serveur=='64.233.179.104')	echo " &nbsp; &nbsp;<FONT COLOR=Blue><B>- BigDaddy 2</B></FONT><BR><FONT STYLE=font-size:5>&nbsp;</FONT>";
	
	echo "<BR>\n";
	flush();
};

echo "\n\n</BODY></HTML>";

?>


Attention, la fonction flush() (affichage progressif) ne fonctionnera pas sur les serveurs dont le module mod_gzip est activé. Pour régler le problème, mettez dans votre .htaccess les lignes suivantes :
Code:
<IfModule mod_gzip.c>
mod_gzip_on no
</IfModule>

EDIT : Petite maj du code
 
WRInaute discret
Excellent!, et si je peux me permettre une remarque..........
Pouvoir mettre 2 ou 3 URL à la fois?

Mais sinon bien vu!
 
WRInaute occasionnel
bozoleclown a dit:
juste pour signaler un petit bug
mais sinon pour le reste c'est parfait

lorsque un site qui est premier et deuxieme resultat sur google
ex :
https://www.google.fr/search?q=galop+che ... r:eek:fficial

et bien le résultat indiqué par ton outil est : deuxieme position
En fait pour le script, le site est soit 1er soit 2ème (mais pas les deux) car il prend l'url complète.

Si tu tapes :
- galop cheval
-www.le-site-cheval.com/examens/observablesg1_9camar.php
... il t'indiquera bien premier sur la plupart des datacenters

Si tu tapes :
- galop cheval
-www.le-site-cheval.com/examens/observablesg1_9att.php
... il t'indiquera 2ème


En revanche tu peux taper :
- galop cheval
-www.le-site-cheval.com/*

Si tu veux trouver la meilleure position de n'importe quelle page du domaine "www.le-site-cheval.com" et là il t'affichera 1er ;)
 
WRInaute accro
je suis désolé de te dire que ton script ne marche pas tout le temps :)

j'ai fait 2 fois la meme requete à 15 secondes d intervalle, la première fois il m'a trouvé, pas la seconde, snif
 
WRInaute discret
super ce script j'en mets une version en ligne sur mon site des que je suis chez moi !! tu veux un backlink sur quel site pour te recompenser ? :p
 
WRInaute occasionnel
e-kiwi a dit:
je suis désolé de te dire que ton script ne marche pas tout le temps :)

j'ai fait 2 fois la meme requete à 15 secondes d intervalle, la première fois il m'a trouvé, pas la seconde, snif
Le problème c'est que sur un même datacenter (BigDaddy par exemple) tu peux faire une même recherche à 2 ou 3 secondes d'intervalle et avoir des résultats différents :( donc si entre 2 requêtes du script, un site est passé de la page 2 à la page 1, et bien malheureusement il n'apparaitra pas :( Si les DataCenters étaient stables ce serait mieux ...

skillfull a dit:
super ce script j'en mets une version en ligne sur mon site des que je suis chez moi !! tu veux un backlink sur quel site pour te recompenser ?
super sympa skillfull ... ce ne sera pas de refus pour le backlink hehe :p thanks
=> je t'envois les instructions par MP 8)
en tout cas merci ;)
 
WRInaute occasionnel
Comme j'avais un peut de temps à perdre ce soir, j'ai un peut modifié le script de SuperPJ.
- Ajout du nombre de resultat total.
- Ajout du nombre de backlink (il faut rentrer www.monsite.c0m).
- On peut cliquer sur l'adresse Ip du serveur pour lancer la requete.
- + rapide (mais avec le calcul des bl ca revient presqu'au même) car la requete est traité de 0-100 et non 10*10.

Les resultats peuvent ne pas être identiques car lorsque l'on recherche par 100 google ajoute souvent pour un même site un resultat en plus (page similaire) . Ce "problème" est réglé (je ne compte pas les ligne en blockquote) mais les resultats peuvent quand même être differents.

Vous pouvez tester ici
http://1entreprise.com/googledata2.php
 
WRInaute passionné
Bâ alors là chapeau SuperPJ, je me joins à la populasse pour te féliciter... En plus avec le scrip en cadeau, thanks :D

edit : sonicbuzz, pas mal du tout l'amélioration du script...
Tu peux nous montrer le code ? :oops:
 
WRInaute occasionnel
8O WAOW 8O

Et si je lis bien le script :
$g = "http://$serveur/search?hl=fr&start=$ss&q=$qe";
, y a pas besoin de clef API, puisqu'il va chercher les résultats direct sur les serveurs.

Il est collé sur mon localhost, ca evitera la surcharge.

Je suis preneur aussi du script modifié !

EDIT : et je confirme que BigDaddy m'aime bien... vivement que ca se répercute...
 
WRInaute occasionnel
A la demande générale...
Pour les puriste c'est un peut coder à la va vite :oops:
Code:
<? //error_reporting(0);

$q = $_GET['q'] ? stripslashes( $_GET['q'] ) : '';
$u = $_GET['u'] ? stripslashes( $_GET['u'] ) : '';

$q2 = htmlspecialchars( $q );
$u2 = htmlspecialchars( $u );

$link_url = $u;

if ( !preg_match("!^http://!",$u) )      $u = "http://$u";
if ( preg_match("!^http://[^/]+$!",$u) )   $u .= '/';
$u = str_replace( '.', '\.', $u );
$u = str_replace( '*', '.*?', $u );

$qe = urlencode( $q );

echo <<<EOF
   <HTML><BODY>\n
   <TITLE>POSITIONS</TITLE>\n
   <FORM ACTION=$_SERVER[PHP_SELF] METHOD=Get>
    <A HREF=./ STYLE=font-weight:bold;>Home</A><BR>
!--- EN TEST ---!<br>
    <B>Requête Google</B> <INPUT TYPE=Text NAME=q VALUE="$q2" SIZE=50><BR>
    <B>URL à trouver</B> <INPUT TYPE=Text NAME=u VALUE="$u2" SIZE=50><BR>
    <INPUT TYPE=Submit>

EOF;

if ( !$_GET['q'] || !$_GET['u'] )
   exit;

echo "<FONT SIZE=2 COLOR=Red><B>---</B> : Signifie que le site n'a pas été trouvé parmi les 100 premiers résultats Google.</FONT><P>\n";
echo "<FONT SIZE=2 COLOR=Red>Recherche en cours, veuillez patienter ...</FONT><P>\n";flush();


$serveurs = array
(
'72.14.203.104',
   '66.249.93.104',
'64.233.179.104',
   '216.239.37.104',
   '216.239.39.104',
   '216.239.53.104',
   '216.239.57.104',
   '216.239.59.104',
   '216.239.63.104',
   '64.233.161.104',
   '64.233.167.104',
   '64.233.171.104',
   '64.233.183.104',
   '64.233.185.104',
   '64.233.187.104',
	'66.102.7.104',
   '64.233.189.104',
   '66.102.9.104',
   '66.102.11.104',
);

echo"
<table border='0' cellpadding='2'>
  <tr>
    <th scope='col'>Rank</th>
    <th scope='col'>Total</th>
    <th scope='col'>BL</th>
    <th scope='col'>Serveur</th>
    <th scope='col'>Description</th>
  </tr>
";

for ( $i=0; $i<=count($serveurs)-1; $i++ )
{
   $f = 0;
   $found = false;
   $serveur = $serveurs["$i"];
   
   for ( $s=0; $s<=0; $s++ )
   {
      $ss = $s * 10;
//query
$g = "http://$serveur/search?as_q=$qe&num=100&hl=fr&btnG=Recherche+Google&as_epq=&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=&as_rights=&safe=images";
$html = file_get_contents( $g );
$html = preg_replace ("'<blockquote[^>]*?>.*?</blockquote>'si", "", "$html");

//total result 
$pos = strpos($html, "sur un total d'environ");
$rest = substr("$html", $pos+22, 35);
$total_number = eregi_replace("[^0-9.-]", "", $rest);
$total_number = number_format($total_number, 0, ',', ' ');

//back link
$link = "http://$serveur/search?q=link%3A$link_url&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8";
$link = file_get_contents( $link );

$pos = strpos($link, "of about");
$rest = substr("$link", $pos+5, 35);

$link = eregi_replace("[^0-9.-]", "", $rest);
$link = number_format($link, 0, ',', ' ');

      foreach ( split('<br>',$html) as $serps )
      {
         if ( preg_match("!<a class=l href=\"http://!",$serps) )
         {
            $f++;
            
            if ( preg_match("!<a class=l href=\"$u\"!",$serps) )
            {
               $found = true;
               break 2;
            };
         };
      };
   };
   if (!$found) $f='--';

echo"<tr><td>n°<FONT COLOR=Red><B>$f</B></FONT></td>
<td>$total_number</td>
<td>$link</td>
<td><A HREF=$g TARGET=_blank STYLE=text-decoration:none;color=dimgray;font-weight:bold>$serveur</A> <I>(".($i+1)."/".count($serveurs).")</I></td>
";
 //  echo "n°<FONT COLOR=Red><B>$f</B></FONT> sur <A HREF=$g TARGET=_blank STYLE=text-decoration:none;color=dimgray;font-weight:bold>$serveur</A> <I>(".($i+1)."/".count($serveurs).")</I>";
echo"<td>";
if ($serveur=='72.14.203.104') echo " &nbsp; &nbsp;<FONT COLOR=green>- www IRL Pour la majorité des requetes</FONT>";
if ($serveur=='66.249.93.104') echo " &nbsp; &nbsp;<FONT COLOR=red>- BigDaddy1 IRL</FONT>";
if ($serveur=='64.233.179.104') echo " &nbsp; &nbsp;<FONT COLOR=red>- BigDaddy2 US</FONT>";
if ($serveur=='216.239.37.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- www-va - US</FONT>";
if ($serveur=='216.239.39.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- www-dc - US</FONT>";
if ($serveur=='216.239.53.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- www-in - US</FONT>";
if ($serveur=='216.239.57.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- www-cw - US</FONT>";
if ($serveur=='66.102.7.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- www-mc - US</FONT>";
if ($serveur=='216.239.63.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- US -eu-customers</FONT>";
if ($serveur=='64.233.161.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- US -us-peers</FONT>";
if ($serveur=='64.233.167.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- US -us-peers-</FONT>";
if ($serveur=='64.233.171.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- US -us-customers</FONT>";
if ($serveur=='64.233.183.104') echo " &nbsp; &nbsp;<FONT COLOR=green>- IRL</FONT>";
if ($serveur=='64.233.185.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- US -asia-customers</FONT>";
if ($serveur=='64.233.187.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- US -asia-customers</FONT>";
if ($serveur=='64.233.189.104') echo " &nbsp; &nbsp;<FONT COLOR=Blue>- ASIA -asia-customers</FONT>";
if ($serveur=='216.239.59.104') echo " &nbsp; &nbsp;<FONT COLOR=green>- www-gv - IRL</FONT>";
if ($serveur=='66.102.9.104') echo " &nbsp; &nbsp;<FONT COLOR=green>- www-lm - IRL</FONT>";
if ($serveur=='66.102.11.104') echo " &nbsp; &nbsp;<FONT COLOR=green>- www-kr - IRL</FONT>";

   echo "</td></tr>";
   flush();
};
?>
</table>
   </FORM>
   </BODY></HTML>
[/code]
 
WRInaute occasionnel
phew... avec un max time amélioré sur mon php.ini, et du copier coller de code, je surveille les 3 requetes importantes en meme temps... oui je sais c'est gros bill, mais ... 8O 8O
 
WRInaute occasionnel
Oui effectivement bien vu, en ce moment je ragrde plus les resultats hl=fr ;)
Il faut alors que je retouche le script :)
 
WRInaute discret
Génial comme petit script...
Ce qui serait encore plus génial serait d'avoir la possibilité de rentrer un collection de mots-clés et de faire tourner le script une fois par jour, par exemple. Après on pourrait faire des graphes avec l'évolution... etc.

Je pense que ce petit bout de script va finir par aller très loin! Encore bravo!
 
WRInaute discret
quelqu'un a une idée pourquoi ca ne marche pas sur mon serveur ? on peux pas dire que je sois un expert en programmation, disons que c'est pas ma tasse de thé ;)
 
WRInaute occasionnel
skillfull a dit:
quelqu'un a une idée pourquoi ca ne marche pas sur mon serveur ? on peux pas dire que je sois un expert en programmation, disons que c'est pas ma tasse de thé ;)
Salut,
c'est quoi ta version de php? si elle est inferieure à 4.3.0 c'est peut etre ca le probleme
 
WRInaute occasionnel
skillfull a dit:
Warning: preg_match() expects parameter 2 to be string, array given in /home/www/blablabla.php on line 103
je n'avais pas vu que ce n'etait qu'un warning - normalement ca ne devrait pas engendrer d'erreurs.
tu peux désactiver les warnings dans php.ini.
Il marche le scrit ?
 
WRInaute occasionnel
bonjour,
depuis quelques jours google.fr m'a retrograde a la 4eme place , et le script me donne tjs la place precedente 2eme.
normal ?


@+
manu
 
WRInaute occasionnel
amazigh25 a dit:
Sur la (1) je suis mieux classé que la (2) sur le meme mot clé.
Il doit y avoir une erreur.
J'avais expliqué les differences plus haut (pour googledata2.php): <<Les resultats peuvent ne pas être identiques car lorsque l'on recherche par 100 google ajoute souvent pour un même site un resultat en plus (page similaire) . Ce "problème" est réglé (je ne compte pas les ligne en blockquote) mais les resultats peuvent quand même être differents. >> J'ajoute que lors des requetes par default 0-10 il arrive aussi que google affiche 2 lignes pour un même site. C'est là qu'il y a un problème dans "mon" script...

Vous avez le code source il est donc facile de voir comment les resultats sont obtenus.
 
WRInaute discret
Salut à tous ! C'est clair c'est de la bal !!!!

Bon par contre j'ai eu un petit soucis avec la ligne 24 :

Code:
echo <<<EOF

Avec cette erreur :

Parse error: parse error, expecting `','' or `';'' in c:\easyphp\www\google\index_old.php on line 24


J'ai cherché des infos sur EOF en PHP, mais j'ai rien trouvé !!! quelqu'un à quelque chose la dessus ??? j'aimerais bien comprendre.

Bon sinon, j'ai réécri ce bout, alors je remets tout pour que cela soit clair :



Code:
<? //error_reporting(0); 

$q = isset($_GET['q']) ? stripslashes( $_GET['q'] ) : ''; 
$u = isset($_GET['u']) ? stripslashes( $_GET['u'] ) : ''; 

$q2 = htmlspecialchars( $q ); 
$u2 = htmlspecialchars( $u ); 

if ( !preg_match("!^http://!",$u) )      $u = "http://$u"; 

if ( preg_match("!^http://[^/]+$!",$u) )   $u .= '/'; 

$u = str_replace 
( 
   array( '.', '+', '?', '(', ')', '[', ']', '*' ), 
   array( '\.', '\+', '\?', '\(', '\)', '\[', '\]', '.*?' ), 
   $u 
); 



$qe = urlencode( $q ); 

echo ' 
   <HTML><BODY> 
   <TITLE>POSITIONS</TITLE>
   <FORM ACTION='.$_SERVER['PHP_SELF'].' METHOD=Get> 
    <A HREF=./ STYLE=font-weight:bold;>Home</A><BR> 
    <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=> 
     <TR> 
      <TD><B>Requête Google</TD> 
      <TD> &nbsp;<INPUT TYPE=Text NAME=q VALUE="'.$q2.'" SIZE=50></TD> 
     </TR> 
     <TR> 
      <TD VALIGN=Top><B>URL à trouver</TD> 
      <TD VALIGN=Top STYLE=padding-bottom:5> 
        &nbsp;<INPUT TYPE=Text NAME=u VALUE="'.$u2.'" SIZE=100> <FONT SIZE=1 FACE=Arial>( "http://" facultatif )</FONT><BR> 
        <FONT SIZE=1 FACE=Arial COLOR=Green> 
         &nbsp; <U>Astuce</U> : Vous pouvez utiliser le caractère <FONT FACE=Tahoma><B>*</B></FONT> n\'importe où dans l\'url :<BR> 
         &nbsp; par exemple, vous pouvez taper <FONT FACE=Tahoma><B>http://www.monsite.com/*</B></FONT> pour trouver n\'importe quelle page du domaine "www.monsite.com" :-) 
        </FONT> 
       </TD> 
     </TR> 
    </TABLE> 
    <INPUT TYPE=Submit> 
   </FORM>
'; 

if ( !isset($_GET['q']) || !isset($_GET['u']) ) 
   exit; 

echo "<FONT SIZE=2 COLOR=Red><B>---</B> : Signifie que le site n'a pas été trouvé parmi les 100 premiers résultats Google.</FONT><P>\n"; 
echo "<FONT SIZE=2 COLOR=Gray>Recherche en cours, veuillez patienter ...</FONT><P>\n";flush(); 


$serveurs = array 
( 
   '66.249.93.104', 
   '64.233.179.104', 
   '64.233.161.104', 
   '64.233.167.104', 
   '64.233.171.104', 
   '64.233.183.104', 
   '64.233.185.104', 
   '64.233.187.104', 
   '64.233.189.104', 
   '66.102.7.104', 
   '66.102.9.104', 
   '66.102.11.104', 
   '216.239.37.104', 
   '216.239.39.104', 
   '216.239.53.104', 
   '216.239.57.104', 
   '216.239.59.104', 
   '216.239.63.104', 
); 

for ( $i=0; $i<=count($serveurs)-1; $i++ ) 
{ 
   $f = 0; 
   $found = false; 
   $serveur = $serveurs["$i"]; 
    
   for ( $s=0; $s<=9; $s++ ) 
   { 
      $ss = $s * 10; 
      $g = "http://$serveur/search?hl=fr&start=$ss&q=$qe"; 
      $html = file_get_contents( $g ); 
       
      foreach ( split('<br>',$html) as $serps ) 
      { 
         if ( preg_match("!<a class=l href=\"http://!",$serps) ) 
         { 
            $f++; 
             
            if ( preg_match("!<a class=l href=\"$u\"!",$serps) ) 
            { 
               $found = true; 
               break 2; 
            }; 
         }; 
      }; 
   }; 
   if (!$found) $f='---'; 
   echo "n°<FONT COLOR=Red><B>$f</B></FONT> sur <A HREF=\"http://$serveur/search?hl=fr&q=$qe\" TARGET=_blank STYLE=text-decoration:none;color=dimgray;font-weight:bold>$serveur</A> <I>(".($i+1)."/".count($serveurs).")</I>"; 
    
   if ( preg_match("!sur un total d'environ <b>([^<]+)!",$html,$r) ) 
   { 
      echo " &nbsp; &nbsp; - <FONT COLOR=Blue>$r[1] résultats</FONT>"; 
   } 
   else 
   { 
      echo " &nbsp; &nbsp; - <FONT COLOR=Blue>0 résultat</FONT>"; 
   }; 
    
   if ($serveur=='66.249.93.104')   echo " &nbsp; &nbsp;<FONT COLOR=Blue><B>- BigDaddy</B></FONT>"; 
   elseif ($serveur=='64.233.179.104')   echo " &nbsp; &nbsp;<FONT COLOR=Blue><B>- BigDaddy 2</B></FONT><BR><FONT STYLE=font-size:5>&nbsp;</FONT>"; 
    
   echo "<BR>\n"; 
   flush(); 
}; 

echo "\n\n</BODY></HTML>"; 

?>


Bon voilà, moi ça fonctionne mais pas partout et ça malgré le mo_gzip désactivé. Mais c'est vraiment de la bal. Mais si quelqu'un pouvez m'expliquer le EOF ça serait cool.
 
WRInaute passionné
Malaiac a dit:
8O WAOW 8O

Et si je lis bien le script :
$g = "http://$serveur/search?hl=fr&start=$ss&q=$qe";
, y a pas besoin de clef API, puisqu'il va chercher les résultats direct sur les serveurs.

Bah justement. Si je me souviens bien, les requetes automatisés sont interdites par google. La seule solution est d'utiliser la clef API.
Le risque : que google ban l'IP ou votre serveur est hébergé.
 
WRInaute passionné
Chez moi ca marché pas, merci pour ta modif mijsoot. Sinon encore bravo à superpj, t'es le meilleur :wink: . Et merci de donner le script .
 
WRInaute discret
End of file, je savais skillfull, mais c'est plutôt le fonctionnement avec :

Code:
echo <<<EOF

que je n'ai pas compris. Pour moi le

Code:
<<<

est un déplacement de bit et donc je ne comprends pas le principe avec

Code:
echo

et surout pourquoi ça ne fonctionne pas partout puisque à priori c'est natif du langage !!!
Une explication s.v.p. !!! et merci d'avance pour le petit cours.
 
WRInaute passionné
impressionnant, je me suis fait le même script en local, avec l'API GG mais avec le problème que la requête qui est faite semble être sur les résultats américains... du coup les résultats sont pas bons. Si qqn peut me dire où on dit où on peut mettre le paramètre hl=fr ça serait cool et j'en ferais profiter tt le monde aussi...

par contre, je serais curieux de savoir ce qu'en pense google qu'on utilise ses résultats directement sans passer par l'api qui avait été prévue et limitée à cet effet..
 
WRInaute accro
Suede a dit:
Malaiac a dit:
8O WAOW 8O

Et si je lis bien le script :
$g = "http://$serveur/search?hl=fr&start=$ss&q=$qe";
, y a pas besoin de clef API, puisqu'il va chercher les résultats direct sur les serveurs.

Bah justement. Si je me souviens bien, les requetes automatisés sont interdites par google. La seule solution est d'utiliser la clef API.
Le risque : que google ban l'IP ou votre serveur est hébergé.
Interessent...quand est-il vraiment ?
 
WRInaute impliqué
zimounet a dit:
Juste une question, on la met ou la clé api dans le script?

Code maison :)
Mais super, et c´est bein codé...

Peut-on utiliser la source pour l´adapter?? J´ai un code de ce style, mais beaucoup moins bien (il était vite fait)...

Quelques conseils:
Jusqu´à 500 c´est pas mal...
Plusieurs site...
Autres moteur de recherche...

Sinon, quel est l´intérêt véritable de tester une requête sur les différents serveurs? le pr et les bl, on sait... mais la position??
 
WRInaute passionné
SuperPJ a dit:
Je viens de développer un petit script de positionnement Google :
http://judith.nfrance.com/~ju37835/
(lien réactivé par Dj Apx :wink:)

Il vous donne la position de votre site sur plusieurs DataCenters (les datacenters utilisés sont ceux de WRI https://www.webrankinfo.com/outils/googl ... dance3.php )

... mais la petite nouveauté par rapport aux scripts habituels c'est que vous pouvez même utiliser le caractère "*" dans l'url :p

Dans le champ "URL à trouver", vous pouvez donc taper par exemple :
-http://*.webrankinfo.com
-https://www.webrankinfo.com/forum/*
-https://www.webrankinfo.com/*/*


PS : Vous n'êtes pas obligé de taper les "http://".

Est-ce qu'il serait opportun de calculer une position moyenne du positionnement sur tous les "non-big daddy" ?
 
WRInaute discret
Bon, je voulais juste dire que j'avais trouvé un début de réponse pour
Code:
<<<EOF
à cette url :
http://fr3.php.net/string

mais en toute franchise je n'ai pas forcément tout compris, donc je suis toujours à la recherche d'une explication clair.

Merci d'avance
 
WRInaute discret
Je voudrais savoir ce que signifie exactement (mais je l'ai dit plus haut) :
Code:
echo <<<EOF

End Of File ok, mais <<< ???, en clair j'aimerais comprendre le code que j'utilise.
 
WRInaute impliqué
Y a personne qui est arrivé à adapter ce script pour interroger 1000 mots via un import csv?

Ca serait le top
 
WRInaute impliqué
WRInaute discret
Salut,

Ca marche nikel avec google

vous savez si c'est compliqué de l'adapter pour MSN et Yahoo ?
 
WRInaute occasionnel
mijsoot a dit:
Je voudrais savoir ce que signifie exactement (mais je l'ai dit plus haut) :
Code:
echo <<<EOF

End Of File ok, mais <<< ???, en clair j'aimerais comprendre le code que j'utilise.

C'est ce qu'on appel la syntaxe heredoc, qui te permet d'écrire un bloc de texte (ou de code) sans être obligé de mettre à chaque ligne un

Code:
echo ' machin chose truc chouette';
ou
Code:
echo " machin chose truc chouette";

le EOF tu le retrouve à la fin pour dire à l'interpréteur PHP que la syntaxe est fini. Tu n'est pas obligé de mettre EOF (c'est une habitude) tu peux aussi mettre ceci :
echo <<<TARTEMPION

à condition qu'à la fin ça se termine par TARTEMPION.

Ca à l'enorme avantage que si tu écris normalement ceci :


Code:
echo ' Ma petite soeur va à l\'école Tartempion';
tu es obligé d'échapper la simple quote de "l'école". Ce qui est souvent une source d'erreurs dans nos scripts. Bon il y a la méthode on remplace echo '...'; par un echo "....";

Mais plus simple, surtout quand on a du texte sur des Kilometres c'est d'utiliser cette fameuse syntaxe HEREDOC tu évites d'oublier d'echapper un simple quote ou une double quote. :D On peut ainsi utiliser toute les caractères spéciaux sans forcément avoir à les echapper.

Voilà j'espère avoir suffisamment éclairé ta lanterne :)
 
WRInaute discret
c'est bien

Je n'ai helas pas le temps de regarder le source, et sans doute que
ce script est plutot bien (d'après ce que je lis), mais !! si, c'est une simple query recomposée qui envoie une requete standard et parse le resultat, il faut savoir que google n'aime pas (pas du tout) qu'on le questionne a des fins différentes que ce a quoi doit servir un moteur de recherche. ils en ont meme horreur, et considerent que ca occuppe inutilement voir plombe leur moteur. Du coup, ils ont créé l'api pour questionner google. Les outils ou utilisateurs (ex le genial optitools) qui s'amuseraient a questionner google pour relever des positions et des back links, se font pénaliser un jour ou l'autre lourdement.
Je dis juste cela parce qu'il serait dommage que quelqu'un qui a eu une intention louable d'heberger un script paie et voit son site envoyé aux oubliettes. Surtout, google ne distribue plus de clefs pour questionner l'API.

Sinon, il y a les proxies et autres trucs pour le faire discretement (a condition de virer les cookies et de ne pas avoir la toolbar google).

Bref, dommage, optitools etait le must have de tous les SEO
 
Discussions similaires
Haut