[PHP] Pobieranie wszystkich linków ze strony www
: 07 sty 2016, 01:08
Napisałem dawno temu prostą funkcje w języku PHP pobierającą wszystkie odnośniki z podanej jako parametr strony www. Funkcja zwraca tylko unikalne odnośniki, a więc usuwa te powtarzające się. Może się komuś przyda kto chce napisać jakiś prosty crawlery lub skaner podatności WWW. Funkcja wykorzystuje wyrażenia regularne, file_get_contents (można zastopić cURL jeśli na serwerze jest dostępny). Jako parametr przyjmuje adres URL strony z której chcemy pobrać linki. Wartością zwracaną jest tablica do dalszej obróbki z odnalezionymi linkami.
Gotowy kod źródłowy z przykładem użycia:
Gotowy kod źródłowy z przykładem użycia:
Kod: Zaznacz cały
/*
* @Author: http://haker.edu.pl/
* @getLink($url) - Extract all links from URL
*/
function getLink($url) {
$soruce = file_get_contents($url);
$regEx = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
if (preg_match_all("/$regEx/siU", $soruce, $foundLinks, PREG_SET_ORDER)) {
$linki = array();
$tmp = array();
$sizeArray = sizeof($foundLinks);
for ($i = 0; $i < $sizeArray; $i++) {
$tmp[$i] = $foundLinks[$i][2];
}
$tmp = array_values(array_unique($tmp));
$links = array();
foreach ($tmp as $link) {
array_push($links, trim($link));
}
return $links;
}
}
//-------------------------------------
$links = getLink('http://wp.pl/');
foreach ($links as $link) {
echo $link . '<br>';
}