1580, 75/79 회원가입  로그인  
   kjwon15
   http://kjwon15.comoj.com
   [자작] 웹봇을 만들어 보자.

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1383 [복사]


일단
웹봇: 웹을 돌아다니면 정보를 수집하는 프로그램
일반적으로 구글봇이 제일 유명합니다.

구글봇같은 위대한(?) 프로그램 까지는 못만들고.. 일단 원리부터 알아봅시다.
일단 초기의 주소를 줍니다.
(예를 들어서 www.google.com)
그러면 일단 그 페이지의 소스를 봇이 다운을 받습니다.
그리고 나서 각종 링크를 수집합니다.
구글을 예로 들면 http://images.google.com등이 있습니다.
그러면 또 그 페이지를 다운 받습니다.
또 분석을 합니다.

무한히 루프를 돕니다...(뭐?)

그러면 일단 간단하게 만들어 봅시다.

파이썬으로 작성할겁니다.(C로 짜면 소켓부터해서 심각합니다.)

일단 vim webbot.py를 입력해서 편집상태로 들어갑니다.
일단 소스를 놓고 시작하겠습니다.
#!/usr/bin/python

import urllib2, re, string
enter_point ='http://' +  raw_input('enter url: ') # enter point
db_name = 'base.txt' # input data base name

def uniq(seq):
        set = {}
        map(set.__setitem__, seq, [])
        return set.keys()

def geturls(url):
        items = []
        request = urllib2.Request(url)
        request.add_header('User-Agent', 'iBot ;)')
        content = urllib2.urlopen(request).read()
        items = re.findall('href="http://.*?"', content)
        urls = []
        for item in items:
                item = item.replace('href=','')
                item = item.replace('"','')
                urls.append(item)
        return urls

db = open(db_name,'w')
allurls = uniq(geturls(enter_point))

for url in allurls:
        urls = geturls(url)
        for u in urls: allurls.append(u)
        allurls = uniq(allurls)
        db.write(string.join(urls,'\n'))
        print url+' ['+str(len(allurls))+']'
db.write('\n\n')
db.close()

첫줄에 #!/bin/python을 입력합니다.
이건 셸스크립트의 기본입니다.

그리고 import urllib2, re, string를 추가합니다.
import는 C언어의 #include와 비슷합니다. 그냥 urllib2,re,string 이 3개의 라이브러리를 로드한다고 생각하겠습니다.

그리고 처음으로 씨앗 url값을 입력받아야 합니다.
입력받기 위해 enter_point ='http://' +  raw_input('enter url: ') 를 추가합니다.
그러면 http://입력받은값 이 enter_point라는 변수에 저장됩니다.

그리고 링크를 분석해야 하는데 가장 기본적인 링크인 <a>태그를 따라갈 겁니다.
a태그의 구조중 중요한 부분은 href="url" 입니다.
그래서 중간에
item = item.replace('href=','')
item = item.replace('"','')
라는 코드가 들어갑니다.

request.add_header('User-Agent', 'iBot ;)') 이부분은 브라우저의 이름입니다. 파이어폭스로 브라우징을 하면 이 부분이 파이어폭스의 고유 문자열이 들어갑니다.

아무튼 어떻게든 해서 문자열들을 얻어 왔습니다.
이걸 base.txt에 저장하게 됩니다.





이런강좌는 처음써서 엉망이네요 ....

나중에 수정을 하겠습니다.(라고 해놓고 언제할까..)

  Hit : 14886     Date : 2010/02/08 04:52



    
싫어 내가할꺼야 무슨언어이죠? 파이썬이라는거인가 ㅇㅂㅇ.. 2010/02/08  
kjwon15 실어 내가할꺼야// 내 파이썬 맞습니다. 2010/02/09  
sorucA 나름 정말 괜찮은 예제라고 생각합니다.
meta tag 분석 등등까지 해서 db에 저장하고
django하고 연동시키면 간단한 검색엔진 하나가 완성되겠네여 'ㅁ'
2010/02/10  
싫어 내가할꺼야 다시읽어보니 글에 파이썬으로한다고나와있네요;; 이해는 하나도 안가지만 생각보다 웹봇만드는게 간단하네요?? 2010/02/10  
sorucA └ 파이썬이 매우 간단해서 그래여 2010/02/11  
싫어 내가할꺼야 그런가요? 파이썬도배워봐야겠네요 ㅎㅎ 파이썬은 주로 어디에 사용되나요?? 2010/02/11  
sorucA └ 여기저기 다 쓰일 수 있습니다. 일반 어플리케이션, 서버단 어플리케이션, 웹페이지 등등.. 2010/02/12  
싫어 내가할꺼야 답변 감사합니다 ㅎㅎ 파이썬도공부해볼게요! 2010/02/12  
qkreoghks00 우와 파이썬 왜 나는 첨듣는 언어이름이지?

이쯤에서 스타맵 생각난 사람 손
2010/02/23  
dkdkfjgh ㄴ손.. 이라고 하기보다 그 맵 나오기 이전에 안 ㅋ 2010/02/25  
Cpgroot 이해가안되.. 2010/08/18  
100   허접 팁 Setuid 쉽게 찾기 -_-;[3]     ttongfly
09/10 14655
99   [자작] W's 암호학(Cryptology) - 에니그마[3]     williamlee
08/06 14667
98   리눅스 설치 + Windows설치(생초보에게 좋은 강좌)!![3]     승리의박성환
04/15 14674
97   레이스 컨디션(경쟁 조건)[14]     소유
09/06 14715
96   [링크+자작] 텔넷관련과 텔넷이 안될때의 해결법과 한글깨짐[6]     초콜렛나인
03/02 14726
  [자작] 웹봇을 만들어 보자.[11]     kjwon15
02/08 14885
94   네트워크 개념 휘어잡기 2[16]     소유
09/11 14887
93   리눅스설치후 윈도우 설치 & grub 복구     exit96m
03/02 14896
92   맥북 프로 한영전환 키보드 레지스트리[6]     푸른하늘
10/21 14947
91   [펌] PC키퍼 깨기[4]     dzhfldk
08/22 14986
90   버퍼오버플로우 by 오하라[3]     소유
07/07 15022
89   리눅스 명령어 마스터 5[8]     소유
09/06 15283
88   [자작] 구글 검색법[13]     초콜렛나인
02/08 15317
87   Xp Best Tip 30가지!!(그대는 알고있는가???)[23]     chagang531
09/13 15412
86   Overflow 공격 기법들에 대한 정리 by 버스트     소유
07/07 15418
85   꼭배우실길바람니다[5]     netwow1
12/14 15616
84   VI편집기 명령어 및 사용법 정리[6]     ntmaster99
09/16 15645
83   [특별] find 명령어[7]     소유
09/09 15698
82   [펌] 공유 메모리 멀티 프로세서(Shared Memory Multiprocessor, SMP)     qpt0707
03/05 15741
81   [간단] 모스부호표 입니다.[6]     푸른하늘
05/09 15753
[1]..[71][72][73][74] 75 [76][77][78][79]

Copyright 1999-2023 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com