Как из списка URL одного сайта узнать рабочие / не рабочие страницы?

(Ответов: 4, Просмотров: 608)
  1. Дипломник
    • Регистрация: 21.07.2014
    • Сообщений: 201
    • Репутация: 5
    Есть список из 1000 URL одного сайта. Часть страниц работают, часть не работают.
    Как можно быстро узнать рабочие / нерабочие URL ?
    • 0
  2. Quae res omnia Аватар для Coder
    • Регистрация: 29.01.2015
    • Сообщений: 821
    • Репутация: 299
    Xenu попробуйте.

    Либо через скрипт php - если отдают правильный 404 (header), то отлавливать.

    Или через попытку "достучаться" (php) в определенный лимит времени - если нет, то и нет.
    • 0
  3. Студент Аватар для 1stuaalex
    • Регистрация: 13.04.2011
    • Сообщений: 85
    • Репутация: 49
    • Webmoney BL: ?
    я юзал скрипт для проверки урлов, происхождение которого не помню. Какой то добрый человек у себя на блоге его когда-то выложил.
    LinksList.txt - список ваших 1000 URL
    PHP код:
    <?php
    $count 
    =100;
    define'ABSPATH'dirname(__FILE__) . '/' );
    define('MAXPROCESS',$count);
    //fetch();
    //echo parser($url);
    $good=fopen(ABSPATH.'z_good.txt',"a");
    $good200ok=fopen(ABSPATH.'z_200ok.txt',"a");
    $bad=fopen(ABSPATH.'z_bad.txt',"a");
    $handle=fopen(ABSPATH.'LinksList.txt',"r");
    $execute=0;
    while(!
    feof($handle)){
        
    $url=trim(fgets($handle));
        
    //var_dump(parser($url));
        
    $data=array();
    ###################форкаемся#######################
        
    $pid=pcntl_fork();
        
    //exit();
        
    if($pid==-1){
        }elseif (
    $pid){
            
    $execute++;
            if (
    $execute>=MAXPROCESS){
                
    pcntl_wait($status);
                
    $execute--;
            }
        }else{
    ###################джобим#######################
            
    $data=parser($url);
            if(!
    $data){
                
    fwrite($bad,$url."\n");
                exit();
            }else{
                
    fwrite($good,$data['url'].';'.$data['http_code']."\n");
                if(
    $data['http_code']=='200'){
                    
    fwrite($good200ok,$data['url']."\n");
                }
            }
    ##################конец джоба#################
            
    exit();
        }
    }
    $i_wait=true;
    while (
    $i_wait){
        
    $waii=pcntl_wait($status);
        if(
    $waii==-1$i_wait=false;
    }
    function 
    parser($url){
        
    $return_data=array();
        
    $return_data=fetch($url);
        return 
    $return_data;
    }

    function 
    fetch($url,$timeout=20,$proxy='',$curlopt_header=false){
        if(!
    gethostbyname($url)){
            return 
    false;
        }
        
    $return_data=array();
        
    $headers[]='User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)';
        
    $headers[]= 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
        
    $headers[]= 'Accept-Language: en-us;q=0.7,en;q=0.3';
        
    $headers[]= 'Accept-Encoding: gzip,deflate';
        
    $headers[]= 'Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7';
        
    $headers[]= 'Keep-Alive: 300';
        
    $ch curl_init();
        
    curl_setopt($chCURLOPT_URL$url);
        if(
    $proxy!=''){
            
    curl_setopt($chCURLOPT_PROXY$proxy);
        }
        
    curl_setopt($chCURLOPT_HTTPHEADER$headers);
        
    curl_setopt($chCURLOPT_HEADER$curlopt_header);
        
    curl_setopt($chCURLOPT_REFERER,'');
        
    curl_setopt($chCURLOPT_FOLLOWLOCATION2);
        
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
        
    curl_setopt($chCURLOPT_ENCODING'gzip,deflate');
        
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
        
    curl_setopt($chCURLOPT_CONNECTTIMEOUT$timeout);
        
    curl_setopt($chCURLOPT_TIMEOUT$timeout);
        if(
    curl_exec($ch)!=false){
            
    $return_data['reply'] =true;
        }else{
            return 
    false;
            
    //$return_data['reply'] =false;
        
    }
        
    //$return_data['reply'] = curl_exec($ch);
        
    $info = (curl_getinfo($ch));
        
    curl_close($ch);
        
    //print_r($info);
        
    $return_data['url']=$info['url'];
        
    $return_data['http_code']=$info['http_code'];
        return 
    $return_data;
    }
    ?>
    • 1

    Спасибо сказали:

    kreo-tiff(25.09.2016),
  4. Дипломник
    • Регистрация: 21.07.2014
    • Сообщений: 201
    • Репутация: 5
    скриптами не умею)) я не программист. Желательно проще способы
    • 0
  5. Студент Аватар для 1stuaalex
    • Регистрация: 13.04.2011
    • Сообщений: 85
    • Репутация: 49
    • Webmoney BL: ?
    ну, в хрумере есть масс-проверка заголовков или контента
    либо бесплатной лягушкой https://www.screamingfrog.co.uk/seo-spider/
    • 1

    Спасибо сказали:

    kreo-tiff(25.09.2016),

Похожие темы

Темы Раздел Ответов Последний пост
Кросспостинг в Pinterest: какие существуют рабочие решения?
Вопросы от новичков 0 29.08.2016 00:01
Форум: Рабочие методики
Вопросы от новичков 1 01.01.2015 12:12
Рабочие способы получения рбочих ссылок ...
Вопросы от новичков 13 04.05.2013 19:20
Рабочие скрипты голосования
Софт, скрипты, сервисы 1 24.10.2012 01:17
Есть еще рабочие парсеры на WP?
Софт, скрипты, сервисы 5 22.05.2012 00:59

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры