[PHP] Pobieranie wszystkich linków ze strony www

Zbiór ciekawych kodów źródłowych, skryptów i gotowców.
Regulamin forum
-Staraj się poprzedzać nazwę tematu prefiksem z nazwą języka programowania np. [Python] nazwa tematu.
-Wklejaj źródła w znaczniku

Kod: Zaznacz cały

[/b].
-Staraj się w skrócie opisać do czego dane źródło służy.
[b]-Zawsze podaj stronę domową autora (jeśli znasz te informacje)[/b]. Szanujemy cudzą prace!
Awatar użytkownika
F3nix
Posty: 332
Rejestracja: 28 kwie 2015, 20:51

[PHP] Pobieranie wszystkich linków ze strony www

Post autor: F3nix »

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:

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>';
}
Kenjin
Ekipa HEP
Posty: 122
Rejestracja: 04 sty 2016, 22:10

Re: [PHP] Pobieranie wszystkich linków ze strony www

Post autor: Kenjin »

Na wstepie duzy PLUS za uzywanie regex'ow do tego, naprawde ulatwia to prace. Kiedys tez sie bawilem w proste web crawlery zwracajace linki(nawet gdzies mam pare skryptow, tyle ze ja uzywalem cURLa). W wolnej chwili chetnie to przetestuje i podziele sie wrazeniami, dzieki za skrypt.
Jedyna wada tego skryptu jest to ze zwraca takze linki macierzyste, czli prowadzace do tej samej domeny. Oczywiscie nie byloby w tym nic zlego gdyby zwracal z tej samej domeny ale z innego servera ale on leci od gory do dolu i zwraca tez podstrony :).
BarryWaw
Posty: 3
Rejestracja: 01 lip 2019, 08:31

PHP Pobieranie wszystkich linkow ze strony www

Post autor: BarryWaw »

mam taki problem. Potrzebuje w JS pobrac kod pewnej strony i go zapisac. Czy w JS istnieje funkcja ktora by to wykonywala? Jesli tak to co to za funkcja?
https://www.nacdd1305.org/
ODPOWIEDZ