بازگشت به وبلاگ

پروکسی برای جمع‌آوری قیمت بلیط‌های هواپیما: چگونه بدون مسدودیت از Aviasales، Skyscanner و Google Flights داده‌برداری کنیم

سایت‌های هواپیمایی به سرعت درخواست‌های خودکار را مسدود می‌کنند - بیاموزید که کدام پروکسی‌ها به جمع‌آوری قیمت‌های به‌روز بلیط‌ها بدون مسدود شدن و کپچا کمک می‌کنند.

📅۲۴ اسفند ۱۴۰۴
```html

وب‌سایت‌های بلیط هواپیما یکی از محافظت‌شده‌ترین منابع در اینترنت هستند. قیمت‌های stale، کپچا، مسدودسازی فوری IP — همه اینها جمع‌آوری داده‌های تعرفه‌ها را به یک چالش واقعی تبدیل می‌کند. اگر شما یک aggregator می‌سازید، قیمت‌ها را برای مشتریان رصد می‌کنید یا به‌دنبال مسیرهای ارزان به‌صورت خودکار هستید، بدون پروکسی‌های به‌خوبی تنظیم‌شده نمی‌توانید حتی یک ساعت دوام بیاورید. در این مقاله بررسی می‌کنیم که کدام پروکسی‌ها کار می‌کنند، چگونه آنها را تنظیم کنیم و چرا برخی انواع در جاهایی که دیگران موفق می‌شوند، شکست می‌خورند.

چرا وب‌سایت‌های بلیط هواپیما به سرعت پارسینگ را مسدود می‌کنند

صنعت هواپیمایی با قیمت‌گذاری پویا کار می‌کند: تعرفه‌ها بسته به تقاضا، زمان روز، تاریخچه مرورگر و حتی موقعیت جغرافیایی کاربر ده‌ها بار در روز تغییر می‌کنند. به همین دلیل است که aggregator‌های بزرگ — Aviasales، Skyscanner، Kayak، Google Flights — منابع زیادی را برای محافظت در برابر درخواست‌های خودکار سرمایه‌گذاری می‌کنند.

اینجا چه اتفاقی می‌افتد وقتی شما سعی می‌کنید داده‌ها را بدون پروکسی یا با IP‌های ارزان‌قیمت مرکز داده جمع‌آوری کنید:

  • مسدودسازی فوری IP — اکثر وب‌سایت‌های بلیط هواپیما پایگاه‌های داده ASN (سیستم‌های خودمختار) مراکز داده را نگهداری می‌کنند. درخواست با IP هاستینگ قبل از بارگذاری صفحه مسدود می‌شود.
  • کپچا و Cloudflare — حتی اگر اولین درخواست عبور کند، پس از 5–10 درخواست از یک آدرس کپچا یا ریدایرکت برای بررسی ظاهر می‌شود.
  • قیمت‌های جعلی — برخی وب‌سایت‌ها (به‌ویژه OTA-aggregators) عمداً قیمت‌های بالاتر یا قدیمی را به ربات‌ها نشان می‌دهند تا داده‌ها را برای رقبای خود خراب کنند.
  • Fingerprinting — علاوه بر IP، سیستم‌ها هدرهای HTTP، ترتیب گسترش‌های TLS، رفتار ماوس و سرعت اسکرول را تجزیه و تحلیل می‌کنند.
  • محدودیت نرخ — محدودیت تعداد درخواست‌ها از یک IP در واحد زمان. معمولاً آستانه — 20–50 درخواست در دقیقه است، پس از آن اتصال قطع می‌شود.

نتیجه: بدون پروکسی‌های باکیفیت با IP‌های واقعی نمی‌توانید داده‌های به‌روز جمع‌آوری کنید. پروکسی‌های مرکز داده در اینجا عملکرد ضعیفی دارند — وب‌سایت‌های بلیط هواپیما آنها را در ثانیه‌های اول شناسایی می‌کنند. نیاز به IP‌های مسکونی یا موبایل دارید.

کدام نوع پروکسی برای بلیط‌های هواپیما مناسب است

سه نوع اصلی پروکسی و کاربرد آنها در جمع‌آوری قیمت بلیط‌های هواپیما را بررسی می‌کنیم:

نوع پروکسی منبع IP دور زدن محافظت وب‌سایت‌های بلیط هواپیما سرعت هزینه
پروکسی‌های مسکونی ارائه‌دهندگان خانگی (Ростелеком، بی‌لاین، AT&T) ⭐⭐⭐⭐⭐ عالی متوسط متوسط
پروکسی‌های موبایل شبکه‌های اپراتور (MTS، MegaFon، T-Mobile) ⭐⭐⭐⭐⭐ عالی بالا بالا
پروکسی‌های مرکز داده مزرعه‌های سرور (AWS، OVH، Hetzner) ⭐⭐ بد بسیار بالا پایین

نتیجه واضح است: برای وب‌سایت‌های بلیط هواپیما، پروکسی‌های مرکز داده تقریباً بی‌فایده هستند. Aviasales، Skyscanner و Google Flights به سرعت IP‌های ارائه‌دهندگان هاستینگ ASN را شناسایی کرده و یا مسدود می‌کنند یا کپچا نشان می‌دهند. انتخاب واقعی بین پروکسی‌های مسکونی و موبایل است — و هر کدام دارای نیش خود هستند.

پروکسی‌های مسکونی در مقابل موبایل: چه چیزی را انتخاب کنیم برای بلیط‌های هواپیما

هر دو نوع کار می‌کنند، اما در سناریوهای مختلف یکی بر دیگری پیروز می‌شود. بیایید به طور خاص بررسی کنیم.

پروکسی‌های مسکونی — برای جمع‌آوری داده‌های مقیاس‌پذیر

پروکسی‌های مسکونی از آدرس‌های IP کاربران خانگی واقعی در سرتاسر جهان استفاده می‌کنند. برای پارسینگ بلیط‌های هواپیما این به معنای:

  • امکان انتخاب کشور خاص و حتی شهر — این برای بررسی قیمت‌ها در بازارهای مختلف (به عنوان مثال، قیمت از مسکو در مقابل قیمت از لندن برای یک پرواز مشابه) حیاتی است.
  • پول بزرگ IP — هزاران آدرس برای چرخش، که این امکان را می‌دهد تا صدها درخواست بدون تکرار انجام دهید.
  • نسبت خوب قیمت/کیفیت در حجم بالای ترافیک.
  • پشتیبانی از حالت‌های سسیونی و چرخشی — می‌توان یک جلسه را برای شبیه‌سازی کاربر واقعی نگه داشت.

سناریوی ایده‌آل: شما یک aggregator یا سرویس رصد می‌سازید و نیاز دارید قیمت‌ها را به‌طور همزمان از 10–20 وب‌سایت جمع‌آوری کنید، با انجام هزاران درخواست در ساعت. پروکسی‌های مسکونی با چرخش — انتخاب شما هستند.

پروکسی‌های موبایل — برای وب‌سایت‌های بسیار محافظت‌شده

پروکسی‌های موبایل از طریق سیم‌کارت‌های واقعی اپراتورهای تلفن همراه کار می‌کنند. ویژگی آنها — آدرس‌های IP از شبکه‌های موبایل (3G/4G/5G) است که وب‌سایت‌های بلیط هواپیما تقریباً هرگز آنها را مسدود نمی‌کنند. دلیل ساده است: یک IP موبایل می‌تواند متعلق به یک شبکه NAT باشد که هزاران کاربر واقعی در آن هستند. مسدود کردن چنین آدرسی به معنای از دست دادن هزاران مشتری زنده است.

  • حداکثر سطح اعتماد از طرف سیستم‌های ضد ربات.
  • ریسک مسدود شدن تقریباً صفر حتی در هنگام پارسینگ تهاجمی.
  • امکان تغییر IP از طریق تغییر جلسه (بدون تغییر فیزیکی دستگاه).
  • هزینه بالاتر — برای داده‌های حیاتی یا وب‌سایت‌های پیچیده توجیه‌پذیر است.

سناریوی ایده‌آل: شما نیاز دارید داده‌ها را از یک وب‌سایت پیچیده خاص جمع‌آوری کنید (به عنوان مثال، وب‌سایت مستقیم یک شرکت هواپیمایی با Cloudflare Enterprise) که پروکسی‌های مسکونی به‌طور دوره‌ای کپچا نشان می‌دهند. پروکسی‌های موبایل این مشکل را حل می‌کنند.

💡 نکته عملی

برای اکثر وظایف رصد قیمت بلیط‌های هواپیما، استراتژی بهینه — پروکسی‌های مسکونی برای جمع‌آوری انبوه + پروکسی‌های موبایل برای وب‌سایت‌های پیچیده است. این بهینه‌سازی بودجه را بدون از دست دادن کیفیت داده‌ها امکان‌پذیر می‌سازد.

ویژگی‌های محافظت Aviasales، Skyscanner، Google Flights و Kayak

هر پلتفرم ویژگی‌های خاص خود را در زمینه محافظت دارد. درک این تفاوت‌ها به شما کمک می‌کند تا پروکسی و رفتار درخواست‌ها را به‌درستی تنظیم کنید.

Aviasales

aggregator روسی از ترکیبی از محدودیت نرخ و تجزیه و تحلیل رفتار استفاده می‌کند. محدودیت — تقریباً 30–40 درخواست در دقیقه از یک IP. در صورت تجاوز — ریدایرکت به کپچا از Yandex SmartCaptcha. این وب‌سایت نسبت به پروکسی‌های مسکونی با IP‌های روسی نسبتاً وفادار است. مهم است: قیمت‌ها در Aviasales به موقعیت جغرافیایی بستگی دارد، بنابراین برای جمع‌آوری داده‌های صحیح از پروکسی با IP کشوری که تعرفه‌ها برای آن نیاز است استفاده کنید.

Skyscanner

یکی از محافظت‌شده‌ترین aggregator‌ها. از Cloudflare با تنظیم «Under Attack Mode» برای IP‌های مشکوک و همچنین سیستم ضد ربات خود استفاده می‌کند. پروکسی‌های مرکز داده در اینجا اصلاً کار نمی‌کنند. پروکسی‌های مسکونی عبور می‌کنند، اما نیاز به سرعت پایین درخواست‌ها (نه بیشتر از 15–20 در دقیقه) و هدرهای مرورگر صحیح دارند. برای Skyscanner توصیه می‌شود که یک جلسه مرورگر واقعی را از طریق Playwright یا Puppeteer با پروکسی متصل شبیه‌سازی کنید.

Google Flights

Google از الگوریتم‌های خود برای شناسایی ربات‌ها — reCAPTCHA v3 و تجزیه و تحلیل الگوهای رفتاری استفاده می‌کند. پارسینگ مستقیم HTML در اینجا کار نمی‌کند، زیرا داده‌ها از طریق JavaScript بارگذاری می‌شوند. نیاز به مرورگر headless (Playwright/Puppeteer) با پروکسی‌های مسکونی یا موبایل دارید. Google همچنین به تطابق موقعیت جغرافیایی IP و زبان مرورگر حساس است — عدم تطابق خطر مسدود شدن را افزایش می‌دهد.

Kayak

aggregator آمریکایی با محافظت تهاجمی از ربات‌ها بر اساس PerimeterX (حالا HUMAN Security). نه تنها IP را شناسایی می‌کند، بلکه TLS fingerprint، ترتیب هدرهای HTTP/2 و زمان بین درخواست‌ها را نیز شناسایی می‌کند. برای Kayak الزامی است: پروکسی‌های مسکونی یا موبایل، شبیه‌سازی مرورگر واقعی و تأخیرهای تصادفی بین درخواست‌ها (2–8 ثانیه).

پلتفرم سیستم محافظت آیا پروکسی‌های مرکز داده کار می‌کنند؟ آیا نیاز به headless است؟ نوع پروکسی توصیه‌شده
Aviasales محدودیت نرخ + کپچای Yandex ❌ خیر ترجیحی پروکسی‌های مسکونی (RU)
Skyscanner Cloudflare + سیستم داخلی ❌ خیر ✅ بله پروکسی‌های مسکونی / موبایل
Google Flights reCAPTCHA v3 + تجزیه و تحلیل رفتاری ❌ خیر ✅ الزامی پروکسی‌های مسکونی / موبایل
Kayak HUMAN Security (PerimeterX) ❌ خیر ✅ بله موبایل

چگونه پروکسی را برای جمع‌آوری داده‌های قیمت تنظیم کنیم

تنظیمات بستگی به ابزاری دارد که شما استفاده می‌کنید. رایج‌ترین سناریوها را بررسی می‌کنیم.

گزینه 1: پارسرهای آماده و ابزارهای بدون کد

اگر شما کد نمی‌نویسید، از راه‌حل‌های آماده استفاده کنید: Octoparse، ParseHub، Apify. همه آنها از اتصال پروکسی‌های خارجی پشتیبانی می‌کنند. مراحل کار به این صورت است:

  1. داده‌های پروکسی را دریافت کنید: هاست (IP یا دامنه)، پورت، نام کاربری، رمز عبور.
  2. تنظیمات ابزار خود را باز کنید → بخش «Proxy» یا «Network».
  3. نوع پروتکل را انتخاب کنید: HTTPS (برای اکثر وظایف) یا SOCKS5 (اگر به کارکرد سطح پایین‌تری نیاز دارید).
  4. داده‌های اتصال را وارد کنید. فرمت معمولاً به این صورت است: login:password@host:port
  5. چرخش پروکسی را فعال کنید — اکثر ابزارها این کار را به‌طور خودکار در صورت وجود مجموعه آدرس‌ها انجام می‌دهند.
  6. یک درخواست آزمایشی به وب‌سایت هدف ارسال کنید و بررسی کنید که IP تغییر کرده است.

گزینه 2: Playwright / Puppeteer با پروکسی

برای وب‌سایت‌های پیچیده (Google Flights، Skyscanner) نیاز به مرورگر headless دارید. اینجا چگونگی اتصال پروکسی در Playwright است:

const { chromium } = require('playwright');

const browser = await chromium.launch({
  proxy: {
    server: 'http://your-proxy-host:port',
    username: 'your_login',
    password: 'your_password'
  }
});

const page = await browser.newPage();
await page.goto('https://www.skyscanner.com/...');
// بعد از این منطق استخراج داده‌های شما
await browser.close();

برای چرخش پروکسی در هر درخواست جدید، یک زمینه مرورگر جدید با پروکسی جدید از مجموعه خود ایجاد کنید. این رفتار کاربران مختلف را شبیه‌سازی می‌کند.

گزینه 3: Python + requests/httpx

برای وب‌سایت‌هایی که بدون رندرینگ JavaScript هستند (یا برای کار با API وب‌سایت‌های بلیط هواپیما) Python مناسب است:

import requests
import random

proxies_pool = [
    "http://login:[email protected]:port",
    "http://login:[email protected]:port",
    "http://login:[email protected]:port",
]

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
    "Accept-Language": "ru-RU,ru;q=0.9",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
}

proxy = {"http": random.choice(proxies_pool), "https": random.choice(proxies_pool)}

response = requests.get(
    "https://www.aviasales.ru/search/...",
    proxies=proxy,
    headers=headers,
    timeout=15
)

print(response.status_code)

چرخش IP و مدیریت جلسات: قوانین کلیدی

چرخش صحیح IP نیمی از موفقیت در پارسینگ بلیط‌های هواپیما است. فقط تغییر IP کافی نیست: باید این کار را به‌طور هوشمند انجام دهید.

قانون 1: یک IP — یک جلسه

از یک IP برای چندین درخواست موازی استفاده نکنید. سیستم‌های ضد ربات بار غیرعادی بالایی را از یک آدرس مشاهده می‌کنند و آن را مسدود می‌کنند. هر جریان درخواست باید از طریق یک پروکسی جداگانه کار کند.

قانون 2: تأخیرهای تصادفی بین درخواست‌ها

یک کاربر واقعی درخواست‌ها را با فواصل زمانی برابر نمی‌سازد. یک تأخیر تصادفی از 2 تا 8 ثانیه بین درخواست‌ها اضافه کنید. این احتمال شناسایی ربات را 3–4 برابر نسبت به درخواست‌های یکنواخت کاهش می‌دهد.

قانون 3: تطابق موقعیت جغرافیایی و زبان

اگر از پروکسی با IP آلمانی استفاده می‌کنید، در هدرهای مرورگر باید زبان آلمانی باشد (Accept-Language: de-DE). عدم تطابق یک سیگنال واضح برای سیستم‌های ضد ربات است. این موضوع به‌ویژه برای Google Flights مهم است.

قانون 4: پروکسی‌های سسیونی برای درخواست‌های چند مرحله‌ای

برخی وب‌سایت‌های بلیط هواپیما به چندین مرحله نیاز دارند: جستجو → انتخاب پرواز → مشاهده جزئیات. همه این مراحل باید از یک IP انجام شوند. از جلسات چسبنده (sticky sessions) استفاده کنید — حالتی که یک IP برای جریان شما به مدت معین (معمولاً 10–30 دقیقه) ثابت می‌ماند.

قانون 5: نظارت بر کیفیت پروکسی

به‌طور منظم بررسی کنید که کدام IP‌ها از مجموعه مسدود شده‌اند. به‌طور خودکار آدرس‌هایی که کد 403، 429 یا ریدایرکت به کپچا را برمی‌گردانند، حذف کنید. بیشتر فریم‌ورک‌های پارسینگ حرفه‌ای (Scrapy، Apify) این کار را به‌طور خودکار انجام می‌دهند.

ابزارهای آماده برای پارسینگ قیمت بلیط‌های هواپیما

اگر نمی‌خواهید پارسر را از صفر بنویسید، اینجا ابزارهایی هستند که قبلاً از کار با پروکسی پشتیبانی می‌کنند و برای رصد قیمت‌های هواپیما مناسب هستند:

Apify

پلتفرم ابری برای وب‌اسکرپینگ. دارای بازیگران (ربات‌ها) آماده برای Skyscanner و Google Flights است. از اتصال پروکسی‌های خارجی از طریق تنظیمات پشتیبانی می‌کند. برای اتصال پروکسی‌های خود: به تنظیمات بازیگر بروید → برگه «Proxy and browser configuration» → «Custom proxies» را انتخاب کنید → URL پروکسی‌های خود را به فرمت http://user:pass@host:port وارد کنید.

Octoparse

پارسر بدون کد با رابط بصری. مناسب برای کسانی که کد نمی‌نویسند. از چرخش پروکسی پشتیبانی می‌کند: تنظیمات → Cloud Extraction → Proxy Settings → Add Custom Proxy. می‌توانید لیست پروکسی‌ها را اضافه کنید و Octoparse به‌طور خودکار آنها را جابجا خواهد کرد.

Scrapy + Scrapy-Rotating-Proxies

فریم‌ورک Python برای پارسینگ حرفه‌ای. پلاگین scrapy-rotating-proxies به‌طور خودکار IP‌ها را از لیست شما چرخش می‌دهد و آدرس‌های مسدود شده را حذف می‌کند. مناسب برای وظایف با بار بالا — صدها هزار درخواست در روز.

ParseHub

یک ابزار دیگر بدون کد با پشتیبانی از رندرینگ JavaScript. به‌خوبی با Aviasales کار می‌کند. پروکسی‌ها در بخش تنظیمات → پیشرفته → پروکسی متصل می‌شوند.

⚠️ مهم در مورد جغرافیای قیمت‌ها

وب‌سایت‌های بلیط هواپیما قیمت‌های متفاوتی را بسته به کشور کاربر نشان می‌دهند. این تنها یک استراتژی بازاریابی نیست — این یک واقعیت فنی است. اگر قیمت‌ها را برای بازار روسیه رصد می‌کنید، از پروکسی‌های با IP‌های روسی استفاده کنید. برای مقایسه قیمت‌ها در بازارها (به عنوان مثال، قیمت همان پرواز برای کاربر از آلمان) به پروکسی‌های با IP کشورهای مربوطه نیاز دارید.

چک‌لیست: چگونه در جمع‌آوری قیمت‌ها بن نشوید

این لیست را ذخیره کنید — این به جلوگیری از اکثر مشکلات در تنظیم پارسینگ کمک می‌کند:

✅ قبل از راه‌اندازی پارسر

  • پروکسی‌های مسکونی یا موبایل انتخاب شده‌اند (نه مرکز داده)
  • IP پروکسی با بازار هدف مطابقت دارد (کشور/شهر)
  • زبان مرورگر با موقعیت جغرافیایی پروکسی مطابقت دارد
  • چرخش IP تنظیم شده است (حداقل 1 IP برای هر جریان)
  • هدرهای User-Agent شبیه‌ساز مرورگر واقعی هستند
  • برای وب‌سایت‌های JS از مرورگر headless (Playwright/Puppeteer) استفاده می‌شود

✅ در حین کار پارسر

  • تأخیرها بین درخواست‌ها: 2–8 ثانیه (تصادفی)
  • بیش از 20–30 درخواست در دقیقه از یک IP نباشد
  • جلسات چند مرحله‌ای از یک IP استفاده می‌کنند (sticky session)
  • کدهای 403/429 به‌طور خودکار IP را از مجموعه حذف می‌کنند
  • ثبت تمام خطاها برای تجزیه و تحلیل

✅ به‌طور اضافی برای وب‌سایت‌های پیچیده

  • هدرهای Referer و Accept صحیح
  • شبیه‌سازی حرکت ماوس و اسکرول (برای Playwright)
  • تغییر تصادفی User-Agent از مجموعه واقعی مرورگرها
  • استفاده از کوکی‌های سسیونی برای شبیه‌سازی بازدید مجدد

خطاهای رایج که منجر به بن می‌شوند

  • استفاده از پروکسی‌های رایگان. IP‌های آنها مدت‌هاست که در لیست سیاه تمام وب‌سایت‌های بزرگ بلیط هواپیما قرار دارند. شما در اولین درخواست مسدود خواهید شد.
  • فرکانس درخواست‌ها خیلی بالا. حتی با پروکسی‌های خوب، 100 درخواست در دقیقه از یک IP — این راهی مطمئن برای بن شدن است.
  • User-Agent یکسان برای تمام درخواست‌ها. کاربران واقعی از مرورگرها و نسخه‌های مختلف استفاده می‌کنند — پارسر شما باید این را شبیه‌سازی کند.
  • نادیده گرفتن کوکی‌ها. بسیاری از وب‌سایت‌ها جلسه را از طریق کوکی‌ها ردیابی می‌کنند. اگر شما کوکی‌ها را بین درخواست‌ها ذخیره و منتقل نکنید، رفتار شما غیرعادی به نظر می‌رسد.
  • عدم تطابق موقعیت جغرافیایی و محتوای درخواست. درخواست نسخه فارسی وب‌سایت از طریق IP آمریکایی — یک پرچم قرمز برای سیستم‌های ضد ربات است.

نتیجه‌گیری

جمع‌آوری داده‌های قیمت بلیط‌های هواپیما — یکی از پیچیده‌ترین وظایف فنی در پارسینگ است. وب‌سایت‌های بلیط هواپیما منابع قابل توجهی را برای محافظت در برابر ربات‌ها سرمایه‌گذاری می‌کنند و دور زدن آن بدون ابزارهای صحیح غیرممکن است. نکات اصلی این مقاله:

  • پروکسی‌های مرکز داده برای وب‌سایت‌های بلیط هواپیما کار نمی‌کنند — آنها به سرعت مسدود می‌شوند.
  • پروکسی‌های مسکونی — انتخاب بهینه برای رصد مقیاس‌پذیر قیمت‌ها از بازارهای مختلف.
  • پروکسی‌های موبایل برای پلتفرم‌های بسیار محافظت‌شده (Kayak، Skyscanner) و داده‌های حیاتی نیاز است.
  • چرخش IP، تأخیرهای تصادفی و شبیه‌سازی مرورگر واقعی — شرایط ضروری برای کار پایدار.
  • موقعیت جغرافیایی پروکسی باید با بازار هدف مطابقت داشته باشد، در غیر این صورت قیمت‌ها نادرست خواهند بود.

اگر شما قصد دارید یک سیستم رصد قیمت بلیط‌های هواپیما بسازید یا داده‌ها را برای aggregator جمع‌آوری کنید، با پروکسی‌های مسکونی شروع کنید — آنها تعادل لازم بین کیفیت دور زدن محافظت، پوشش جغرافیایی و هزینه را فراهم می‌کنند. برای وب‌سایت‌های پیچیده‌تر با محافظت ضد ربات تهاجمی، پروکسی‌های موبایل را در نظر بگیرید — آنها حداکثر سطح اعتماد را از طرف سیستم‌های ضد ربات فراهم می‌کنند و تقریباً مسدود شدن را در صورت تنظیم صحیح از بین می‌برند.

```