게시판 등록기(보드 스파이더 등) 내부 알고리즘 아시는분?

park712의 이미지

게시판 자동 글 등록기 예를 들어 보드 스파이더 와 같은 프로그램이
어떤 원리에 의해서 게시판에 글을 등록하고, 또한
프로그램에서 게시판 db 수집하는 기법이 어떻게 해서
구현하시는지 아시는분?
아래는 게시판 글 등록기의 특징을 적어 놓은 것입니다.
어떻게 프로그램에서 HTML 코드를 모두 분석하죠?
한번에 수십만개의 게시판에 포스팅 한다는것도
내부 프로그램이 어떻게 돌아가면서 포스팅 한다는건지요?
등록여부 확인도 .. 수십만개의 게시판을 어떻게 확인한다는건지?
이와 관련 참고할 만한 도서가 있는지요?
너무 궁금해서요.


1) 수동으로 특정 게시판 추가 가능
게시판의 쓰기페이지만 지정하면 프로그램에서 자동분석하여 각 필드를 자동으로 구분, 테스트후 저장

2) 한번에 수십만 개의 게시판에 포스팅 가능
쉬운 게시판 선택 기능에 의해서 선택된 게시판에 한번에 동일한 광고글을 다량으로 포스팅 가능

3) 포스팅 후 글의 등록여부 확인 가능
게시판 저장시 게시판 쓰기 주소만을 저장하지 않고 목록 주소도 함께 저장되기 때문에 게시판 목록
페이지에서 자신이 글올린 게시판에 글이 등록되었는지 확인 가능

4) 그룹별, 저장된 날짜별, 마지막 글 올린 일별로 선택적 포스팅 가능
보기 원하는 정렬방법으로 나의 컴퓨터에 저장된 게시판 리스트를 직관적으로 볼 수 있음

5) 일별/월별 글올리기 결과 통계 기능
일별, 월별 글올린 내용과 결과를 달력형식으로 한눈에 볼 수 있음

6) 시스템 사양에 맞게 설정옵션을 변경하여 최적의 포스팅 가능
게시판 포스팅시 게시판이 업로딩에 대기하는 최대 시간값을 지정하여 자신의 컴퓨터 시스템 사용과
인터넷 환경에 맞게 조절 가능

행복한고니의 이미지

그런 등록기를 제대로 본 적이 없어서 확실치는 않지만 생각보다 어려운 일도 아니라고 생각합니다.

1. HTML 분석 필요없습니다. OLE 객체로 접근하면 되는데요. 그러면 웹브라우저 객체를 직접 만들어서 자바스크립트 하듯이 DOM으로 접근, 값 변경 등등을 하면 됩니다.

2. 1번과 같은 방법으로 document.forms 객체를 뒤져보면 글이 있는 곳을 알 수 있게 되죠. 특히 유명 게시판 프로그램같은 경우에는 지정된 필드의 이름들을 바꿀 수 없으니까, 더 편하게 할 수 있습니다. 그렇지 않더라도, textarea 가 반드시 있어야 하는점, 일반적인 password 폼의 위치 등등을 고려한다면 그리 어려운 작업은 아닌 것 같습니다.

3. submit 해서 제대로 등록이 되었는지 아닌지의 차이는... submit 이후의 리턴받은 HTML에서 특정 메시지만 찾아내면 될 일입니다.

그리 내키지 않는 일이라 만들어보지는 않았지만, 대충 저런식으로 가면 될 거라고 생각합니다. 만들지 않은 제가 생각한 것으로도 몇군데는 충분히 될 것 같은데, 하루종일 그것만 만드시는 분들은 어떻겠어요. ^^;;

__________________________________
나는 세상에서 가장 중요한 사람이다.

Necromancer의 이미지

cgi 인터페이스가 어떻게 작동하는지 설명하는 책을 보시기 바랍니다.

ole 전혀 필요없습니다. http 프로토콜과 웹문서 분석을 하는 수준으로 됩니다.

Written By the Black Knight of Destruction

Seyong의 이미지

이런거 그리 어려운거 아닙니다.

윗분 말씀대로 http 1.1하고 html 4.0만 알면 됩니다.

거의 똑같은 기능의 프로그램을 만들어 봤는데 소스가 그리 크지도 않습니다.
(스팸용 아닙니다. 호스팅 회원사의 게시판에 공지 올리는 용도로 썼습니다.)

비슷하게, 허접한 이벤트는 자동응모 프로그램을 만들어서 금방 1등할 수 있습니다.

다음, 야후에서 하는 이벤트에 프로그램으로 응모해서 당첨된적이 있었죠..

lkjt의 이미지

엄세용 wrote:

다음, 야후에서 하는 이벤트에 프로그램으로 응모해서 당첨된적이 있었죠..

정상적인 루트로 응모하지 않은 것은 무효 처리 안되던가요..?

Seyong의 이미지

무효처리 됩니다.

저는 최대한 사람이 한것과 비슷하게 루프를 돌려서 안 걸린 것 같습니다.

방법은 간단합니다. msie로 한번 해본다음 그걸 스니핑해두고 똑같이 http request/response 하는겁니다. 그리고 타이밍을 조절하는 것이죠. 최대한 인간인 것처럼.... ^^