PHP: estrarre indirizzi email da un sito
04/06/2013Una delle accortezze di una buona programmazione riguarda la necessità di non inserire mai indirizzi email in chiaro onde evitare che tali indirizzi vengano letti dai crawler appositamente progettati per costituire indirizzari attraverso la lettura dei contenuti web.
La realizzazione di un corretto sistema di occultamento degli indirizzi email è uno degli elementi che contraddistingue la professionalità di un lavoro (sempre che non vi sia esplicita richiesta del cliente, dopo esser stato messo a conoscenza dei rischi di esposizione di un indirizzo email, di pubblicazione a 'tutti i costi').
Ho realizzato un piccolo script php attraverso cui esaminare il codice sottostante la visualizzazione di una pagina utile a verificare, ed eventualmnete estrarre, la presenza di indirizzi email non visualizzati in pagina ma presenti nel codice.
Ecco lo script (da utilizzare esclusivamente nel rispetto delle norme sulla privacy):
function leggi_codice($sito) {
$lines = file($sito);
$string='';
foreach ($lines as $line_num => $line) {
$string .= $line;
}
preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches);
return $matches[0];
}
function estrai_mail($var) {
$emails = array_unique($var);
sort($emails);
if(empty($emails)) echo "nessuna email presente nel codice di $_POST[url]";
else {
foreach($emails as $email) {
echo trim($email).'
';
}
}
}
if (isset($_POST[url]) && $_POST[url] !='') {
estrai_mail(leggi_codice('https://' . $_POST[url]));
echo "
‹a href="emails.php"›esamina altro url‹/a›
";
‹form action="emails.php" method="post"›
}
else
echo '
Url da esaminare
https://‹input name="url" type="text" /›
‹input type="submit" value="esamina url" /›
‹/form›';