Zone-H.kr 검색기

이전에 만들어 놓았던 코드를 좀 다듬어서 올려 봅니다.

Zone-H.kr 사이트는 Zone-H 사이트에 Defacing 당해 올라오는 리스트 중 국내 사이트만 추려서 보여주는 사이트 입니다.
이 사이트에 대한 간단한 소개 인터뷰가 있어 링크를 걸어 봅니다. [링크]

제가 작성한 스크립트는 다음과 같은 기능을 수행합니다.

1. 특정일에 Defacing 된 사이트 리스트 출력
2. 특정 기간을 지정하여 Defacing 된 사이트 리스트 출력
3. 위 1, 2번 옵션을 사용하여 나오는 리스트 중 특정 문자열이 들어간 도메인만 출력

사용방법은 아래와 같습니다.

1. 특정일에 Defacing 된 사이트 리스트 출력 (2009년 1월 1일)
- Search_ZoneH.py -s 2009-01-01

2. 특정 기간을 지정하여 Defacing 된 사이트 리스트 출력 (2009년 1월 1일 ~ 2009년 1월 31)
- Search_ZoneH.py -s 2009-01-01 -e 2009-01-31

3. 위 1, 2번 옵션을 사용하여 나오는 리스트 중 특정 문자열이 들어간 도메인만 출력
(2009년 1월 1일 ~ 2009년 1월 31 중 도메인 이름에 "ac.kr" 이 들어가는 리스트만 출력)
- Search_ZoneH.py -s 2009-01-01 -e 2009-01-31 -f ac.kr
#!/usr/bin/python
import httplib, re, sys, optparse
from datetime import date

def main():
    usage = "Usage: %prog [options] YYYY-MM-DD"
    p = optparse.OptionParser(usage)
    p.add_option('-s', '--start', help='Ex) 2010-01-02')
    p.add_option('-e', '--end', help='Ex) 2010-01-02')
    p.add_option('-f', '--find', help='Search Domain')
    options, args = p.parse_args()

    if options.start == None:
        p.error('Check Option plez....')
        sys.exit(1)

    if options.end == None: # Only -s option.
        Parser1(options.start, options.find)

    elif options.start != None and options.end != None:
        Parser2(options.start, options.end, options.find)

def Parser1(str, find):
    option1 = str[0:4]
    option2 = str[0:7]
    option3 = str
    r = Search(option1, option2, option3)
    flag = 1
    for x in r:
        if find != None:
            try:
                if re.search(find, x).group() == find:
                    if flag == 1:
                        print ''
                        print '+------------------------------+'
                        print '|         ' + option3 + '           |'
                        print '+------------------------------+'
                        flag = 0
                    print x

            except:
                continue
        else:
            if flag == 1:
                print ''
                print '+------------------------------+'
                print '|         ' + option3 + '           |'
                print '+------------------------------+'
                flag = 0
            print x

def Parser2(str1, str2, find):
    start_y = str1[0:4]
    start_m = str1[5:7]
    start_d = str1[8:10]

    end_y = str2[0:4]
    end_m = str2[5:7]
    end_d = str2[8:10]

    start = date(int(start_y), int(start_m), int(start_d))
    end = date(int(end_y), int(end_m), int(end_d))

    while 1:
        option = str(start)
        option1 = option[0:4]
        option2 = option[0:7]
        option3 = option

        r = Search(option1, option2, option3)
        flag = 1
        for x in r:
            if find != None:
                try:
                    if re.search(find, x).group() == find:
                        if flag == 1:
                            print ''
                            print '+------------------------------+'
                            print '|         ' + str(start) + '           |'
                            print '+------------------------------+'
                            flag = 0
                        print x

                except:
                    continue
            else:
                if flag == 1:
                    print ''
                    print '+------------------------------+'
                    print '|         ' + str(start) + '           |'
                    print '+------------------------------+'
                    flag = 0
                print x

        if start == end:
            sys.exit(1)

        flag = 1

        try:
            start = start.replace(day = start.day + 1)
        except:
            try:
                start = start.replace(month = start.month + 1, day = 1)
            except:
                start = start.replace(year = start.year + 1, month = 1, day = 1)

def Search(option1, option2, option3):
    if option1 == '2010':
        option1 = '/'
    conn = httplib.HTTPConnection('zone-h.kr')
    conn.request('GET', '/korea_Defaced/' + option1 + '/' + option2 + '/' + option3 + '/')
    r1 = conn.getresponse()
    data = r1.read()
    search = re.findall('<a href=.+ target=new>', data)

    list = []
    for x in search:
        tmp = re.sub('<a href=', '', x)
        list.append(re.sub(' target=new>', '', tmp))

    return list

if __name__ == "__main__":
    main()

Zone-H 사이트에 부하를 주려나요? -_-
혹시라도 Zone-H.kr 사이트 관리자분께서 이 포스팅을 보시게 된다면 보시고 사이트에 부하가 될거 같으면 코멘트 달아주시기 바랍니다...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다