2026'da TripAdvisor Yorumları Nasıl Veri Çekilir: Geliştirici Rehberi

TripAdvisor /Hotel_Review ve /Restaurant_Review sayfalarından public yorum verisi çekmek için Cloudflare ve DataDome atlatma, GraphQL endpoint kullanımı ve ProxyHat residential proxy kurulumunu adım adım anlatıyoruz.

How to Scrape TripAdvisor Reviews in 2026: A Developer's Guide

2026'da TripAdvisor yorumları nasıl veri çekilir sorusu, seyahat zekâsı ve yorum analitiği ekipleri için hâlâ güncel bir mühendislik problemi. TripAdvisor, otel ve restoran yorumlarını herkese açık liste sayfalarında sunar; ancak Cloudflare ve DataDome tabanlı anti-bot katmanı, sade HTTP isteklerini büyük ölçüde engeller. Bu rehber, yalnızca herkese açık veriye erişim için geçerlidir ve ProxyHat residential proxy altyapısıyla çalışan, üretim seviyesinde bir akış kurmanızı amaçlar.

Yasal uyarı: TripAdvisor'ın Kullanım Şartları'nı ve bulunduğunuz yargı bölgesindeki yasaları (ABD'de CFAA, AB'de GDPR) mutlaka göz önünde bulundurun. Bu makale yalnızca oturum açmadan erişilebilen herkese açık verinin toplanmasını ele alır; kişisel veri hasadı, hesap gerektiren içerik veya ticari yeniden satış önerilmez. Yorumcuların adları, avatarları ve diğer kişisel verileri GDPR kapsamında işlenmemelidir; yalnızca anonimleştirilmiş metin, puan ve tarih gibi agregat veriyle çalışın.

2026'da TripAdvisor Yorumları Nasıl Veri Çekilir: Genel Bakış

Temel akış üç katmandan oluşur: (1) Chrome TLS parmak izine sahip bir HTTP istemcisi, (2) ülke/şehir düzeyinde geo-hedeflenmiş dönen residential proxy'ler ve (3) TripAdvisor'ın dahili /data/graphql/ids endpoint'ine gönderilen POST istekleri. Üçü de olmadan, liste sayfaları genellikle 403 veya JavaScript challenge sayfaları döndürür.

Public veri kapsamı şunları içerir: /Hotel_Review ve /Restaurant_Review URL'lerindeki liste başlığı, yıldız puanı (1-5), yorum metni (genellikle kısaltılmış), publishedDate, dil etiketi ve faydalı oy sayısı. Oturum açmadan erişilemeyen veriler (kullanıcı profili, tam metin bazen, özel mesajlar) bu rehberin kapsamı dışındadır.

TripAdvisor Yorumları Neden Lazy-Load Edilir?

TripAdvisor, ilk sayfa yüklemesinde yalnızca ilk 5-10 yorumu HTML içine gömer; kalan yorumlar sayfa kaydırıldıkça veya sayfalama tıklandıkça GraphQL istekleriyle istenir. Bu nedenle doğrudan HTML scrape etmek yalnızca ilk dilimi verir; tam korpus için GraphQL endpoint'ine gitmek daha verimlidir.

TripAdvisor'ın Anti-Bot Stack'i: Cloudflare + DataDome + TLS Parmak İzi

TripAdvisor, ön uçta Cloudflare Bot Management ve DataDome'un bot detection katmanını birlikte kullanır. Bu stack sadece User-Agent header'ına bakmaz; TLS el sıkışması, HTTP/2 çerçeve sıralaması, JA3/JA4 parmak izi ve IP itibarını birlikte değerlendirir.

Pratik gözlemler:

  • Datacenter IP'ler, ne kadar iyi header taklidi yaparsanız yapın, çoğunlukla 403 veya challenge döndürür. IP itibar skoru, TLS parmak izinden daha ağır basar.
  • HTTP/2 parmak izi, standart requests veya urllib3 kütüphanelerinde Chrome'dan farklıdır; bu fark alone challenge tetikleyebilir.
  • Coğrafi tutarlılık: Londra'dan bir IP ile Tokyo listing'i istemek bazen ek challenge tetikler; bu yüzden residential proxy'lerde -country-GB-city-london gibi geo flag'leri kritik.

Bu nedenle, curl'in TLS impersonation yeteneklerini Python'a taşıyan curl_cffi kütüphanesi, residential proxy ile birlikte kullanıldığında en yüksek başarı oranını verir.

Dahili GraphQL Endpoint: /data/graphql/ids

TripAdvisor'ın web istemcisi, yorum ve lokasyon verisini POST /data/graphql/ids endpoint'inden çeker. İstek gövdesi bir GraphQL query içerir ve X-Requested-By header'ında bir token bulunur. Bu token, sayfa HTML'ine gömülü bir <meta> veya script tag'inden çıkarılabilir ve genellikle oturum bazlı kısa ömürlüdür.

Örnek bir sorgu yapısı (basitleştirilmiş):

query ReviewsForLocation($locationId: Int!, $offset: Int!, $limit: Int!) {
  location(locationId: $locationId) {
    reviewList(offset: $offset, limit: $limit) {
      reviews {
        title
        rating
        text
        publishedDate
        language
      }
    }
  }
}

Yanıt JSON olarak gelir ve her yorum node'u için title, rating (1-5 tamsayı), text (genellikle ~200 karaktere kadar kısaltılmış) ve publishedDate (ISO 8601) alanlarını içerir. Tam metin genellikle oturum açmayı gerektirdiğinden, agregat analiz için kısaltılmış metin yeterlidir.

Proxy Seçimi: Residential vs Datacenter vs Mobile

TripAdvisor için proxy seçimi, başarı oranını doğrudan belirler. Aşağıdaki tablo üç ana proxy tipini karşılaştırır:

ÖzellikResidentialDatacenterMobile
TripAdvisor başarı oranıYüksek (%85-95)Düşük (%10-30)Çok yüksek (%90+)
IP itibarıGerçek ISPBilinen veri merkezi bloklarıOperatör (4G/5G)
Gecikme~200-500ms~50-100ms~300-800ms
MaliyetOrtaDüşükYüksek
Önerilen kullanımGenel scrapeTest/backupChallenge yoğun hedef

TripAdvisor için residential proxy'ler en iyi fiyat/başarı dengesini sunar. Mobile proxy'ler daha yüksek başarı verir ama maliyet 3-5 kat fazladır; yalnızca çok challenge yoğun listing'lerde reserved edin.

ProxyHat Kurulumu ve Python Örneği

ProxyHat residential proxy'leri, kullanıcı adı içine gömülen flag'lerle geo-hedefleme ve sticky session sağlar. Aşağıdaki örnek, curl_cffi ile Chrome TLS parmak izini taklit ederken ProxyHat gateway'i üzerinden Londra residential IP'leri kullanır.

Kurulum

pip install curl_cffi

Python: GraphQL İsteği ile Tek Yorum Node'u Çekme

from curl_cffi import requests
import json

PROXY = "http://user-country-GB-city-london-session-sess01:PASSWORD@gate.proxyhat.com:8080"

GRAPHQL_URL = "https://www.tripadvisor.com/data/graphql/ids"

HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                  "AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/124.0.0.0 Safari/537.36",
    "Content-Type": "application/json",
    "X-Requested-By": "WEB",  # gerçek token sayfa HTML'inden çıkarılır
    "Origin": "https://www.tripadvisor.com",
    "Referer": "https://www.tripadvisor.com/",
}

QUERY = """
query ReviewsForLocation($locationId: Int!, $offset: Int!, $limit: Int!) {
  location(locationId: $locationId) {
    reviewList(offset: $offset, limit: $limit) {
      reviews { title rating text publishedDate language }
    }
  }
}
"""

payload = {
    "query": QUERY,
    "variables": {"locationId": 1234567, "offset": 0, "limit": 5},
}

resp = requests.post(
    GRAPHQL_URL,
    headers=HEADERS,
    json=payload,
    proxy=PROXY,
    impersonate="chrome124",
    timeout=30,
)

data = resp.json()
reviews = data["data"]["location"]["reviewList"]["reviews"]
for r in reviews[:1]:
    print(f"Title: {r['title']}")
    print(f"Rating: {r['rating']}/5")
    print(f"Text: {r['text'][:150]}...")
    print(f"Date: {r['publishedDate']}")
    print(f"Lang: {r['language']}")

Bu örnek tek bir yorum node'unu parse eder. Üretimde, offset'i 5'er artırarak sayfalama yapın ve her istekte -session-sess01 yerine yeni bir session ID kullanarak IP rotasyonu tetikleyin.

Node.js Örneği: Basit HTTP Proxy ile Liste Sayfası

const http = require('http');
const https = require('https');

const proxy = {
  host: 'gate.proxyhat.com',
  port: 8080,
  auth: 'user-country-GB-city-london:PASSWORD',
};

const options = {
  hostname: 'www.tripadvisor.com',
  path: '/Hotel_Review-g123456-d789012-Reviews-Hotel_Name.html',
  method: 'GET',
  headers: {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
      + 'AppleWebKit/537.36 (KHTML, like Gecko) '
      + 'Chrome/124.0.0.0 Safari/537.36',
    'Accept-Language': 'en-GB,en;q=0.9',
  },
};

// Proxy CONNECT tunnel için 'https-proxy-agent' önerilir
// Burada sadece konfigürasyon gösterilmektedir
console.log('Proxy URL:', `http://${proxy.auth}@${proxy.host}:${proxy.port}`);

Node.js tarafında https-proxy-agent ve got gibi kütüphanelerle benzer akış kurulabilir; ancak TLS parmak izi taklidi için Node.js ekosisteminde cycletls gibi özel kütüphaneler gerekir.

Rate Limit, Sticky Session ve Backoff Stratejileri

TripAdvisor'ın rate limit davranışı sabit bir sayı değil; IP itibarına ve istek desenine bağlı olarak dinamiktir. Pratik gözlemler:

  • ~50-100 listing/saat tek IP başına güvenli bandır; bunun üstünde challenge olasılığı artar.
  • ~5-10 dakika challenge tetiklendikten sonra IP genellikle otomatik reset olur; bu süre zarfında aynı IP'ye istek atmayın.
  • Sticky session: Aynı listing'in sayfalama istekleri için -session-abc123 flag'ini koruyun; bu, aynı IP'den gelen arka arkaya isteklerin doğal görünmesini sağlar.
  • Backoff: 429 veya 403 aldığınızda üstel backoff uygulayın (örn. 2s, 4s, 8s, 16s) ve session ID'yi değiştirin.
  • Pagination offset: offset'i 5 veya 10'ar artırın; 50'şer atlamak bazen challenge tetikler.

ProxyHat kullanıcı adı flag'leri:

# Ülke + şehir + sticky session
http://user-country-GB-city-london-session-sess01:PASSWORD@gate.proxyhat.com:8080

# Yeni IP için session değiştir
http://user-country-GB-city-london-session-sess02:PASSWORD@gate.proxyhat.com:8080

# SOCKS5
socks5://user-country-GB-city-london:PASSWORD@gate.proxyhat.com:1080

Daha fazla konfigürasyon detayı için ProxyHat dokümantasyonuna bakın. Fiyatlandırma ve plan limitleri için ProxyHat fiyatlandırma sayfasını inceleyin.

Yaygın Hatalar ve Edge Case'ler

1. X-Requested-By Token'ı Atlamak

GraphQL endpoint'i, X-Requested-By header'ı olmadan 400 döndürür. Token, listing sayfasının HTML'inden window.__INITIAL_STATE__ veya bir <meta> tag'inden çıkarılmalıdır. Token'ı cache'leyin ama ~30 dakikada bir yenileyin.

2. Aynı Session ID ile Çok Fazla İstek

Sticky session, tek IP'ye sabitlenir. Tek session ile 200+ istek atmak, o IP'yi hızla burn ettirir. Her 20-30 istekte bir session ID değiştirin.

3. Datacenter Proxy ile Denemek

Datacenter IP'lerle TripAdvisor'a istek atmak, mühendislik zamanını boşa harcar. Başarı oranı %10-30 bandında kalır ve challenge'lar debugging'i zorlaştırır.

4. Yorum Metnini Tam Almaya Çalışmak

GraphQL yanıtı genellikle kısaltılmış metin (~200 karakter) döndürür. Tam metin, oturum açmayı gerektiren bir "read more" akışından gelir; bu rehberin kapsamı dışındadır. Analiz için kısaltılmış metin yeterlidir.

5. Geo Tutarlılığını Göz Ardı Etmek

Londra IP'si ile Tokyo listing'i istemek bazen ek challenge tetikler. Mümkün olduğunda hedef lokasyonla aynı ülkeden IP kullanın; değilse en azından aynı kıtadaki bir IP tercih edin. ProxyHat lokasyonları sayfasından mevcut ülke ve şehirleri kontrol edin.

Etik Veri Çekme ve Resmi API

Scrape TripAdvisor yaklaşımınızı tasarlarken etik sınırları net çizin:

  • Yalnızca agregat veri: Yorum metni, puan ve tarih gibi kamuya açık agregat veriyi toplayın. Yorumcuların kullanıcı adları, avatar URL'leri veya profil verileri GDPR kapsamında kişisel veridir ve toplanmamalıdır.
  • Hız sınırlarına saygı: TripAdvisor'ın altyapısına zarar verecek hızda istek atmayın. Saniyede 1-2 istek, saatte 50-100 listing makul bir üst sınırdır.
  • robots.txt kontrolü: TripAdvisor'ın robots.txt dosyasını inceleyin; bazı path'ler disallow edilmiş olabilir.
  • Veri saklama: Topladığınız veriyi yalnızca analiz amacıyla saklayın ve yorumcuların kimliğini tespit edilebilecek şekilde birleştirmeyin.

TripAdvisor Content API Ne Zaman Kullanılmalı?

TripAdvisor, iş ortakları için resmi bir Content API sunar. Eğer ticari bir ürün inşa ediyorsanız ve veriyi yeniden dağıtacağınızı veya müşterilere sunacağınızı planlıyorsanız, resmi API scrape'e tercih edilmelidir. API, SLA, destek ve yasal güvence sağlar. Scrape yaklaşımı ise araştırma, prototip ve düşük hacimli analiz için daha uygundur.

Web scraping kullanım senaryoları için ProxyHat web scraping use case sayfasını ve SERP takibi için SERP tracking sayfasını inceleyin.

Key Takeaways

  • TripAdvisor'da herkese açık veri: liste başlığı, yıldız puanı, kısaltılmış yorum metni ve publishedDate. Oturum gerektiren içerik bu rehberin kapsamı dışında.
  • Cloudflare + DataDome stack'i, TLS parmak izi ve IP itibarını birlikte değerlendirir; datacenter IP'ler neredeyse her zaman engellenir.
  • /data/graphql/ids endpoint'i, X-Requested-By token'ı ile POST isteği kabul eder; yapısal veri için HTML scrape'ten daha verimli.
  • Residential proxy + Chrome TLS impersonation (curl_cffi) en yüksek başarı oranını verir; geo flag'ler (-country-GB-city-london) lokalize listing'ler için kritik.
  • Tek IP başına ~50-100 listing/saat güvenli bandır; 403/429'da session değiştir ve üstel backoff uygula.
  • Etik sınırlar: yalnızca agregat veri, kişisel veri hasadı yok, GDPR'ye uyum ve resmi API ticari kullanım için tercih edilmeli.

SSS

2026'da TripAdvisor yorumları nasıl veri çekilir?

Chrome TLS parmak izi taklidi yapan bir HTTP istemcisi (örn. curl_cffi), geo-hedeflenmiş residential proxy ve TripAdvisor'ın dahili /data/graphql/ids endpoint'ine X-Requested-By token'ı ile POST isteği göndermek gerekir. HTML scrape yalnızca ilk 5-10 yorumu verir; tam korpus için GraphQL endpoint'i kullanılır.

TripAdvisor veri çekme neden proxy kullanıcıları için önemli?

TripAdvisor, Cloudflare ve DataDome tabanlı anti-bot katmanı kullanır ve datacenter IP'leri neredeyse her zaman engeller. Residential proxy'ler, gerçek ISP IP'leriyle IP itibar sorununu çözer; geo flag'ler ise lokalize listing'lerde challenge riskini azaltır. Proxy olmadan başarı oranı %10-30 bandında kalır.

TripAdvisor scrape için hangi proxy tipi en iyisi?

Residential proxy'ler en iyi fiyat/başarı dengesini sunar (%85-95 başarı oranı, ~200-500ms gecikme). Mobile proxy'ler daha yüksek başarı verir ama maliyet 3-5 kat fazladır. Datacenter proxy'ler TripAdvisor için pratik değildir. SOCKS5 gerekiyorsa ProxyHat gate.proxyhat.com:1080 portunu kullanın.

TripAdvisor scrape'de blokları nasıl önlersiniz?

Tek IP başına ~50-100 listing/saat ile sınırlı kalın, her 20-30 istekte sticky session ID değiştirin, 403/429'da üstel backoff (2s, 4s, 8s) uygulayın ve hedef lokasyonla aynı ülkeden IP kullanın. offset'i 5-10'ar artırın; 50'şer atlamak challenge tetikleyebilir.

TripAdvisor veri çekme yasal mı?

Herkese açık agregat veri (puan, yorum metni, tarih) oturum açmadan erişilebilir olduğunda, birçok yargı bölgesinde erişim genel olarak mümkündür. Ancak TripAdvisor'ın Kullanım Şartları, ABD'de CFAA ve AB'de GDPR mutlaka göz önünde bulundurulmalıdır. Yorumcuların kişisel verileri toplanmamalı ve ticari yeniden dağıtım için resmi Content API tercih edilmelidir.

Başlamaya hazır mısınız?

148+ ülkede 50M+ konut IP'sine AI destekli filtreleme ile erişin.

Fiyatlandırmayı GörüntüleKonut Proxy'leri
← Bloga Dön