Cum promovați
propria imagine?

Péter Csaba

Este important să fiți cunoscut în lume!

Faceți publică o pagină de prezentare pe care tocmai ați instalat-o pe serverul de WWW de pe PC-ul dumneavoastră. Pagina conține cuvintele cheie despre activitatea firmei, totuși este improbabil că ea va fi găsită de cineva care caută, folosind un program de căutare sau căutătoare (search-engines), specificând exact aceleași cuvinte cheie care se află și în pagina făcută de dumneavoastră. Poate, vă puneți întrebarea: "Ce nu am făcut corect?“ sau "Ce ar trebui să fac pentru ca și căutătorii să-mi găsească pagina?“. Răspunsul este simplu: trebuie să anunțați câți mai mulți dintre cei care încearcă să indexeze documentele din Internet (Yahoo, Excite, Webcrawler, Lycos etc.).

Vă poate lua mult timp până găsiți formularul de înscriere al sitului și până când completați informațiile cerute de fiecare căutător. Ar fi mult mai practic dacă am introduce informațiile despre pagina noastră doar o singură dată și un program ar înscrie automat situl la mai mulți căutători. Astfel de programe există, însă costă bani și, din păcate, mulți nu pot să-și cumpere aceste programe. Acest articol vă prezintă modul în care puteți să vă construiți un astfel de program.

Formularul

Formularul prin care programul primește datele de intrare conține două câmpuri: URL-ul paginii care va fi indexată (numită input_url) și adresa de e-mail a persoanei care înscrie pagina (numită input_email). De exemplu:

Sursa HTML este cea prezentată mai jos. Verificați calea și numele fișierului, ca să corespundă cu cel al programului pe care-l folosiți.

 <FORM METHOD=“POST“ ACTION=“/cgi-bin/ UrlSubmit.pl“> 
 <B>URL:</B> 
 <INPUT TYPE=“TEXT“ NAME=“input_url“ 
      SIZE=“32“ MAXLENGTH=“200“ VALUE=“http://“> 
 <BR> 
 <B>Your email:</B> 
 <INPUT TYPE=“TEXT“ NAME=“input_email“ 
       SIZE=“18“ MAXLENGTH=“200“> 
 <INPUT TYPE=“SUBMIT“ NAME=“action“  
       VALUE=“Submit“> 
 </FORM> 

Preliminarii

Liniile 1-6 din program indică locul unde se află binarul perl pe sistemul nostru și explică statutul de copyright (drepturi de autor) al programului.

   1 #!/usr/bin/perl -w 
   2 #  
   3 # Name:        UrlSubmit.pl 
   4 # Description: Submit an URL to several Search Engines 
   5 # Author:      Peter Csaba 
   6 # Copyright: (c) 1998 Peter Csaba 

Liniile 8-11 importă modulele Perl necesare - CGI.pm care conțin funcții cu ajutorul cărora pot să aflu datele de intrare primi te din formular și câteva module LWP și HTTP pentru tratarea unor cereri HTTP. Toate aceste module pot fi găsite la CPAN.

   8 use CGI; 
   9 use LWP::UserAgent; 
  10 use HTTP::Request; 
  11 use HTTP::Status; 
  12 
  13 $| = 1; # disable output buffering 

Linia 15 creează un nou obiect CGI. Linia 16 specifică navigatorului folosit de utilizator că pagina primită ca răspuns este un document HTML.

  15 $cgi = new CGI; 
  16 print $cgi->header; 
  17 $input_url = $cgi- >param(‘input_url’); 
  18 $input_email = $cgi- >param(‘input_email’); 

Liniile 20-22 definesc câteva variabile care conțin informații unice despre situl nostru - acestea sunt informații pe care va trebui să le schimbați dacă copiați programul. $our_ip este adresa IP a mașinii pe care va rula programul; definim acesta deoarece unii căutători (Hotbot) cer specificarea unei adrese IP. Folosim adresa noastră de IP în loc să o folosim pe cea a userului, deci dacă este ceva problemă cu programul nostru cei de la Hotbot vor ști că mașina noastră este cea care le face pro bleme. Liniile 21 si 22 definesc fișierele header și footer - aceste fișiere conțin cod HTML care va fi inclus înainte și după textul generat dinamic de program.

  20 my $our_ip = "205.177.109.84“; 
  21 my $HEADER = "/cale_catre_ document/header.html“; 
  22 my $FOOTER = "/cale_catre_ document/footer.html“; 

Validarea datelor de intrare

În liniile 24-35, facem câteva verificări de bază asupra URL-ului și adresei de e-mail pe care le-am introdus. În cazul în care una dintre ele nu trece de testul nostru, programul pune un mesaj de eroare în variabila $output_string, ne arată pagina cu textul de eroare și își termină execuția. Pentru URL, verificăm dacă începe cu "http://“. Un program mai complex ar putea încerca să acceseze pagina specificată de URL-ul introdus, și ar putea genera un mesaj de eroare, dacă pagina este ne-accesibilă. Pentru adresa de e-mail, verificăm doar dacă aceasta contine semnul @ în adresă.

  24 if ($input_url !~ /^http:\/\//) {  
  25  $output_string = "<H3>URL incorect</H3><BR>\n“; 
  26  $output_string .= "<P>URL incorect!“; 
  27  &show_output ($output_string); 
  28  exit; 
  29 } 
  30 if ($input_email !~ /@/) { 
  31  $output_string = "<H3>Email nevalid</H3><BR>\n“; 
  32  $output_string .= "<P>Adresa de email este gresita!“; 
  33  &show_output ($output_string); 
  34  exit; 
  35 } 

Definirea căutătorilor

Linia 37 definește o listă de căutători la care va fi înscris situl nostru. Dacă copiați acest program și doriți să adăugați noi căutători, va trebui să adăugați numele lor la această listă. Înainte să adăugați noi căutători la listă, este bine să trimiteți un e-mail și să întrebați care este politica lor față de programele care încearcă să înscrie situri automat. De exemplu, cei de la Infoseek nu agreează acest mod de a înscrie un site. Cei de la Yahoo nu au nimic împotriva acestor programe, dar pentru înscrierea unui site la Yahoo trebuie parcurse mai multe pagini, ceea ce depășește posibilitățile acestui simplu program. Cei care vor, pot să extindă programul, astfel ca acesta să funcționeze și cu Yahoo.

 37 @site_list = 
	qw (altavista excite hotbot lycos webcrawler); 

Liniile 39-65 definesc câte un hash (tablou asociativ) pentru fiecare căutător. Numele pe care le folosim pentru denumirea acestor tablouri asociative sunt identice cu cele folosite pentru descrierea fiecăruia în @site_list în linia 37.

Fiecare tablou asociativ (hash) conține o pereche de cheie/valoare care descrie URL-ul programului CGI și care acceptă cereri de înscriere a siturilor. Cheia este identică în fiecare tablou: submission_page. Fiecare tablou conține, de asemenea, o pereche de chei/valoare care descriu textul din pagina de răspuns, în cazul în care înscrierea a fost cu succes. Cheia de aici este success.

Celelalte elemente din tablou diferă de la căutător la căutător. Ca să vă dați seama ce informații solicită fiecare căutător și care sunt numele variabilelor sub care trebuie trimise informațiile, editati sursa formularelor de înscriere de pe situl căutătorului. Numele fiecărei variabile va deveni cheie în tablou; valoarea asociată cheii va fi completată cu valori luate din pagina cu formularul, de pe situl căutătorului sau URL-ul sau adresa de email introdusă.

De exemplu: dacă edităm sursa paginii în care se pot înscrie situri noi la căutătorul Altavista, observăm că numele câmpului unde introducem URL-ul este q și există o valoare ascunsă în formular numit ad, având valoarea 1. Deci asociem valoarea $input_url (pe care o avem din formularul nostru) la variabila $altavista{"q“}, și asemănător 1 la $altavista{"ad“}.

  39 $altavista{"submission_page“} = 
	"http://add-url.altavista.digital.com/
	cgi-bin/newurl“; 
  40 $altavista{"success“} = "has been 
	recorded by our robot“; 
  41 $altavista{"q“} = "$input_url“; 
  42 $altavista{"ad“} = "1“; 
  43 
  44 $excite{"submission_page“} = 
	"http://www.excite.com/cgi/add_url.cgi“; 
  45 $excite{"success“} = "Thank you!“; 
  46 $excite{"url“} = "$input_url“; 
  47 $excite{"email“} = "$input_email“; 
  48 $excite{"look“} = "excite“; 
  49 
  50 $hotbot{"submission_page“} = 
	"http://www.hotbot.com/ addurl.html“; 
  51 $hotbot{"success“} = "Got it!“; 
  52 $hotbot{"newurl“} = "$input_url“; 
  53 $hotbot{"email“} = "$input_email“; 
  54 $hotbot{"ip“} = "$our_ip“; 
  55 $hotbot{"redirect“} = 
	"http://www.hotbot.com/ addurl2.html“; 
  56 
  57 $lycos{"submission_page“} = 
	"http://www.lycos.com/ cgi-bin/spider_now.pl“; 
  58 $lycos{"success“} = 
	"We suc cessfully spidered your page.“; 
  59 $lycos{"query“} = "$input_url“; 
  60 $lycos{"email“} = "$input_email“; 
  61 
  62 $webcrawler{ "submission_page“} = 
	"http://webcrawler.com/ cgi-bin/addURL.cgi“; 
  63 $webcrawler{"success“} = 
	"has been scheduled for  indexing.“; 
  64 $webcrawler{"url“} = "$input_url“; 
  65 $webcrawler{"action“} = "add“; 

Pentru Hotbot, numele câmpului unde se scrie URL-ul este newurl; câmpul pentru e-mail este email. Hotbot mai are un câmp ascuns; numele este redirect iar va loarea este http://www.hotbot.com/addurl2.html. Un alt câmp care este generat dinamic de fiecare dată când accesați pagina de înscriere este ip-ul; aici punem valoarea variabilei $our_ip mai sus declarată.

Excite, Lycos, si Webcrawler au fost completate asemănător. Dacă doriți să adăugați noi căutători la program, va trebui să creați noi tablouri pentru fiecare căutător, folosind acesta procedură.

Setarea variabilelor

Liniile 67-70 creează și definesc un nou obiect UserAgent folosind modulul LWP::UserAgent. Linia 68 dă agentului nostru un nume; acest nume va apare în fișierul de accese al căutătorului, astfel ei vor ști ce program a accesat situl lor. Linia 69 atașează o adresă de e-mail agentului, deci situl apelat va ști la cine să trimită e-mail, în caz că s-a produs o eroare. Linia 70 setează timpul maxim cât va aștepta agentul nostru ca să se conecteze cu serverul căutătorului, acesta fiind 90 de secunde. Implicit agentul așteaptă 3 minute pentru răspuns, dar noi, fiind mai nerăbdători, am setat un timp mai scurt.

  67 my $ua = new LWP::UserAgent; 
  68 $ua->agent ("UrlSubmit 1.0“); 
  69 $ua->from ("cpeter\@netsoft.ro“); 
  70 $ua->timeout (90); 

În liniile 72-78 definim textul care ne va apare ca răspuns după ce programul a încercat să ne înscrie situl. Nu am definit acest text în header, deoarece headerul poate fi folosit și în alte programe unde acest text nu și-ar găsi locul.

  72 $output_string = "<FONT SIZE=\“2\“>
	<A HREF=\“/index.html\“>“; 
  73 $output_string .=  "<B>NetSoft</B></A>“; 
  74 $output_string .= "<A HREF= 
	\“http://www.netsoft.ro/ ~cpeter“>
	My home page</A>“; 
  75 $output_string .= "<P></FONT>\n“; 
  76 $output_string .= 
	"<IMG SRC=\“/images/netsoft. gif\“"; 
  77 $output_string .= "ALIGN= BOTTOM 
	BORDER=\“0\“> <BLOCKQUOTE>\n“; 
  78 $output_string .= "<BR>\n<H3>Site Submitter  
	Results</H3>\n“; 

Înscrierea sitului

Liniile 80-99 reprezintă partea principală a programului.

  80 foreach $sitename (@site_list) { 
  81   $query_string = $$sitename
	{submission_ page} . "?“; 
  82   foreach $key (keys %$site name) { 
  83     if (($key ne "submission_page“) 
	&& ($key ne "success“)){ 
  84       $query_string .= 
	"$key=$$sitename {$key}&“; 
  85     } 
  86   } 
  87   my $request = new HTTP::Request ‘POST’, 
	$query_string; 
  88   my $response = $ua->request ($request); 
  89   $response_body = $response- >content(); 
  90   if (($response->code() == RC_OK) 
	&& ($response_body =
	~ /$$sitename{"success“ }/)) { 
  91     $output_string .=  "<BR>Submission to 
	<B>$sitename</B> 
	was  successful.\n<HR>\n“; 
  92   } 
  93   else { 
  94     $coder = $response->code(); 
  95     $output_string .=  
	"<BR>Submission to <B>$sitename</B> 
	failed for some reason. "; 
  96     $output_string .= "(Response code $coder.) "; 
  97     $output_string .= 
	"You will need to submit to 
	$site name by hand.\n<HR>\n“; 
  98   } 
  99 } 

La linia 80 începem să luăm, unul după celălalt, căutătorii la care vrem să ne înscriem situl. Linia 81 începe construcția URL-ului care va fi apelat ca să ne înscrie pagina. Începem URL-ul prin specificarea locului unde se află pagina de înscriere, și adăugăm semnul întrebării "?“ specificând astfel că vor urma o serie de variabile și va lorile lor. La linia 82 începem să luăm, unul după altul, perechile cheie/valoare din tabloul asociativ al căutătorului. Linia 83 verifică dacă perechea cheie/valoare conține informații care trebuie adăugate la URL-ul pe care îl construim. Dacă nu conține informații de care avem nevoie, sărim înapoi la linia 82 și accesăm următoarea cheie și va loarea lui. În caz contrar, adăugăm variabila și valoarea ei la URL, împreună cu semnul "&“, pentru cazul în care mai există și alte valori care trebuie specificate.

Linia 87 creează un obiect HTTP::Request, iar linia 88 trimite cererea la server și asociază variabila $response pentru răspunsul primit. Linia 89 setează variabila $response_body cu HTML-ul pe care îl primim ca răspuns în urma înscrierii. Linia 90 ne confirmă că totul a decurs conform așteptărilor noastre. În cazul în care headerul HTTP nu indică nici o eroare (veri ficăm $response->code() pentru această informație), și HTML-ul primit ca răspuns conține textul "success“, text pe care l-am specificat în tabloul asociativ, linia 91 este executată: textul indicând că subscrierea la căutător a avut succes va fi adăugat la textul care ne va fi afișat la terminarea programului. Dacă s-a comis o eroare, sau HTML-ul nu conține textul "success“, liniile 94-97 sunt executate. Determinăm codul de eroare la linia 94, și adăugăm textul la ieșirea programului, indicând că s-a produs o eroare.

Ultimii pași

La linia 101, mai adăugăm cod la textul care va fi afișat, iar la linia 102 apelăm subrutina care ne afișează, în sfârșit, textul. Linia 103 termină programul.

  101 $output_string .= "</BLOCK QUOTE>“; 
  102 &show_output ($output_string); 
  103 exit; 

Subrutina pentru afișarea textului din liniile 105-118 este, putem zice, standard. Ea deschide fișierul header, afișează conținu tul pe ecran; afișează șirul (string) la care am tot adăugat text pe parcurs; și în final deschide fișierul footer și afișează conținutul lui.

 105 sub show_output { 
 106   my $output_string = shift (@_); 
 107   open HEADER or die "Can’t find file $HEADER: $!\n“; 
 108   while (<HEADER>) { 
 109     print $_; 
 110   } 
 111   close HEADER; 
 112   print $output_string; 
 113   open FOOTER or die "Can’t find file $FOOTER: $!\n“; 
 114   while (<FOOTER>) { 
           115 print $_; 116 } 
 117   close FOOTER; 
 118 } 

Lucruri de reținut

Acest program, o dată lansat, încearcă să ne înscrie situl imediat la câțiva căutători și încearcă să determine dacă acest lucru a fost făcut cu succes. Din această cauză, trebuie să așteptați pentru ca unele lucruri să se întâmple și ca rezultatul să apară pe ecran. Situl pe care rulează programul (www.netsoft.ro în cazul nostru) trebuie să acceseze pagina de înscriere a fiecărui căutător, iar acesta încearcă, de obicei, să contacteze pagi na noastră ca s-o indexeze, înainte să poată decide dacă subscrierea a fost cu succes sau nu. Cât de repede rulează programul, depinde de cât de repede se pot face aceste conexiuni. Dacă doriți ca utilizatorul să nu aștepte, puteți împărți programul în două părți. Prima parte, după ce primește informațiile referitoare la URL și e-mail, ar putea așeza acestea într-o coadă de așteptare, după care ar putea genera un răspuns imediat. A doua parte a programului ar procesa datele din coada de așteptare, la o anumită oră și ar notifica administratorul în cazul în care s-a produs o eroare în timpul înscrierii. Dacă s-au produs erori, administratorul va trebui să înscrie situl manual sau să anunțe utilizatorul că înscrierea la un anumit căutător n-a reușit.

Dacă copiați programul și adăugați noi căutători, aveți grijă să verificați care este politica lor referitoare la programe, deoarece s-ar putea să nu vă mai înscrie situl.


BYTE România - septembrie 1998


(C) Copyright Computer Press Agora