네이버는 keine einzelne Website. Der Sperrgrad variiert je nach Dienst.
Lesezeit: 14 Minuten | Stand: Januar 2026
Schlüsselzusammenfassung
Naver ist das größte Portal in Südkorea mit einem Marktanteil von etwa 55 % im Suchmarkt. Es gibt viele Dienste auf Naver wie Naver Shopping, Blogs, Cafés, Smart Stores usw., die gecrawlt werden möchten.
Das Problem ist, dass jeder Dienst unterschiedliche Sperrmethoden und Schwierigkeiten hat. Blogs sind relativ einfach, während Smart Stores sogar Captchas haben. "Naver Crawling" ist kein einzelnes Problem, sondern so viele separate Probleme wie es Dienste gibt.
In diesem Artikel behandelt:
- Crawling-Schwierigkeiten nach Naver-Diensten (von einfach bis schwierig)
- Sperrmethoden für jeden Dienst (Warum wird blockiert, technisch gesehen)
- Praktische Lösungen, die funktionieren (Beispiele für maßgeschneiderten Code pro Dienst)
- Naver API vs. Crawling (Wann man was verwenden sollte)
Inhaltsverzeichnis
- Crawling-Schwierigkeiten nach Naver-Diensten
- Naver's Bot-Sperrtechnologie
- Naver Shopping Crawling
- Naver Blog Crawling
- Smart Store Crawling
- Naver Café Crawling
- Naver Place Crawling
- Zusammenfassung der offiziellen Naver-API
- Lösen Sie alles auf einmal mit Crawling-API-Services
- Häufig gestellte Fragen
1. Crawling-Schwierigkeiten nach Naver-Diensten
Naver hat dutzende Dienste unter einer Domain. Die Crawling-Schwierigkeiten sind vielfältig.
| Dienst | Domain | Schwierigkeit | Hauptsperrmethode | requests möglich |
|---|---|---|---|---|
| Naver Suche | search.naver.com | Rate-Limiting | △ (einige) | |
| Naver Blog | blog.naver.com | iframe-Struktur | (umgehbar) | |
| Naver News | news.naver.com | Rate-Limiting | ||
| Naver Shopping | shopping.naver.com | JavaScript-Rendering, interne API | △ (API-Analyse erforderlich) | |
| Naver Place | m.place.naver.com | JavaScript + interne API | △ (API-Analyse erforderlich) | |
| Naver Café | cafe.naver.com | Anmeldung erforderlich, Berechtigungsprüfung | (meistens) | |
| Smart Store | smartstore.naver.com | Captchas, JavaScript-Herausforderungen | ||
| Naver Pay | pay.naver.com | Anmeldung + Sicherheitstoken |
Hauptmuster: Dienste, die direkt mit Geld verbunden sind (Smart Store, Pay), haben eine höhere Sicherheit.
2. Naver's Bot-Sperrtechnologie
Im Gegensatz zu Coupang, das Akamai verwendet, betreibt Naver ein intern entwickeltes Bot-Sperrsystem. Das Aktualisierungsintervall im Vergleich zu externen Lösungen ist unregelmäßig, sodass manchmal locker und manchmal plötzlich verstärkt wird.
Naver's Verteidigungssystem
요청 수신
│
├─ Layer 1: robots.txt
│ └─ Googlebot 등 주요 크롤러 외 대부분 차단
│ └─ 실제 강제력은 없으나, 위반 시 법적 분쟁 불리
│
├─ Layer 2: Rate Limiting
│ └─ IP당 분당 요청 수 제한
│ └─ 초과 시 일시 차단 (보통 5~30분)
│
├─ Layer 3: JavaScript 렌더링 의존
│ └─ 핵심 데이터를 JS로 동적 로드 (쇼핑, 플레이스)
│ └─ SSR(서버 사이드 렌더링) 미적용 페이지가 많음
│
├─ Layer 4: 캡챠 (스마트스토어 중심)
│ └─ 의심스러운 접근에 네이버 자체 캡챠 표시
│ └─ 최근 발생 빈도 증가 추세
│
└─ Layer 5: 로그인/권한 체크 (카페)
└─ 회원 등급별 접근 제한
└─ 비회원에게 본문 차단
Coupang vs. Naver: Vergleich des Sperrniveaus
| Kriterium | Coupang | Naver |
|---|---|---|
| Bot-Sperrlösung | Akamai Bot Manager (extern) | Intern entwickelt |
| TLS-Fingerprint-Prüfung | (JA3/JA4-Hash) | (meistens) |
| JavaScript-Herausforderung | (vollständig angewendet) | △ (variiert je nach Dienst) |
| Sensordatenerfassung | (_abck-Cookie) | |
| Captchas | vorhanden | Gelegentlich bei Smart Store |
| Zugriff über requests | 100 % blockiert | Je nach Dienst möglich |
| Gesamtschwierigkeit | (Durchschnitt) |
Fazit: Naver ist im Allgemeinen einfacher als Coupang, aber je nach Dienst gibt es große Unterschiede in der Schwierigkeit. Das Crawlen von Blogs und Smart Stores sind völlig unterschiedliche Probleme.
3. Naver Shopping Crawling
Verständnis der Struktur
Naver Shopping ist als SPA (Single Page Application) konzipiert. Die Produktliste, die im Browser angezeigt wird, wird nach dem Laden der Seite von JavaScript über interne APIs abgerufen.
브라우저가 shopping.naver.com 접속
→ 빈 HTML 프레임 로드
→ JavaScript 실행
→ 내부 API 호출 (shopping.naver.com/api/...)
→ JSON 응답 수신
→ 상품 카드 렌더링
Daher fehlen die Produktinformationen, wenn man nur das HTML mit requests abruft. Es gibt zwei Möglichkeiten.
Methode 1: Direkter Aufruf der internen API (schnell und effizient)
Überprüfen Sie im Browser-Entwicklertools (F12 → Netzwerk-Tab) die von Naver Shopping aufgerufenen APIs und rufen Sie sie genauso auf.
import requests
# 네이버 쇼핑 검색 내부 API
url = "https://shopping.naver.com/api/search"
params = {
"query": "에어팟",
"pagingIndex": 1,
"pagingSize": 40,
"sort": "rel" # rel=관련도, price_asc=낮은가격, review=리뷰많은
}
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ...",
"Referer": "https://shopping.naver.com/search/all?query=에어팟"
}
response = requests.get(url, params=params, headers=headers)
data = response.json()
for item in data["shoppingResult"]["products"]:
print(f"{item['productTitle']} - {item['price']}원 ({item['reviewCount']}건 리뷰)")
Vorteile: Kein Browser-Rendering erforderlich, schnell, direkter Empfang von JSON
Hinweis:
- Interne API-Endpunkte/Parameter können von Naver ohne Vorankündigung geändert werden
- 403 wird ohne Referer-Header zurückgegeben
- Bei übermäßigen Anfragen kann die IP vorübergehend blockiert werden (1-3 Sekunden Verzögerung zwischen Anfragen empfohlen)
- Aktualisierung des tatsächlichen API-Pfads erforderlich, Überprüfung im Entwicklertools
Methode 2: Browser-Rendering mit Playwright
Wenn die Analyse der internen API schwierig ist oder komplexe Filter/Sortierungen erforderlich sind:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto("https://shopping.naver.com/search/all?query=에어팟")
# 상품 목록이 렌더링될 때까지 대기
page.wait_for_selector('[class*="product_item"]', timeout=10000)
products = page.query_selector_all('[class*="product_item"]')
for product in products[:10]:
title_el = product.query_selector('[class*="product_title"]')
price_el = product.query_selector('[class*="price_num"]')
if title_el and price_el:
print(f"{title_el.inner_text()} - {price_el.inner_text()}")
browser.close()
Hinweis: Naver Shopping hat nicht so strenge Blockaden für Headless-Browser wie Coupang (Akamai), daher funktioniert der Standard-Playwright-Headless-Modus oft. Bei massiven Anfragen kann jedoch eine IP-Blockade auftreten.
Methode 3: Naver Shopping Search API (offiziell)
Die offizielle API, die kostenlos vom Naver Developer Center bereitgestellt wird:
import requests
client_id = "YOUR_CLIENT_ID" # 네이버 개발자센터에서 발급
client_secret = "YOUR_CLIENT_SECRET"
url = "https://openapi.naver.com/v1/search/shop.json"
headers = {
"X-Naver-Client-Id": client_id,
"X-Naver-Client-Secret": client_secret
}
params = {
"query": "에어팟",
"display": 100, # 최대 100건
"start": 1, # 시작 위치 (최대 1000)
"sort": "sim" # sim=정확도, date=날짜, asc=가격오름, dsc=가격내림
}
response = requests.get(url, headers=headers, params=params)
data = response.json()
for item in data["items"]:
# HTML 태그 제거 필요 (title에 <b> 태그 포함)
import re
clean_title = re.sub('<[^<]+?>', '', item['title'])
print(f"{clean_title} - {item['lprice']}원 - {item['mallName']}")
Grenzen der offiziellen API:
- Tägliches Limit von 25.000 Anfragen
- start-Parameter maximal 1.000 → keine Abfrage von mehr als 1.000 Einträgen möglich
- Keine detaillierten Spezifikationen, vollständigen Bewertungen, Verkäuferinformationen enthalten
- Keine Abfrage der gesamten Produktliste nach Kategorien möglich
- Keine Echtzeitbestands-/Versandinformationen verfügbar
→ Für einfache Preisvergleiche oder Keyword-Trends ausreichend, aber für umfassende Datenanalysen unzureichend.
4. Naver Blog Crawling
Strukturelle Besonderheit: iframe
Naver Blog ist ein Legacy-Dienst, der seit 2003 betrieben wird und weiterhin auf einer iframe-basierten Struktur basiert.
blog.naver.com/username/포스트번호
└─ 외부 프레임 (헤더, 프로필, 카테고리)
└─ 내부 iframe (실제 글 내용)
└─ PostView.naver?blogId=xxx&logNo=yyy
Wenn Sie blog.naver.com/username/12345 mit requests abrufen, erhalten Sie nur das HTML des externen Rahmens, nicht den tatsächlichen Inhalt des Beitrags. Sie müssen die URL innerhalb des iframes direkt aufrufen.
Lösung: Direkter Zugriff auf die PostView-URL
import requests
from bs4 import BeautifulSoup
import re
blog_id = "example_blog"
post_no = "223456789"
# 방법 A: PostView URL 직접 접근 (가장 간단)
url = f"https://blog.naver.com/PostView.naver?blogId={blog_id}&logNo={post_no}"
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ..."}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
# 스마트에디터 ONE (최신 에디터) 본문 추출
content = soup.select_one(".se-main-container")
if content:
text = content.get_text(separator="\n", strip=True)
print(text)
# 구 에디터 (이전 글들)
if not content:
content = soup.select_one("#postViewArea")
if content:
text = content.get_text(separator="\n", strip=True)
print(text)
# 방법 B: 메인 페이지에서 iframe URL 추출 후 접근
main_url = f"https://blog.naver.com/{blog_id}/{post_no}"
response = requests.get(main_url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
# iframe src에서 logNo 추출
iframe = soup.select_one("iframe#mainFrame")
if iframe:
iframe_src = iframe.get("src", "")
# iframe_src를 파싱하여 PostView URL 구성
print(f"iframe URL: https://blog.naver.com{iframe_src}")
Massensammlung von Suchergebnissen in Blogs
import requests
import time
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
# 1단계: 검색 API로 블로그 URL 목록 수집
search_url = "https://openapi.naver.com/v1/search/blog.json"
headers = {
"X-Naver-Client-Id": client_id,
"X-Naver-Client-Secret": client_secret
}
params = {"query": "크롤링 자동화", "display": 100, "start": 1}
response = requests.get(search_url, headers=headers, params=params)
blog_urls = [item["link"] for item in response.json()["items"]]
# 2단계: 각 블로그 글 본문 수집
for url in blog_urls:
# blog.naver.com URL을 PostView URL로 변환
# (URL 파싱 로직 필요)
response = requests.get(url, headers={"User-Agent": "Mozilla/5.0 ..."})
soup = BeautifulSoup(response.text, "html.parser")
content = soup.select_one(".se-main-container")
if content:
print(content.get_text(strip=True)[:200])
time.sleep(2) # Rate limiting 방지
Hinweise
- Private/Freigabegrenzte Beiträge: Nicht zugänglich ohne Anmeldung
- Rate Limiting: Vorübergehende Blockierung bei 60-100 Anfragen pro Minute (Empfehlung von 1-2 Sekunden Verzögerung)
- Bild-URL: Naver-CDN (postfiles.pstatic.net) überprüft Referer → Erforderlich
Referer: https://blog.naver.com-Header für direkten Bild-Download - Editor-Version: Die HTML-Struktur des Smart Editors ONE (
.se-main-container) und des alten Editors (#postViewArea) unterscheiden sich → Beide müssen verarbeitet werden
5. Smart Store Crawling
Warum ist das Crawlen von Smart Stores auf Naver am schwierigsten?
Smart Store ist Naver's E-Commerce-Plattform, die direkt mit Umsatz verbunden ist, daher ist die Sicherheit hoch.
- Vollständige SPA: Alle Produktinformationen werden über JavaScript gerendert — Keine Daten im HTML
- Captchas auftreten: Bei schnellem Zugriff auf viele Seiten zeigt Naver eigene Captchas an
- Dynamische URL: Format
smartstore.naver.com/{Shopname}/products/{ProductID} - API-Änderungsfrequenz: Interne API-Struktur ändert sich häufig
Interne API von Smart Store
Auch Smart Store ruft intern REST-APIs auf. Sie können dies in den Entwicklertools überprüfen:
import requests
# 스마트스토어 상품 상세 API (내부 — 변경될 수 있음)
store_id = "store_channel_id" # 상점의 채널 ID
product_id = "12345678"
api_url = f"https://smartstore.naver.com/i/v1/stores/{store_id}/products/{product_id}"
headers = {
"User-Agent": "Mozilla/5.0 ...",
"Referer": f"https://smartstore.naver.com/"
}
response = requests.get(api_url, headers=headers)
# 주의: 이 API는 차단되는 경우가 많음
# 성공하면 상품명, 가격, 옵션, 리뷰 수 등 JSON 반환
Praktischer Ansatz
| Umfang | Empfohlene Methode | Erfolgsquote | Kosten |
|---|---|---|---|
| Gering (Dutzende pro Tag) | Playwright + 5-10 Sekunden Verzögerung | 70-90 % | Kostenlos |
| Mittel (Hunderte pro Tag) | Crawling-API-Service | 95 %+ | $35/Monat+ |
| Hoch (Tausende pro Tag+) | Professioneller Crawling-Service | 99 %+ | $99/Monat+ |
# 소량 수집: Playwright 사용
from playwright.sync_api import sync_playwright
import time
with sync_playwright() as p:
browser = p.chromium.launch(headless=False) # headless=False 권장
page = browser.new_page()
url = "https://smartstore.naver.com/example_store/products/12345678"
page.goto(url)
page.wait_for_load_state("networkidle")
# 상품명
title = page.query_selector('._3StrMSMN5r') # 클래스명은 변경될 수 있음
# 가격
price = page.query_selector('._1LY7DqCnwR')
if title and price:
print(f"{title.inner_text()} - {price.inner_text()}")
time.sleep(5) # 캡챠 방지를 위한 딜레이
browser.close()
Wichtig: Die CSS-Klassen in Smart Stores sind verschleiert (hash), daher ändern sie sich bei jeder Veröffentlichung. Verwenden Sie zuerst stabile Selektoren wie
data-testidoderaria-label.
6. Naver Café Crawling
Hauptproblem: Anmeldung + Berechtigung
Die meisten Beiträge in Naver Cafés sind nur für Mitglieder zugänglich. Beliebte Cafés haben strenge Zugriffsbeschränkungen.
접근 권한 구조:
비회원 → 글 목록만 보임, 본문은 "카페 가입 후 이용" 메시지
가입 회원 → 일부 게시판만 접근 가능
등급 회원 → 전체 접근 가능 (활동 실적 필요)
Risiken der automatisierten Anmeldung
Die automatisierte Anmeldung bei Naver ist technisch möglich, birgt jedoch mehrere Probleme:
- Tastatursicherheitsmodul: Verschlüsselt Eingabewerte dynamisch beim Login auf naver.com
- Geräteauthentifizierung: Erfordert bei der ersten Anmeldung in einer neuen Umgebung eine Zwei-Faktor-Authentifizierung
- Erkennung verdächtiger Aktivitäten: Konto wird vorübergehend gesperrt bei Erkennung von abnormalen Mustern nach dem Login
- Verstoß gegen Nutzungsbedingungen: Automatisierte Anmeldungen verstoßen gegen die Nutzungsbedingungen von Naver
→ Es besteht das Risiko einer dauerhaften Kontosperrung, daher wird dies nicht empfohlen.
Legale Alternativen
| Methode | Beschreibung | Einschränkungen |
|---|---|---|
| Naver Café API | API-Zugriff durch Café-Administrator genehmigt | Zusammenarbeit des Administrators erforderlich |
| Manuelle Anmeldung + Automatisierte Sammlung | Manuelle Anmeldung im Browser und automatische Sammlung mit Cookies | Neu anmelden erforderlich bei Sitzungsende |
| RSS-Feed | Einige Café-Boards bieten RSS-Feeds | Begrenzt auf neueste Beiträge, nur teilweise Inhalte |
| Crawling-API-Service | Nutzung eines Dienstes, der Café-Crawling unterstützt | Kostenpflichtig |
7. Naver Place Crawling
Naver Place (Karten) bietet Informationen zu Geschäften, Bewertungen, Besucherzahlen und anderen lokalen Geschäftsdaten.
Struktur
Naver Place basiert auf mobiler Webtechnologie und lädt Daten über interne APIs:
m.place.naver.com/restaurant/1234567890
→ JavaScript 로드
→ 내부 GraphQL API 호출
→ 가게 정보, 리뷰, 사진 등 렌더링
Nutzung interner APIs
import requests
# 네이버 플레이스 내부 API (변경될 수 있음)
place_id = "1234567890"
api_url = f"https://api.place.naver.com/graphql"
headers = {
"User-Agent": "Mozilla/5.0 ...",
"Referer": f"https://m.place.naver.com/restaurant/{place_id}",
"Content-Type": "application/json"
}
# GraphQL 쿼리 (실제 쿼리는 개발자도구에서 확인 필요)
query = {
"operationName": "getPlaceDetail",
"variables": {"id": place_id},
"query": "query getPlaceDetail($id: String!) { ... }"
}
response = requests.post(api_url, headers=headers, json=query)
# 성공 시: 가게명, 주소, 전화번호, 영업시간, 평점, 리뷰 수 등
Hinweis: Die GraphQL-Abfragestruktur von Naver Place ist komplex und ändert sich häufig. Für eine zuverlässige Datensammlung wird die Verwendung eines Crawling-API-Dienstes empfohlen.
8. Zusammenfassung der offiziellen Naver-API
Überprüfen Sie zuerst die von Naver Developer Center bereitgestellten APIs. Sie sind kostenlos und zuverlässig.
Verfügbare APIs
| API | Tageslimit | Hauptdaten | Preis | Ausstellung |
|---|---|---|---|---|
| Suche (Shopping) | 25.000 Anfragen | Produktname, niedrigster Preis, Shop-Link | Kostenlos | Sofort |
| Suche (Blog) | 25.000 Anfragen | Titel, Zusammenfassung, URL | Kostenlos | Sofort |
| Suche (Nachrichten) | 25.000 Anfragen | Titel, Zusammenfassung, Verlag | Kostenlos | Sofort |
| Suche (Café) | 25.000 Anfragen | Titel, Zusammenfassung, Café-Name | Kostenlos | Sofort |
| Suche (Bilder) | 25.000 Anfragen | Bild-URL, Quelle | Kostenlos | Sofort |
| Papago Übersetzung | 10.000 Zeichen pro Tag | Übersetzungsergebnis | Kostenlos | Sofort |
| Data Lab (Trends) | 1.000 Anfragen | Suchtrenddaten (relativ) | Kostenlos | Sofort |
| Karte/Ort | Separat | Ort, Koordinaten, Routenführung | Kostenlos/Kostenpflichtig | Überprüfung |
Wenn die API ausreicht
- Keyword-basierte Produktsuche + Preisvergleich
- Analyse von Suchtrends (Naver Data Lab)
- Überwachung von Nachrichten/Blogs (Keyword-Benachrichtigungen)
- Grundlegende Marktforschung
Wenn die API nicht ausreicht → Crawling erforderlich
- Erfassung von detaillierten Produktspezifikationen, vollständigen Bewertungstexten
- Liste aller Produkte nach Kategorien (über 1.000)
- Detaillierte Informationen zu einzelnen Smart Stores
- Echtzeitbestands-/Versandinformationen
- Detaillierte Informationen zu Naver Place-Geschäften (Bewertungen, Besucherzahlen)
- Sammlung von Beiträgen in einem bestimmten Café
9. Lösen Sie alles auf einmal mit Crawling-API-Services
Naver hat unterschiedliche Sperrmethoden für jeden Dienst, unregelmäßige API-Änderungen und sogar Captchas — wenn Sie direkt darauf reagieren müssen, müssen Sie ständig Ihren Code anpassen.
Mit Crawling-API-Services können Sie mit einer API alle Naver-Dienste crawlen.
Naver Crawling in einer Zeile mit der API
import requests
API_KEY = "your-api-key"
# 네이버 쇼핑
response = requests.post(
"https://api.hashscraper.com/v1/scrape",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"url": "https://shopping.naver.com/search/all?query=에어팟", "format": "json"}
)
shopping_data = response.json()
# 스마트스토어 (캡챠 자동 처리)
response = requests.post(
"https://api.hashscraper.com/v1/scrape",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"url": "https://smartstore.naver.com/example/products/12345", "format": "json"}
)
store_data = response.json()
# 네이버 블로그
response = requests.post(
"https://api.hashscraper.com/v1/scrape",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"url": "https://blog.naver.com/example/223456789", "format": "json"}
)
blog_data = response.json()
Warum ein API-Service:
- Keine Notwendigkeit, sich um die Sperrmethoden der Dienste zu kümmern
- Automatische Captcha-Verarbeitung (für Smart Stores)
- Automatisches JavaScript-Rendering
- Anpassung des Dienstes an interne API-Änderungen
- Saubere Datenempfang mit geparsten JSON
Naver Crawling mit AI-Agenten
Sie können AI über MCP auch in natürlicher Sprache um Crawling bitten:
Claude Desktop에서:
"네이버 쇼핑에서 '무선 이어폰' 검색해서
상위 20개 상품의 이름, 가격, 리뷰 수를 표로 정리해줘"
→ Claude가 HashScraper MCP를 호출하여 자동으로 수집 + 정리
Auf diese Weise müssen Sie keinen Code schreiben, sodass auch Nicht-Entwickler Naver-Daten nutzen können. Weitere Informationen zur Einrichtung finden Sie in der Anleitung Hinzufügen von Crawling-Funktionen zu AI-Agenten.
10. Häufig gestellte Fragen
F: Ist Naver-Crawling legal?
Das Sammeln öffentlicher Informationen von öffentlichen Webseiten (Produktpreise, Geschäftsinformationen usw.) ist in der Regel unproblematisch. Es gibt jedoch rechtliche Konflikte in folgenden Fällen:
- Automatisierte Sammlung in Bereichen, die eine Anmeldung erfordern (z. B. private Café-Boards)
- Massives Crawling ohne Einhaltung von robots.txt
- Schnelle Anfragen, die den Server überlasten (Dutz




.jpg?locale=de)