Community코딩 & 개발github.com

MXAntian/xhs-cdp-스크래핑-스킬

실제 로그인된 Chrome에 CDP를 연결하여 Xiaohongshu (RED) 게시물과 댓글을 스크래핑하는 Claude Code 스킬입니다. X-S/X-T 서명을 리버스 엔지니어링하지 않고 우회합니다.

xhs-cdp-스크래핑-스킬란 무엇인가요?

이 스킬은 Chrome DevTools Protocol(CDP)을 활용하여 Xiaohongshu (RED)에서 게시물과 댓글 데이터를 추출하는 방법을 제공합니다. 실제 사용자로 로그인된 Chrome 브라우저에 연결함으로써 Xiaohongshu의 복잡한 X-S 및 X-T 서명 검증 메커니즘을 리버스 엔지니어링하거나 구현할 필요 없이 우회합니다. 주로 Claude Code 환경에서 사용되지만, Node.js 및 Puppeteer를 지원하는 모든 AI 코딩 에이전트와도 호환됩니다. 이 접근 방식은 브라우저의 인증된 세션과 CDP 명령을 사용하여 데이터를 가져오므로 안정적이며, 실제 사용자 상호작용을 시뮬레이션하여 봇 감지를 회피하는 데 효과적입니다. 스킬은 CDP 연결 설정, 대상 URL 구성, JavaScript 실행을 통한 데이터 추출, JSON 형식의 결과 반환을 자동화합니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add MXAntian/xhs-cdp-scraping-skill

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

xhs-cdp-스크래핑-스킬은(는) 무엇을 하나요?

Claude Code가 실제 로그인된 Chrome 브라우저에 CDP(Chrome DevTools Protocol)를 연결하여 Xiaohongshu (RED) 게시물과 댓글을 스크래핑할 수 있게 해주는 스킬입니다. X-S/X-T 서명을 리버스 엔지니어링하지 않고 우회합니다.

작동 방식

  1. CDP 연결 — chrome-remote-interface 라이브러리를 사용하여 로컬에서 실행 중인 Chrome 인스턴스에 연결합니다.
  2. 세션 재사용 — 이미 로그인된 Chrome 탭을 사용하므로 별도의 인증 토큰이나 쿠키 처리 없이 Xiaohongshu의 서명 검증을 우회합니다.
  3. 데이터 추출 — CDP 명령을 통해 페이지를 탐색하고 JavaScript를 실행하여 동적 콘텐츠를 추출합니다.
  4. 결과 반환 — 스크래핑된 데이터를 JSON 형식으로 반환하거나 파일로 저장합니다.

주요 기능

  • 게시물 스크래핑: URL을 기반으로 단일 게시물의 상세 정보, 이미지, 동영상 등을 추출합니다.
  • 댓글 스크래핑: 특정 게시물의 모든 댓글과 답글을 수집합니다.
  • 무제한 액세스: 로그인된 세션을 사용하므로 속도 제한이나 IP 차단 위험이 낮습니다.

요구 사항

  • Node.js (v16 이상)
  • 실행 중인 Chrome 인스턴스 (원격 디버깅 포트 활성화, 예: --remote-debugging-port=9222)
  • Chrome에 로그인된 Xiaohongshu 계정

설치

npm install chrome-remote-interface

사용법

1. Chrome을 원격 디버깅 모드로 실행

chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-profile

이미 Chrome이 실행 중인 경우, 기존 인스턴스를 닫고 위 명령어로 다시 실행하세요.

2. Claude Code에 스킬 불러오기

Claude Code 세션에서 이 스킬을 활성화하면 프롬프트를 통해 사용할 수 있습니다.

3. 예제 프롬프트

Claude, Xiaohongshu 게시물의 내용과 댓글을 스크래핑해줘.
URL: https://www.xiaohongshu.com/explore/123456789

123456789를 실제 게시물 ID로 교체하세요.

스크립트 예제

다음은 독립 실행형 Node.js 스크립트 예제입니다:

const CDP = require('chrome-remote-interface');

async function scrapeXHS(targetUrl) {
    let client;
    try {
        client = await CDP({ host: '127.0.0.1', port: 9222 });
        const { Page, Runtime } = client;

        await Page.enable();
        await Page.navigate({ url: targetUrl });
        await Page.loadEventFired();

        // 페이지 제목 추출
        const { result } = await Runtime.evaluate({
            expression: 'document.title'
        });
        console.log('페이지 제목:', result.value);

        // 게시물 내용 추출 (예시)
        const contentResult = await Runtime.evaluate({
            expression: `JSON.stringify({
                title: document.querySelector('.title')?.innerText || '',
                content: document.querySelector('.content')?.innerText || ''
            })`
        });
        console.log('게시물 데이터:', contentResult.value);

    } catch (err) {
        console.error('오류:', err);
    } finally {
        if (client) await client.close();
    }
}

// 사용 예
scrapeXHS('https://www.xiaohongshu.com/explore/123456789');

중요 참고 사항

  • 로그인 필수: 스크래핑하려는 데이터에 액세스하려면 Chrome에 Xiaohongshu 계정이 로그인되어 있어야 합니다.
  • CDP 포트: Chrome을 시작할 때 --remote-debugging-port=9222 플래그가 반드시 포함되어야 합니다.
  • 보안: 이 스킬은 로컬 머신에서만 실행하세요. 원격 디버깅 포트를 외부에 노출하지 마십시오.
  • 법적 준수: 스크래핑하기 전에 Xiaohongshu의 이용약관을 확인하세요. 이 스킬은 교육 및 연구 목적으로 제공됩니다.

문제 해결

  • 연결 거부됨: Chrome이 원격 디버깅 포트로 실행 중인지 확인하세요.
  • 인증 오류: Chrome 브라우저에서 Xiaohongshu에 로그인되어 있는지 확인하세요.
  • 데이터 없음: 게시물 URL이 올바른지, 게시물이 존재하는지 확인하세요.

라이선스

MIT

관련 스킬