Немного доработать скрипт (curl, co.cc)

Тема в разделе "PHP", создана пользователем alexz15, 17 дек 2011.

Модераторы: latteo
  1. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    190
    Приветствую!
    Пытаюсь сделать чекер доменов:
    PHP:
    $curl curl_init();
    curl_setopt($curlCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
    curl_setopt($curlCURLOPT_URL'http://co.cc/regist/domain_find_proc.php');
    curl_setopt($curlCURLOPT_POST1);
    curl_setopt($curlCURLOPT_POSTFIELDS"domain=www");
    curl_setopt($curlCURLOPT_REFERER'http://co.cc/');
    curl_setopt($curlCURLOPT_FOLLOWLOCATION1);
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);
     
    $resultcurl_exec($curl);
    curl_close ($curl);
    echo 
    $result;
    но в итоге выдает пустую страницу и никуда не перенаправляет. Возможно, нужно отправить еще какие-нибудь заголовки.. Подскажите что не так? Нужно чтобы перенаправило на /regist/domain_find.php
     
  2. karapet

    karapet

    Регистр.:
    9 сен 2008
    Сообщения:
    168
    Симпатии:
    104
    вполне можно только GET обойтись..

    PHP:
    $domen 'testing1';
    $curl curl_init();
    curl_setopt($curlCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
    curl_setopt($curlCURLOPT_URL'http://www.co.cc/regist/domain_find.php?d='.base64_encode($domen).'&s=LUtX&m=ZnJlZQ==');
    curl_setopt($curlCURLOPT_REFERER'http://co.cc/');
    curl_setopt($curlCURLOPT_FOLLOWLOCATION1);
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);
     
    $resultcurl_exec($curl);
    curl_close ($curl);
    echo 
    $result;

    update
    хотя ошибка.. таким макаром все в гуд идут.. щас рубает уже, завтра если сам не сможешь, попробую помочь
     
  3. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    [​IMG]
    <-------------- добавлено через 56 сек. -------------->
    Весело ничего не скажеш :DDD
     
  4. Inviseble_Demon

    Inviseble_Demon

    Регистр.:
    11 дек 2008
    Сообщения:
    482
    Симпатии:
    350
    Мне пустую страницу выдает даже в браузере...
    Думаю у них у самих проблемы....
     
  5. alexz15

    alexz15

    Регистр.:
    3 окт 2008
    Сообщения:
    394
    Симпатии:
    190
    Inviseble_Demon, попробуй просто зайти на http://www.co.cc/ , блокирует? Если да, то это глюки Нода. Каспер рулит!

    GET'ом не обойтись, т.к. параметры передаются POST скрипту domain_find_proc.php, а он уже направляет на domain_find.php, который, всего лишь, отправляет на страницу простую инфу:
    PHP:
    base64_decode ('YmFk'); // m = bad
    base64_decode ('ZnJlZQ=='); // m = free
    Нашел решение с помощью сокетов. Вот полностью рабочая функция:

    PHP:
    function checkococc($domain){
    // m=YmFk - no
    // m=ZnJlZQ== - ok
        
    $host 'www.co.cc';
        
    $service_uri '/regist/domain_find_proc.php';
        
    $vars ='domain='.$domain;
     
        
    $header "Host: $host\r\n";
        
    $header .= "User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\r\n";
        
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
        
    $header .= "Referer: http://www.co.cc/ \r\n";
        
    $header .= "Content-Length: ".strlen($vars)."\r\n";
        
    $header .= "Connection: close\r\n\r\n";
     
        
    $fp fsockopen("".$host,80$errno$errstr);
     
        if (!
    $fp) {
            echo 
    "$errstr ($errno)<br/>\n";
            echo 
    $fp;
        } else {
            
    fputs($fp"POST $service_uri  HTTP/1.1\r\n");
            
    fputs($fp$header.$vars);
            
    fwrite($fp$out);
     
            while (!
    feof($fp)) {
                
    $linefgets($fp128);
                
    $out[]=$line;
            }
            
    fclose($fp);
        }
        
    $location $out[6];
        if (
    preg_match_all'#ZnJlZQ==#is'$location$matches )) {
            
    $check '<font color="green">свободен</font>';
        } else {
            
    $check =  '<font color="red">занят</font>';
        }
        echo 
    $check;
    }
    Но хотелось бы работать с curl'ом. Что нужно еще добавить в скрипт из первого поста, чтобы он заработал?
     
  6. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    Курл Очень скуп на заголовки
    PHP:
     
    $domen 
    'test';
    $curl curl_init();
    curl_setopt($curlCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
    curl_setopt($curlCURLOPT_URL'http://www.co.cc/regist/domain_find_proc.php');
    curl_setopt($curlCURLOPT_HTTPHEADER,
     
    array(
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8''Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3''Connection: keep-alive'
     
    )
    );
     
    curl_setopt($curlCURLOPT_POST1);
     
    curl_setopt($curlCURLOPT_POSTFIELDS"domain=$domen");
    curl_setopt($curlCURLOPT_REFERER'http://www.co.cc/');
    curl_setopt($curlCURLOPT_FOLLOWLOCATIONfalse);
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);
    curl_setopt($curlCURLOPT_HEADER1);
     
    $resultcurl_exec($curl);
     
    curl_close ($curl);
    if(
    preg_match('~ZnJlZQ==~'$result)){
    echo 
    "$domen Свободен";
    }else{
    echo 
    "$domen Занят";
    }
     
    alexz15 нравится это.