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

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

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

📅۹ آبان ۱۴۰۵

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

چرا کسب‌وکارها به نظارت بر قیمت‌ها در مناطق نیاز دارند

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

شرکت‌های لجستیک از داده‌های قیمت‌های رقبا استفاده می‌کنند تا تعرفه‌های خود را در زمان واقعی تنظیم کنند. اگر رقیب قیمت تحویل را در یک منطقه خاص کاهش دهد، منطقی است که قبل از اینکه مشتریان به‌طور گسترده به او روی آورند، واکنش نشان دهند. تجمیع‌کنندگان تاکسی و کارشیرینگ روند قیمت‌ها را در مناطق مختلف تحلیل می‌کنند تا مناطق با تقاضای بالا را شناسایی کرده و رانندگان را مجدداً توزیع کنند. خرده‌فروشان و خدمات تحویل غذا (معادل‌های یاندکس.غذا و اسبرمارکت) قیمت‌های تحویل رقبا را زیر نظر دارند تا مناطق تحویل رایگان و حداقل مبلغ سفارش خود را به‌درستی تنظیم کنند.

دسته‌ای از کاربران دیگر، تحلیلگران تحرک شهری و شرکت‌های تحقیقاتی هستند که نقشه‌های «نابرابری قیمت» بین مناطق را ترسیم می‌کنند. این داده‌ها به توسعه‌دهندگان کمک می‌کند تا دسترسی حمل و نقل پروژه‌های جدید را ارزیابی کنند و به مقامات شهری کمک می‌کند تا مناطق با کمبود خدمات حمل و نقل را شناسایی کنند. بدون جمع‌آوری سیستماتیک داده‌ها در مناطق، هیچ‌یک از این چالش‌ها حل نمی‌شود — بررسی‌های مقطعی قیمت‌ها به‌صورت دستی تصویر تحریف‌شده‌ای ارائه می‌دهد، زیرا قیمت‌ها هر چند دقیقه یک‌بار تغییر می‌کنند.

چرا خدمات جمع‌آوری داده‌ها بر اساس جغرافیا را مسدود می‌کنند

خدمات تاکسی و تحویل به چند دلیل از داده‌های قیمت‌های خود محافظت می‌کنند. اولاً، قیمت‌گذاری پویا یک راز تجاری و مزیت رقابتی است که اگر تعرفه‌های فعلی در تمام مناطق را بدانید، به راحتی قابل کپی‌برداری است. ثانیاً، درخواست‌های انبوه از یک آدرس IP بار زیادی بر روی سرورها ایجاد می‌کند و آمار واقعی تقاضا را تحریف می‌کند، بنابراین سیستم‌های ضد کلاهبرداری به‌طور فعال چنین درخواست‌هایی را مسدود می‌کنند.

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

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

چه داده‌هایی را باید جمع‌آوری کرد و از چه پلتفرم‌هایی

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

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

مهم است که از قبل لیست نقاط کنترلی — آدرس‌ها یا مختصات خاص در هر منطقه که مسیر بر اساس آنها ساخته می‌شود را مشخص کنید. بدون نقاط ثابت، داده‌ها قابل مقایسه نیستند: مقایسه قیمت سفر از مرکز به یک منطقه خوابگاهی با قیمت سفر درون یک منطقه بی‌معنا است برای تحلیل دینامیک زمانی.

روش‌های جمع‌آوری: دستی، خودکار، API

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

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

سومین — کار از طریق API داخلی برنامه‌های موبایل است که اغلب استفاده از آنها آسان‌تر از رابط وب است، اما نیاز به شبیه‌سازی دقیق هدرهای درخواست دارد و اغلب به احراز هویت وابسته است. صرف‌نظر از روش انتخابی، برای دریافت قیمت‌های واقعی در یک منطقه خاص، درخواست‌ها باید از آدرس IP‌ای ارسال شوند که به‌طور فیزیکی در آن شهر واقع شده است و در ایده‌آل — در منطقه یا حداقل در حوزه مربوطه.

نقش پروکسی در جمع‌آوری داده‌های جغرافیایی

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

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

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

پروکسی‌های دیتاسنتر نیز قابل استفاده هستند — به‌عنوان مثال، برای جمع‌آوری داده‌ها از صفحات وب عمومی بدون اتصال سخت به جغرافیا، جایی که سرعت مهم‌تر از تطابق دقیق با شبکه شهری است. اما برای قیمت‌های تاکسی و تحویل، جایی که جغرافیای درخواست نتیجه را به‌طور مستقیم تعیین می‌کند، راه‌حل‌های مسکونی و موبایل داده‌های به‌مراتب پایدارتر و واقعی‌تری ارائه می‌دهند.

کدام نوع پروکسی را انتخاب کنیم: مقایسه

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

نوع پروکسی دقت جغرافیایی ریسک مسدود شدن مناسب برای
پروکسی‌های مسکونی بالا، تا سطح شهر/منطقه پایین وب‌سایت‌ها و برنامه‌های تاکسی، تحویل، تحلیل دقیق بر اساس مناطق
پروکسی‌های موبایل بالا، وابسته به اپراتور و منطقه بسیار پایین نظارت از طریق برنامه‌های موبایل تاکسی و تحویل
پروکسی‌های دیتاسنتر پایین، بدون اتصال دقیق جغرافیایی بالاتر از متوسط جمع‌آوری داده‌های عمومی، جایی که جغرافیا مهم نیست

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

تنظیم مرحله به مرحله جمع‌آوری داده‌ها

اگر در شرکت توسعه‌دهنده‌ای وجود نداشته باشد، می‌توان نظارت منظم را از طریق ترکیب مرورگر ضد شناسایی و پروکسی، بدون نوشتن کد تنظیم کرد. رویکرد به این صورت است: مرورگر ضد شناسایی (Dolphin Anty، AdsPower، Multilogin یا Octo Browser) را باز می‌کنید، یک پروفایل جداگانه برای هر شهر یا منطقه‌ای که باید نظارت شود، ایجاد می‌کنید.

در تنظیمات پروفایل، پروکسی مربوط به منطقه مورد نیاز را مشخص می‌کنید: آدرس IP، پورت، نام کاربری و رمز عبور را وارد می‌کنید و نوع SOCKS5 یا HTTP را بسته به اینکه کدام یک توسط ارائه‌دهنده پروکسی انتخاب شده پشتیبانی می‌شود، انتخاب می‌کنید. پس از این، پروفایل برای وب‌سایت به‌گونه‌ای به نظر می‌رسد که کاربر به‌طور فیزیکی در شهر انتخاب شده قرار دارد — مرورگر وب‌سایت تاکسی یا تحویل را با قیمت‌های «محلی» باز می‌کند.

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

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

نمونه‌ای از اسکریپت برای جمع‌آوری خودکار

برای کسانی که در تیم خود توسعه‌دهنده یا تحلیلی دارند که آماده کار با کد است، جمع‌آوری خودکار قیمت‌ها می‌تواند با استفاده از Python و کتابخانه requests و چرخش پروکسی‌ها بر اساس مناطق انجام شود. در زیر یک مثال ساده از منطق پرسش API خدمات تحویل با جایگزینی مختصات منطقه و پروکسی کردن درخواست از طریق منطقه مورد نیاز آورده شده است.

import requests
import time

# لیست نقاط کنترلی در مناطق شهر
districts = [
    {"name": "مرکز", "lat": 55.7558, "lon": 37.6173},
    {"name": "منطقه خوابگاهی A", "lat": 55.8300, "lon": 37.4500},
    {"name": "منطقه خوابگاهی B", "lat": 55.6200, "lon": 37.7100},
]

# پروکسی‌های مربوط به منطقه مورد نیاز
proxies = {
    "http": "http://login:password@proxy-host:port",
    "https": "http://login:password@proxy-host:port",
}

def get_delivery_price(lat, lon):
    url = "https://example-delivery-service.com/api/price"
    params = {"lat": lat, "lon": lon}
    headers = {"User-Agent": "Mozilla/5.0"}
    response = requests.get(url, params=params, headers=headers, proxies=proxies, timeout=10)
    return response.json().get("price")

results = []
for district in districts:
    price = get_delivery_price(district["lat"], district["lon"])
    results.append({"district": district["name"], "price": price, "timestamp": time.time()})
    time.sleep(5)  # وقفه بین درخواست‌ها برای جلوگیری از تجاوز به محدودیت‌ها

print(results)

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

فرکانس به‌روزرسانی و ذخیره‌سازی داده‌ها

قیمت‌های تاکسی و تحویل در طول روز تغییر می‌کنند، بنابراین یک عکس مقطعی از داده‌ها چیز زیادی به تحلیل‌گر نمی‌گوید. فرکانس بهینه پرسش بستگی به وظیفه دارد: برای تحلیل ساعات اوج بار، کافی است قیمت‌ها را هر 15–30 دقیقه در ساعات اوج و یک بار در یک یا دو ساعت در زمان‌های دیگر پرسش کنید. برای ساخت نقشه «قیمت‌های پایه» در مناطق، یک یا دو اندازه‌گیری در روز در یک زمان مشخص کافی است تا تأثیر تقاضا را حذف کند.

ذخیره‌سازی داده‌های جمع‌آوری‌شده به‌صورت ساختاریافته راحت‌تر است — جدولی با فیلدهای «تاریخ و زمان»، «منطقه»، «سرویس»، «قیمت»، «ضریب تقاضا». این فرمت به‌راحتی می‌تواند در جداول Google Sheets برای حجم‌های کوچک یا در پایگاه داده‌ها برای ساخت داشبوردهای کامل در ابزارهای BI بارگذاری شود. مهم است که داده‌های تاریخی را حفظ کنید و آنها را بازنویسی نکنید — زیرا دینامیک در طول زمان بیشترین ارزش تحلیلی را دارد، نه اندازه‌گیری‌های نقطه‌ای.

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

اشتباهات رایج در نظارت بر قیمت‌ها

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

اشتباه دوم — درخواست‌های بسیار مکرر بدون وقفه، که به سرعت منجر به مسدود شدن موقت حساب یا IP می‌شود. سیستم‌های ضد کلاهبرداری خدمات تاکسی نه تنها تعداد درخواست‌ها، بلکه الگوی رفتار را نیز زیر نظر دارند: یک کاربر واقعی قیمت سفر را 50 بار متوالی در یک دقیقه از یک نقطه نمی‌پرسد.

اشتباه سوم — نادیده گرفتن تفاوت بین قیمت در برنامه و در وب‌سایت. بسیاری از خدمات تاکسی و تحویل، برنامه موبایل قیمت‌های متفاوتی نسبت به نسخه وب نشان می‌دهد، به دلیل الگوریتم‌ها یا تبلیغات مختلف که فقط در برنامه قابل مشاهده هستند. اگر تحلیل تنها بر اساس داده‌های وب انجام شود، نتایج ممکن است واقعیت را برای اکثر کاربرانی که از طریق برنامه سفارش می‌دهند، منعکس نکند.

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

نتیجه‌گیری

نظارت سیستماتیک بر قیمت‌های تاکسی و تحویل در مناطق شهر به کسب‌وکارها مزایای مشخصی می‌دهد: امکان واکنش سریع به اقدامات رقبا، پیش‌بینی دقیق‌تر تقاضا و اتخاذ تصمیمات منطقی درباره مناطق پوشش و تعرفه‌ها. شرط کلیدی برای دریافت داده‌های معتبر — درخواست‌ها باید از آدرس‌های IP‌ای ارسال شوند که به‌طور فیزیکی به شهر و منطقه مورد نیاز متصل هستند، در غیر این صورت خدمات قیمت‌های نادرست یا میانگین را ارائه می‌دهند.

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