인터넷정보

실시간검색어 예제 - 다음(daum) 스타일

알 수 없는 사용자 2007. 10. 13. 15:37



 ex. http://211.238.15.54/~somekal/ajax/idx.php

 

다음(daum)에서 실시간 검색어 예제입니다.

4대 사이트 - <네이버, 다음, 엠파스, 야후> 에서 제일 이쁜놈으로 협찬받았습니다 ㅡㅡ;

키보드+마우스 완벽지원! 고광택 칼라(?), 깔끔한 소스

:: 데모사이트 → http://211.238.15.54/~somekal/ajax/idx.php

idx.php .... 시작파일
ajax_suggest.php ... 검색어 리스팅
ajax_query.php ... 검색어 조회 xml 페이지

그냥 거의 날로도 드실 수 있게 약간 편집해 놨습니다 ㅡㅡ;

ajax_suggest.php에서 '요기'라는 단어를 찾으면 쉽게 수정가능합니다.

훌륭한 소스를 만드신 다음(daum) 개발자님께 다시 한번 감사드립니다.

** 다음(daum)에서 컨닝한 사이트입니다. ***

daumtop_suggest.html ... 검색어 리스팅 페이지
http://sug.search.daum.net/top_nsuggest?q=홍 ... 검색어 조회 xml 페이지

** 후기 **

검색어 리스팅 페이지를 왜 아이프레임으로 따로 처리했나 궁금했는데
Ajax에서는 서브-도메인도 틀리면 안먹더라구요 ㅡㅡ;

ps. 본 예제를 올릴 수 있게 서버를 분양해 주신 '우하루'님께 감사드립니다 ^^

ps. 아래 소스 수정해 주세요. ㅡㅡ; (ajax_suggest.php)
    .daum.net으로 고정이 되었네요 ㅡㅡ;

function setCookie(name, value, expire) {
    var expire_date = new Date(expire)
    document.cookie! = name + "=" + escape(value) + "; path=/; expires=" + expire_date.toGMTString(); // + "; domain=.daum.net";
}



------------------------------------------------------------------------------------


ajax_query.php 파일을 아래와 같이 수정하세요.
다음(daum)꺼 소켓으로 퍼왔슴다 ㅡㅡ;
---------------------------------------------------------------------------------------

<?
    function sock_post($host, $target, $posts, $cookies, $referer='', $port=80) {
        if(is_array($posts)) {
            foreach($posts AS $name=>$value) $postValues .= urlencode($name) . "=" . urlencode($value) . '&';
            $postValues = substr($postValues, 0, -1);
        }
        $postLength = strlen($postValues);

        if(is_array($cookies)) {
            foreach($cookies AS $name=>$value) $cookieVal!ues .= urlencode($name) . "=" . urlencode($value) . ';';
            $cookieVal!ues = substr($cookieVal!ues, 0, -1);
        }

        $request  = "POST $target HTTP/1.1\r\n";
        $request .= "Host: $host\r\n";
        $request .= 'User-Agent: Mozilla/4.0\r\n';
        $request .= 'Accept: text/xml,application/xml,application/xhtml+xml,';
        $request .= 'text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,';
        $request .= "image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1\r\n";
        $request .= "Content-Type: application/x-www-form-urlencoded\r\n";

        if ($cookies) $request .= "Cookie: $cookieVal!ues\r\n";
        if ($referer) $request .= "Referer: $referer\r\n";

        $request .= "Content-Length: " . $postLength . "\r\n";
        $request .= "Connection: close\r\n";
        $request .= "\r\n";
        $request .= $postValues;

        $ret = '';
        $socket  = fsockopen($host, $port, $errno, $errstr, 100);
        fputs($socket, $request);
        while(!feof($socket)) $ret .= fgets($socket, 4096);
        fclose($socket);

        return $ret;
    }

    $posts  = array(); // 포스트
    $cookies = array(); // 쿠키
    $referer = "";      // 리퍼러
    $host = "sug.search.daum.net"; // 호스트
    $page = "/top_nsuggest?q=".urlencode($_GET['q']); // 페이지

    $buff = sock_post($host, $page, $posts, $cookies, $referer, 80);
    $data = strstr($buff, '<?xml');

    header("Content-Type: application/xml; charset=euc-kr");
    echo $data;
?>

반응형