네이버 카페(가입)
플레이그라운드에서 수집 →채널 코드 naver_cafe_member · 수집 환경 linux
회원 전용 네이버 카페에서 키워드로 글을 수집합니다. 네이버 아이디·비밀번호로 실제 브라우저 로그인 후 검색하며, 세션(쿠키)은 워커가 재사용합니다(비밀번호는 마스킹·로그 미기록). 카페는 슬러그/URL만 넣으면 cafe_id를 자동 해석합니다(예: robotclear). 제목·본문(collect_body)·댓글(collect_comments)·기간(start/end_date)을 지원합니다. ⚠️ 로그인이 필요한 채널이라 차단에 민감 — 과도한 호출/짧은 간격은 피하세요.
요청 파라미터
아래 값들을 POST /api/v1/collect 의 params 객체에 담아 보냅니다.
| 키 | 타입 | 필수 | 기본 | 설명 |
|---|---|---|---|---|
| cafe | text | 예 | — | 카페 슬러그 또는 주소(예: robotclear 또는 https://cafe.naver.com/robotclear). 숫자 cafe_id는 자동 해석 |
| keyword | text | 예 | — | 카페 내 검색 키워드 |
| naver_id | text | 예 | — | 회원 전용 카페 접근용. 세션은 쿠키로 재사용됨 |
| naver_pw | password | 예 | — | 마스킹 입력. 로그/응답에 노출되지 않습니다 |
| limit | number | — | 100 | 최대 수집 글 수 |
| max_pages | number | — | 10 | 검색 결과 페이지 탐색 한도 |
| start_date | date (YYYY-MM-DD) | — | — | 비우면 제한 없음. 최신순이라 이 날짜 이전 글을 만나면 종료 |
| end_date | date (YYYY-MM-DD) | — | — | 당일 포함. 비우면 오늘까지 |
| cafe_menu | text | — | — | 특정 게시판만. 비우면 0(전체글) |
| collect_body | bool | — | true | 글 상세를 받아 본문·정확한 시각 보강 |
| collect_comments | bool | — | false | 상세의 댓글까지 수집(각 글 extra.comments[]) |
| exclude_keywords | text | — | — | 이 단어가 들어간 글은 제외. 쉼표로 여러 개, 한 단어 안 띄어쓰기 허용 |
수집 기간(
검색은 최신순이라 위에서부터 훑어 내려갑니다.
start_date ~ end_date)검색은 최신순이라 위에서부터 훑어 내려갑니다.
- 둘 다 비우면 → 가장 최신 글부터
limit개수까지 수집합니다. start_date만 → 그 날짜 이후 글만 (그보다 오래된 글을 만나면 수집 종료).end_date만 → 그 날짜까지(당일 포함). 그보다 최신 글은 건너뜁니다.- 둘 다 → 두 날짜 사이 구간만 수집.
제외 키워드(
이 단어가 들어간 글은 수집 단계에서 걸러집니다. 쉼표(
exclude_keywords)이 단어가 들어간 글은 수집 단계에서 걸러집니다. 쉼표(
,)로 여러 개를 넣고,
한 단어 안에 띄어쓰기도 쓸 수 있습니다(예: "무료 나눔, 광고" → 무료 나눔·광고 두 개).
대소문자는 구분하지 않고 부분 일치로 판정합니다.
- 기본은 제목 기준 — 상세 요청을 보내기 전에 걸러서 빠르고, 수집 상한(
limit)도 차감하지 않습니다. - 본문 수집(
collect_body: true)을 켜면, 이미 받아온 본문에서도 한 번 더 걸러냅니다(추가 요청 없음). - 비우면 → 제외 없이 전부 수집.
댓글 수집(
기본은 제목·본문만 HTTP로 빠르게 수집합니다. 댓글까지 받으려면 이 값을 켜세요. 댓글은 JS로 로드되어 글마다 Chrome으로 접속하므로 시간이 더 걸립니다(댓글 0개 글은 건너뜀). 수집된 댓글은 각 글의
collect_comments: true)기본은 제목·본문만 HTTP로 빠르게 수집합니다. 댓글까지 받으려면 이 값을 켜세요. 댓글은 JS로 로드되어 글마다 Chrome으로 접속하므로 시간이 더 걸립니다(댓글 0개 글은 건너뜀). 수집된 댓글은 각 글의
extra.comments[] 배열에 담깁니다.
로그인 실패 시 동작 — 자격증명·인증 오류는 즉시 종료(재시도 없음)
회원 전용 카페라 네이버 로그인이 필요합니다. 아래 오류는 다시 시도해도 같은 결과이고, 반복 로그인은 계정 잠금까지 부를 수 있어 한 번 시도 후 곧바로
회원 전용 카페라 네이버 로그인이 필요합니다. 아래 오류는 다시 시도해도 같은 결과이고, 반복 로그인은 계정 잠금까지 부를 수 있어 한 번 시도 후 곧바로
failed로 끝냅니다(자동 재시도 안 함).
일시적 오류(페이지 로드 실패·네트워크 등)만 기존처럼 재시도합니다. 사유는 GET /requests/{id}의 error로 옵니다.
네이버 로그인 실패 — 아이디/비밀번호 확인→naver_id·naver_pw값을 다시 확인하세요.네이버 캡차(보안문자) / 새 기기 인증 / 2단계 인증 필요→ 해당 계정으로 이 수집 서버에서 1회 수동 로그인·인증 후 다시 요청하세요(이후 세션 쿠키 재사용).회원 전용 카페 — 접근 불가/cafe_id 자동 해석 실패→ 그 계정이 카페에 가입(회원)되어 있는지,cafe슬러그/URL이 맞는지 확인하세요.
※
naver_id·naver_pw를 아예 빼고 보내면 요청 즉시 422 invalid_params로 거부됩니다(잡 생성 안 됨). 위 failed는 값은 보냈으나 틀렸을 때입니다. 비밀번호는 로그·응답 어디에도 노출되지 않습니다.요청 예시
curl -X POST https://scraper.conbus.co.kr/api/v1/collect \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel": "naver_cafe_member",
"params": {
"cafe": "robotclear",
"keyword": "로얄캐닌",
"naver_id": "your_naver_id",
"naver_pw": "YOUR_PASSWORD",
"limit": 100,
"max_pages": 10,
"start_date": "2026-06-01",
"end_date": "2026-06-15",
"collect_body": true,
"collect_comments": true,
"exclude_keywords": "광고, 협찬"
}
}'
응답 (202 Accepted)
요청은 즉시 큐에 적재되고 request_id 를 돌려줍니다. 실제 수집은 워커가 비동기로 처리합니다.
{ "success": true, "data": { "request_id": 42, "channel": "naver_cafe_member",
"status": "pending", "status_url": "https://scraper.conbus.co.kr/api/v1/requests/42" } }
결과 조회 — GET /requests/{id}
같은 API 키로 request_id 를 조회합니다. 상태에 따라 응답이 달라집니다.
진행 중 (pending / running)
아직 끝나지 않았으면 progress 로 진행 상황만 옵니다(items 없음).
{
"success": true,
"data": {
"request_id": 42,
"channel": "naver_cafe_member",
"status": "running",
"external_ref": null,
"result_count": null,
"started_at": "2026-06-16T09:00:05+09:00",
"finished_at": null,
"duration_ms": null,
"duration_sec": null,
"created_at": "2026-06-16T09:00:00+09:00",
"updated_at": "2026-06-16T09:01:30+09:00",
"progress": {
"count": 12,
"phase": "comments"
},
"elapsed_ms": 85000
}
}
완료 (done) — 댓글 포함
status 가 done 이면 data.items[] 에 결과가 담깁니다.
실패 시엔 status: "failed" 와 error 가 옵니다.
{
"success": true,
"data": {
"request_id": 42,
"channel": "naver_cafe_member",
"status": "done",
"external_ref": null,
"result_count": 1,
"started_at": "2026-06-16T09:00:05+09:00",
"finished_at": "2026-06-16T09:02:00+09:00",
"duration_ms": 115000,
"duration_sec": 115,
"created_at": "2026-06-16T09:00:00+09:00",
"updated_at": "2026-06-16T09:02:00+09:00",
"items": [
{
"post_id": "29434212/45678",
"url": "https://cafe.naver.com/f-e/cafes/29434212/articles/45678",
"title": "로얄캐닌 사료 한 달 후기",
"author": "냥집사",
"posted_at": "2026-06-10T14:22:00+09:00",
"views": 1532,
"comment_count": 8,
"recommends": null,
"body": "한 달 먹여봤는데 기호성이 좋네요 ...",
"source": "네이버 카페 / robotclear",
"extra": {
"cafe_id": "29434212",
"cafe_menu": "0",
"club_slug": "robotclear",
"article_no": "45678",
"source_kind": "cafe_member_search",
"comments": [
{
"comment_id": "998877",
"author": "멍멍이",
"text": "정보 감사합니다!",
"date": "2026-06-10 15:01:00",
"is_reply": false
},
{
"comment_id": "998901",
"author": "냥집사",
"text": "도움 되셨다니 다행이에요",
"date": "2026-06-10 15:10:00",
"is_reply": true
}
]
}
}
]
}
}
실패 (failed)
status 가 failed 면 error 에 사유가 옵니다(items 없음).
네이버 로그인 자격증명·인증 오류는 자동 재시도되지 않습니다(위 안내 참고).
{
"success": true,
"data": {
"request_id": 42,
"channel": "naver_cafe_member",
"status": "failed",
"external_ref": null,
"result_count": 0,
"started_at": "2026-06-16T09:00:05+09:00",
"finished_at": "2026-06-16T09:00:16+09:00",
"duration_ms": 11000,
"duration_sec": 11,
"created_at": "2026-06-16T09:00:00+09:00",
"updated_at": "2026-06-16T09:00:16+09:00",
"error": "네이버 로그인 실패 — 아이디/비밀번호 확인"
}
}
최상위 data에는 항상 request_id·channel·status·external_ref·result_count·started_at·finished_at·duration_ms·duration_sec·created_at·updated_at이 포함되고, 상태에 따라 items(done)·progress+elapsed_ms(진행 중)·error(failed/cancelled)가 추가됩니다. duration_*는 허브가 잰 수집 소요 시간(시작~종료) — 자세히는 비동기 & 콜백. 요청을 잘못 시작했다면 취소 API로 중단할 수 있습니다.
결과 필드 (items[])
| 필드 | 설명 |
|---|---|
| post_id | 글 고유 ID — 숫자 cafe_id/글번호. 재수집 중복 제거 키 |
| url | 원문 주소 |
| title / body | 제목 / 본문 — collect_body=false면 본문은 빈 값(목록에 본문이 없음), true면 전체 본문 |
| author | 작성자 닉네임 |
| posted_at | 작성 시각 (ISO8601, KST) |
| views / comment_count | 조회수 / 댓글 수 |
| recommends | 미제공 — 항상 null |
| source | 네이버 카페 / 슬러그(또는 숫자 cafe_id) |
| extra.cafe_id | 숫자 카페 ID(자동 해석) |
| extra.cafe_menu | 게시판 메뉴 ID(전체글=0) |
| extra.club_slug | 카페 슬러그 |
| extra.article_no | 글번호 |
| extra.source_kind | cafe_member_search |
| extra.comments | 댓글 배열(아래 표) — collect_comments=true일 때 |
채널 참고
- 회원 전용 카페라 네이버 로그인 세션이 필요합니다(허브 수집 인증). 목록에 조회수가 없는 레이아웃에서는 조회수가 0일 수 있습니다.
댓글 필드 (extra.comments[])
| 필드 | 설명 |
|---|---|
| comment_id | 댓글 고유 ID |
| author | 작성자 |
| text | 내용(디시콘만 있으면 대체 텍스트) |
| date | 작성 시각 |
| is_reply | 대댓글 여부(true=답글) |
결과 수신(폴링·콜백) 방식은 비동기 & 콜백을 참고하세요.