블로그로 돌아가기

2026년 Reddit 데이터 수집 방법: API 제한, 비공식 .json 및 프록시의 역할

2026년 5월에 Reddit는 비인증된 .json을 차단하였고, robots.txt는 모든 항목에 대해 Disallow: /를 반환합니다. 공식 Data API의 실제 한계(100 QPM, 1000회 호출당 $0.24), 지속 가능한 파이프라인의 단계별 계획, 1000개 항목의 리스트 캡, 그리고 이 계획에서 프록시가 실제로 해결하는 작업과 해결하지 않는 작업에 대해 살펴봅니다.

📅2026년 7월 28일
2026년 Reddit 데이터 수집 방법: API 제한, 비공식 .json 및 프록시의 역할
```html

2026년 5월, Reddit는 인증되지 않은 .json 엔드포인트에 대한 접근을 차단했습니다. 이는 수년 동안 수십 개의 스크립트, 대시보드 및 개인 프로젝트가 의존했던 "URL에 .json을 추가하라"는 트릭입니다. 2026년 7월 28일 확인: 일반 브라우저 User-Agent로 https://www.reddit.com/r/webscraping/top.json?t=week에 요청을 보내면 403 Forbidden이 반환됩니다. 동시에 Reddit의 robots.txt에는 두 개의 중요한 줄만 포함되어 있습니다: User-agent: *Disallow: / — 공개 콘텐츠 정책을 참조합니다.

이는 "어떻게 우회할 것인가"가 아니라 이제 Reddit 데이터 수집 파이프라인을 어떻게 구축할 것인가를 변경합니다. 아래는 2026년을 위한 작업 흐름입니다: 실제로 접근 가능한 것, 어떤 한계가 있는지, 어디에 프록시가 필요한지, 그리고 어디에서 프록시가 도움이 되지 않는지에 대한 내용입니다.

무엇이 망가졌는가: 간단한 연대기

  • 2023년 6월 — Reddit는 고부하 애플리케이션을 위한 API 호출 1000회당 $0.24의 유료 요금을 도입했습니다. 결과: Apollo의 종료(개발자는 접근 비용을 연간 약 $2000만으로 평가했습니다), 대부분의 서드파티 클라이언트의 퇴출 및 Pushshift의 중단 — 게시물 및 댓글의 공개 아카이브로, 이는 절반의 학술 연구를 지탱하고 있었습니다.
  • 2026년 5월 — 인증되지 않은 .json의 사용 중단. "그냥 URL을 호출하는" 도구들은 작동을 멈췄고, 트래픽은 세션 검증이 있는 Cloudflare 보호를 통해 흐르게 되었습니다.
  • 2025년 10월 — 현재까지 — Reddit이 Perplexity AI, Oxylabs UAB, AWMProxy 및 SerpApi를 상대로 제기한 소송(뉴욕 남부 지구, 판사 엔겔마이어). Reddit은 피고들이 Google 검색 결과를 통해 자신의 콘텐츠를 산업적으로 추출하고 데이터를 재판매했다고 주장하며 DMCA의 우회 금지 조항을 인용합니다. 첫 번째 수정된 소송이 제출되었으며, 2026년 3월 현재 사건은 기각 요청 단계에 있습니다. 피고들은 위반을 부인합니다: Perplexity는 이것이 공개 데이터를 차단하려는 시도라고 주장하고, SerpApi와 Oxylabs는 법의 범위 내에서 공개 웹에 접근한다고 주장합니다.

세 번째 항목의 실용적인 결론: 공식 API를 우회하여 Reddit 데이터를 수집하는 것은 기술적이기보다 법적 위험 영역이다, 그리고 상업적 프로젝트의 실수 비용은 금지 조치가 아니라 소송으로 측정됩니다. 2026년에 법원이 데이터 추출을 어떻게 해석하는지에 대한 자세한 내용은 Google과 SerpApi 사건의 판결에 대한 자료에서 다루었습니다.

공식 데이터 API: 2026년의 실제 한계

이것은 법적 청구를 생성하지 않는 유일한 방법입니다. 설계 전에 알아야 할 숫자는 다음과 같습니다:

  • OAuth 클라이언트의 경우 분당 100 요청. 이 시간은 약 10분 동안 평균화되며, 즉 짧은 급증은 허용됩니다.
  • OAuth 없이 분당 10 요청 — 이는 디버깅 외에는 아무것도 부족합니다.
  • 한도는 최종 사용자에 대한 것이 아니라 애플리케이션 키에 대해 계산됩니다. 하나의 토큰에서 다섯 개의 스레드는 다섯 배의 용량을 제공하지 않으며, 단지 예산을 다섯 배 더 빨리 소모합니다.
  • 무료 요금제는 개인 프로젝트, 봇, 모더레이터 도구 및 학술 연구를 포괄합니다. 금전적 카운터는 없으며, 빈도에 대한 한도만 있습니다.
  • 상업적 사용은 계약 및 수동 승인을 요구합니다; 요금은 1000 호출당 $0.24입니다. 업계 플랫폼에 따르면 상업적 계약의 진입 장벽은 연간 약 $12,000부터 시작됩니다.
  • API 데이터로 ML 모델을 학습하는 것은 명시적으로 금지되어 있습니다 데이터 API의 조건에 따라. 학습 라이센스는 별도의 비공식 계약입니다(언론에서는 Reddit과 Google 간의 거래를 연간 약 $6000만으로 평가했습니다).

항상 파싱해야 할 헤더

Reddit는 각 응답에 대해 세 개의 헤더를 반환합니다: X-Ratelimit-Used, X-Ratelimit-RemainingX-Ratelimit-Reset. 이는 귀하의 예산에 대한 유일한 신뢰할 수 있는 출처입니다 — 코드의 상수도 아니고 "분당 60 요청"이라는 오래된 위키도 아닙니다(이는 2023년에 이미 구식이 되었습니다).

User-Agent 요구 사항

Reddit는 platform:app_id:version (by /u/username) 형식의 고유한 설명 문자열을 기대합니다. 일반적이거나 비어 있는 User-Agent는 빈도에 따라 엄격하게 제한됩니다 — 이는 한도가 예상보다 빨리 소진될 경우 확인해야 할 첫 번째 사항입니다.

단계별: 실패하지 않는 파이프라인 구축 방법

  1. Reddit 설정에서 script-app을 등록하고 client_id/client_secret을 받으세요. 읽기 전용 부하의 경우 가장 간단한 애플리케이션 유형입니다.
  2. 위의 형식에 맞게 올바른 User-Agent를 설정하세요. 다른 튜토리얼에서 문자열을 복사하지 마세요 — app_id와 사용자 이름은 귀하의 것이어야 합니다.
  3. 각 응답에서 X-Ratelimit-Remaining을 읽으세요, 오류가 발생할 때만이 아닙니다. 잔여량이 약 20 요청으로 떨어지면 균일한 속도로 전환하세요: 호출 지연 = 리셋까지의 초 ÷ 남은 요청. 이렇게 하면 벽에 부딪히는 대신 창을 통해 할당량을 분산시킬 수 있습니다.
  4. 429를 올바르게 처리하세요. 첫 번째 지연은 Retry-After 헤더에서 가져옵니다. 이후에는 지터가 있는 지수 백오프: wait = 2^attempt + random(). 지터는 필수입니다: 없으면 병렬 클라이언트가 요청을 동기적으로 반복하여 두 번째 연쇄 실패를 유발합니다.
  5. TTL로 읽기를 캐시하세요. 동일한 목록에 대한 반복 요청은 모니터링 프로젝트에서 할당량 소모의 가장 흔한 원인입니다.
  6. 스레드가 아닌 토큰 회전을 통해 확장하세요. 각 OAuth 토큰은 독립적인 카운터를 가지고 있습니다; 서로 다른 계정의 여러 애플리케이션을 라운드 로빈 배포(itertools.cycle에서 Python 사용)하면 선형적으로 처리량을 증가시킵니다. 중요한 점: 상업적 부하의 경우 Reddit과의 계약을 대체하지 않으며, 이는 정직한 한도 내에서 작업하는 방법이지 우회하는 방법이 아닙니다.
  7. 리스트 캡 우회를 계획하세요. Reddit은 목록당 최대 약 1000개의 항목(페이지당 100, 커서 after)을 반환합니다. 더 오래된 콘텐츠는 표준 엔드포인트를 통해 접근할 수 없습니다. 표준 솔루션은 "캡을 뚫는" 것이 아니라 시간을 기준으로 샘플을 나누고 하나의 넓은 요청 대신 여러 개의 좁은 요청을 하는 것입니다.
  8. 역사적 데이터의 경우 API가 아닌 인덱스를 찾으세요. Pushshift가 종료된 후, 그 틈새를 PullPush(무료, 그러나 SLA 없음)와 같은 외부 인덱스와 자체 인덱스 및 다른 한도가 있는 상업적 검색 API가 차지하고 있습니다. 학술 작업을 위해 Reddit에는 Reddit for Researchers라는 별도의 프로그램이 있습니다.

늦게 알게 되는 함정

PRAW는 흐름을 잠재우지만 모든 것을 구제하지는 않습니다. 내장된 PRAW 리미터는 헤더를 읽고 스스로 지연을 설정합니다 — 이는 단일 스레드 스크립트에 대해 잘 작동합니다. 현재 상태는 reddit.auth.limits를 통해 확인할 수 있습니다. 이는 두 가지 경우에 망가집니다: 공유 자격 증명을 가진 다중 스레딩에서(인스턴스는 서로의 소비를 인식하지 못함) 및 비동기 코드에서, 차단하는 time.sleep이 이벤트 루프를 멈춥니다.

AI 에이전트는 할당량을 눈에 띄지 않게 소모합니다. 에이전트의 한 단계 추론은 쉽게 10-15회의 도구 호출로 확장됩니다. 열 개의 병렬 세션은 100-150개의 동시 요청을 의미하며, 이는 분당 예산을 몇 초 만에 소모합니다. Reddit 위에 에이전트를 구축하는 경우, 리미터는 풀 수준에서 필요하며 개별 호출 수준에서는 필요하지 않습니다.

백오프 없이 폴링. "매 N 초마다 업데이트 확인"은 지수 지연 없이 — 전체 토큰 다음으로 429의 두 번째로 흔한 원인입니다.

여기서 실제로 프록시가 필요한 곳과 필요하지 않은 곳

솔직히 말하자면: 프록시는 공식 API의 한도를 늘리지 않습니다. 할당량은 애플리케이션 키에 연결되어 있으며, 주소 변경을 통해 "복제"하려는 시도는 작동하지 않으며 조건에 위배됩니다. 프록시가 Reddit 파이프라인에서 실제로 해결하는 작업은 다음과 같습니다:

  • 지리적 접근 및 연결성. Reddit은 일부 국가에서 접근할 수 없거나 부분적으로 제한됩니다. 안정적인 아웃바운드 노드는 인프라의 접근성 문제이며, 한도를 우회하는 것이 아닙니다. 서버 작업의 경우 고정 IP가 있는 데이터 센터 프록시로 충분합니다.
  • 지역별 결과. Reddit의 일부 콘텐츠 및 추천은 요청의 지리적 위치를 고려하여 반환됩니다; 특정 국가의 청중이 보는 것을 분석하는 경우, 해당 국가에서의 접근이 필요합니다.
  • 인프라 분산. 여러 독립 서비스(수집, 언급 모니터링, 분석)가 동일한 서버에서 운영될 때, 단일 IP는 모든 통합에 대한 공통 실패 지점이 됩니다.
  • 자신의 계정으로 작업. 모더레이션, 커뮤니티 관리 및 합법적인 SMM 활동을 위해 여러 프로필에서 "계정 ↔ 고정 IP" 조합은 기본적인 위생입니다. 여기서는 주거용 프록시가 적합합니다.

프록시가 할 수 없는 것: 계약을 우회하여 상업적 수집을 합법화하지 않으며, 1000개 항목의 목록 캡을 해제하지 않으며, Disallow: /를 robots.txt에서 제거하지 않습니다. 플랫폼의 한도 작업에 대한 일반적인 접근 방식은 API의 속도 제한 및 프록시의 역할에 대한 분석에서 다루었습니다.

결론

2026년 Reddit은 더 이상 "가져갈 수 있는 열린 데이터셋이 아니다"라는 점이 분명해졌습니다. 작업 흐름은 다음과 같습니다: 공식 OAuth 접근 + 헤더의 정직한 리미터 + 규칙 내 토큰 회전 + 역사적 데이터를 위한 외부 인덱스. 이 구조에서 프록시는 할당량을 우회하는 것이 아니라 접근성과 지리적 위치를 담당하며, 이는 그들이 예측 가능한 결과를 제공하는 유일한 역할입니다.

상업적 프로젝트인 경우, Reddit과의 계약을 위한 예산을 미리 계획하세요: Perplexity, Oxylabs 및 SerpApi와의 법적 역사에서 알 수 있듯이, 플랫폼은 데이터 보호를 위해 합법적인 접근 비용보다 훨씬 더 많은 비용을 지출할 준비가 되어 있습니다.

```