웹페이지 크롤링 목적으로 만든 소스가 디도스로 오인될 수 있다면..
글쓴이: koreaccm / 작성시간: 목, 2012/11/29 - 6:14오후
안녕하세요,
회사의 업무 효율을 높이지고 웹페이지 크롤링하는 코드(Python)를 짜봤습니다.
예를 들면 네이버 특정 페이지에 수천개의 쿼리를 입력하고 판단하는 일입니다.
문제는 이 코드가 아무리 interval term 을 주더라도
웹사이트에서 d-dos로 인식될 염려가 있다는 것입니다.
그리고 아주 초보수준으로 만든 코드(Python)다 보니
검색엔진에서 의미하는 제대로 된 크롤러라고도 볼 수 없구요.
D-dos로 오인될 수 있다는 이 문제를 어떻게 돌파할 수 있을까요?
어떤 열린 답변이라도 부탁드립니다.
사실 처음 만들어봤던 프로그램인데 이런 벽에 막히고
다음의 방향성을 잃어버리니 한동안 손을 놓고 있었습니다.
'막연히 검색엔진에 대해서 공부하면 될까?' 하는 생각뿐이네요.
(소스 공개는 너무 기초 수준이라 별 의미가 없을 것 같아서 하지 않을게요 ㅜ)
Forums:
엇.. 죄송합니다.
와이파이라 느려서 버튼을 두 번 눌렸더니 연속 2개가 .... 죄송합니다. (_ _)
크롤링 하고자 하는 사이트의 robots.txt를
크롤링 하고자 하는 사이트의 robots.txt를 일단 준수하세요.
예를 들면 http://kldp.org/robots.txt 같은거 말이죠...
네이버의 API약관이나 사용약관이 있을텐데 거기에
네이버의 API약관이나 사용약관이 있을텐데 거기에 뭔가 적혀있을 것 같네요. 아니면 네이버 고객센터에 문의하시는게 정확하고 빠를겁니다.
업무 효율이 많이 좋아진다면 네이버에 돈 내고 쓰시면 될 것 같은데요.
피할 수 있을때 즐겨라! http://melotopia.net/b
일단 robots.txt를 준수하시는게
일단 robots.txt를 준수하시는게 맞습니다.
그리고 하루에 crawl할 페이지 단위가 많이 크지 않으면 좋을 것 같은데
관련 논문을 먼저 찾아보시는게 좋을 것 같네요 : )
그리고 DDOS Block 솔루션들이 어떠한 원리로 ip를 filtering하고 block하는지 찾아보시는게 좋겠네요 : )
방문해야 하는 페이지 수를 한정한 뒤에 그 페이지만 방문하는 서버들을 여러대로 나누어서 작업하는게 ip block 조건을 완화 하는데 도움이 될 것 같아요.
(예를 들면 다른 IP 대역 컴퓨터를 Round Robin으로 돌리면 interval 을 줄일 수 있겠죠)
그리고 crawl은 동적 페이지나 환경 link와 같은 경우 무한 loop을 돌 수 있기 때문에 a tag에 걸려있는 link는 보통 3 depth까지 들어갑니다.
그리고 이미 방문한 페이지를 다시 방문하지 않도록 이미 방문한 목록 데이터를 가지고 있으며 방문 주기도 결정하게 되겠죠.
crawl을 한다 쳐도 특정 페이지에 있는 특정 패턴의 컨텐츠를 긁어올 것인지에 따라 crawler 로직이 조금씩 다를 것이고요
긁어온 페이지를 검색엔진에 어떻게 노출할 것이며 어디까지 보여줄 것인지는 indexer에 등록하는 정책마다 다를 것입니다.
그리고 긁어온 페이지를 indexer에 등록하면서 어떤 tag나 keyword를 검색에서 노출하게 할 것인지(stemming)는 또 다른분야고요..
막연히 crawler를 만들기 보다는 기존에 나와있는 검색 이론 관련 서적을 먼저 공부하시고 배경 지식을 탄탄히 하시는게 좋을 것 같습니다.
검색은 crawler 말고도 해야 할 게 너무나 많아요 ㅎㅅㅎ
감사합니다. 여러분
이렇게 답답한 질문에도 불구하고
좋은 답변들 주셔서 감사드립니다.
이번에도 좋은 배움의 방향을 얻은 것 같습니다.
감사합니다. 여러분.
댓글 달기