كل المقالات

بناء أداة تتبع أسعار في الوقت الفعلي باستخدام FourA

تتغير أسعار المنافسين كل ساعة. إليك كيفية بناء أداة تتبع أسعار مؤتمتة عبر مئات صفحات المنتجات باستخدام استدعاء API واحد ولغة Python أساسية.

تحدث قرارات التسعير في التجارة الإلكترونية بسرعة. يخفض أحد المنافسين سعره بنسبة 5%، وخلال ساعات، يلاحظ العملاء ذلك. الشركات التي تفوز هي تلك التي تلاحظ أولاً.

كان بناء نظام لمراقبة الأسعار يتطلب سابقاً صيانة بنية تحتية للـ proxy، والتعامل مع أنظمة مكافحة البوتات (anti-bot)، وكتابة أدوات كشط مخصصة لكل موقع مستهدف. تختزل FourA هذا التعقيد في استدعاء API واحد.

المشكلة

التحقق اليدوي من الأسعار لا يتوسع. حتى شركة التجارة الإلكترونية الصغيرة التي لديها 50 منافساً تحتاج إلى تتبع مئات صفحات المنتجات. بمعدل ثلاثة فحوصات يومياً، يعني ذلك أكثر من 1,000 request يومياً، وكل منها معرض للحظر، أو لـ rate limit، أو للتعطل بسبب إعادة تصميم الموقع.

النهج

إليك كيف تبدو آلية مراقبة الأسعار الجاهزة للإنتاج باستخدام FourA:

1. تحديد كتالوج المنتجات الخاص بك

ابدأ بقائمة منظمة من عناوين URL الخاصة بالمنافسين ومحددات CSS التي تظهر فيها الأسعار:

products = [
    {"sku": "WDG-001", "competitor": "Store A", "url": "https://store-a.com/widget", "selector": ".price-current"},
    {"sku": "WDG-001", "competitor": "Store B", "url": "https://store-b.com/products/widget", "selector": "[data-price]"},
]

2. الجلب والتحليل

تتولى FourA الأجزاء الصعبة: بصمة TLS، وتدوير الـ proxy، وتصيير JavaScript. يرسل الكود الخاص بك عنوان URL فقط ويحصل على HTML في المقابل:

import requests
from bs4 import BeautifulSoup

def get_price(product):
    resp = requests.post("https://eu.api.foura.ai/api/v1/tasks", headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    }, json={"url": product["url"], "type": "proxy"})
    
    html = resp.json()["content"]
    soup = BeautifulSoup(html, "html.parser")
    el = soup.select_one(product["selector"])
    return float(el.text.strip().replace("$", "").replace(",", "")) if el else None

3. تتبع التغييرات بمرور الوقت

قم بتخزين النتائج في قاعدة بيانات أو ملف CSV. ضع علامة على التغييرات الكبيرة لإرسال تنبيهات:

if abs(new_price - last_price) / last_price > 0.03:  # 3% threshold
    send_alert(f"{product['competitor']} changed {product['sku']} from ${last_price} to ${new_price}")

4. الجدولة باستخدام Cron

قم بتشغيل أداة التتبع كل ساعة أو كل بضع ساعات اعتماداً على تقلبات الأسعار في سوقك.

لماذا ينجح هذا النهج

  • لا توجد بنية تحتية لتتم صيانتها. لا خوادم proxy، ولا مزارع متصفحات، ولا منطق لتدوير عناوين IP.
  • يتكيف مع تغييرات الحماية. يعيد نوع الـ proxy الخاص بـ FourA المحاولة تلقائياً عبر مسارات مختلفة عندما يتم حظر أحدها.
  • يتوسع خطياً. إضافة 100 منتج آخر هي مجرد 100 استدعاء API إضافي دون الحاجة إلى أي تغييرات معمارية.

البدء

تعمل الآلية الكاملة الموضحة أعلاه (باستثناء منطق التنبيه) في أقل من 50 سطراً من كود Python. وبمجرد أن تعمل من أجل 50 منتجاً، فإن التوسع إلى 500 منتج هو مجرد قائمة أطول. يظل استدعاء API كما هو، ويظل التحليل كما هو، وتظل الجدولة كما هي. هذا هو الهدف.

يتوفر كود المثال الكامل في دليل الإرشادات، وتغطي وثائق API كل معلمة ستحتاج إليها لتخصيصه.