تسجيل الدخول إنشاء حساب
تتبع الترتيب

بروكسي لتتبع الترتيب والدولة موجودة في الرابط نفسه

تعرض محركات البحث النتائج حسب المنطقة، لذا يحتاج فاحص الترتيب إلى عنوان IP من الدولة الصحيحة لكل دفعة استعلامات. يعطي Resi Core عنوانًا منزليًا في أي من أكثر من 200 دولة مباشرة في سلسلة الاتصال، بينما تغطي الباقات غير المحدودة مع مرشح الدولة قوائم الكلمات المفتاحية الكبيرة. وقسم منفصل يتناول تتبع إجابات الذكاء الاصطناعي في Google، التي تعتمد أيضًا على الدولة والمدينة.

  • Resi Core: الدولة في السلسلة
  • عنوان IP جديد مع كل طلب
  • باقات لقوائم الكلمات المفتاحية الكبيرة
شاشة على مكتب برسم بياني لمراكز تصعد
تتبع الترتيب

ما تحتاجه أداة فحص الترتيب وما تقدمه الباقة

تتوقف المراكز على مصدر الاستعلام. على المجموعة أن تجيب عن هذا السؤال أولًا.

ما تحتاجه المهمةما تقدمه الخطط

عناوين من الدولة التي تتابعها

Resi Core: الدولة تُكتب في اسم المستخدم؛ وفي الباقات عمود الدولة في ملف CSV

عنوان IP جديد لكل دفعة استعلامات

يغيّر Resi Core العنوان مع كل طلب، والباقات تستبدل نحو ثلث العناوين يوميًا

استعلامات متوازية تكفي لقائمة كلمات مفتاحية كبيرة

بلا حد للخيوط في Resi، ومن 500 إلى 5000 خيط في الباقات

يعمل مع الأداة التي تستخدمها أصلًا

Resi باسم المستخدم وكلمة المرور في السلسلة، والباقات بعنوان IP؛ وA-Parser وKey Collector وRank Tracker تقبل HTTP وSOCKS5

بروكسيات سكنية

احسب الحركة لقائمة كلماتك المفتاحية

صفحة النتائج خفيفة، فيغطي الغيغابايت الواحد آلاف الاستعلامات. وينخفض سعر الغيغابايت مع حجم الطلب.

سعر البروكسيات السكنية لكل 1 غيغابايت حسب حجم الطلب
حجم الطلبResi CoreResi Prime
من 1 غيغابايت$0.85$2.29
من 10 غيغابايتوفّر 7%$0.79$2.09
من 50 غيغابايت$0.72$1.95
من 100 غيغابايت$0.65$1.75
من 500 غيغابايت$0.57$1.55
من 1000 غيغابايت$0.49$1.39

الأسعار بالدولار الأمريكي لكل 1 غيغابايت. تشتري غيغابايتات كاملة، بدءًا من واحد.

المجمّع

  • أكثر من 2 مليون IP منزلي في أكثر من 200 دولة
  • عنوان جديد مع كل طلب أو عنوان واحد لكل جلسة ما دام الجهاز متاحًا
  • البريد من صندوقك الخاص: 465 و587 للإرسال، وIMAP 993 وPOP3 995 للاستلام، والمنفذ 25 مغلق
  • حتى 1000 سطر دفعة واحدة، وتتجدد القائمة تلقائيًا كل N دقيقة
الإجمالي
$19.75
لكل 1 غيغابايت
$0.79
الشريحة
10–49 غيغابايت

توفّر 7% ($1.50) مقارنة بسعر 1 غيغابايت فأكثر

أضف 25 غيغابايت لينخفض سعر كل غيغابايت إلى $0.72

اشترِ هذه الكمية

يمكنك استخدام الغيغابايتات خلال 3 أشهر من تاريخ الشراء؛ وما يتبقى بعدها يُشطب.

عن البروكسيات السكنية

ثلاث خطوات إلى قائمة كلمات مفتاحية تحت المتابعة

اختر المنطقة

تابع Google.de عبر أوروبا، وYandex عبر رابطة الدول المستقلة، وBaidu عبر الصين. المزيج العالمي يغطي الباقي وفيه أكبر المجموعات.

صدّر حسب الدولة

خذ تصدير CSV وأبقِ الصفوف التي يطابق فيها عمود الدولة السوق التي تتابعها؛ يكتب لك المولّد الجاهز ملف ip:port لكل دولة.

أعطِها للأداة

تقبل أدوات فحص الترتيب ملف بروكسي أو رابطًا. اضبط التحديث كل 10 دقائق وستبقى القائمة محدّثة وحدها.

أداة جاهزة: المركز في نتائج البحث من الدولة المختارة

اضبط DOMAIN وCOUNTRY وضع كلماتك المفتاحية في keywords.txt. يستعلم السكربت من محرك البحث عبر بروكسي من تلك الدولة ويكتب مركز نطاقك في ملف CSV. أعطه مجموعة نظيفة من أداة فحص البروكسي.

CSV export link from your dashboard
ISO 3166-1 alpha-2: positions are read from this country
keep proxies with speed >= this value
the domain whose position you track
one keyword per line
{q}=keyword, {cc}=country
keyword;position;proxy is written here
القيم تأتي من النموذج؛ انسخ الملف الجاهز أو نزّله.
عرض كود السكربت
Python 3.8+ · rank.py
#!/usr/bin/env python3
"""Search-position checker for Advanced.name proxies.

Reads the CSV proxy export, keeps one country, then asks a search engine for each
keyword through a proxy from that country and reports where your domain sits in
the results. Standard library only. Edit CONFIG and run: python3 rank.py
"""

# ================================ CONFIG ====================================
CSV_URL = "https://get.advanced.name/YOUR_LIST_ID.csv"  # CSV export link from your dashboard
COUNTRY = "DE"          # ISO 3166-1 alpha-2: positions are read from this country
MIN_SPEED = 3           # keep proxies with speed >= this value
DOMAIN = "example.com"  # the domain whose position you track
KEYWORDS_FILE = "keywords.txt"           # one keyword per line
SEARCH_URL = "https://www.bing.com/search?q={q}&count=50&setlang={cc}"  # {q}=keyword, {cc}=country
OUT_FILE = "positions.csv"               # keyword;position;proxy is written here
TIMEOUT = 20
# ============================================================================

import csv
import io
import re
import sys
import urllib.parse
import urllib.request

COL_IP, COL_PORT, COL_COUNTRY, COL_SPEED = 0, 1, 2, 3
UA = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0 Safari/537.36"
HREF = re.compile(r'href="https?://([^/"]+)', re.I)


def load_proxies():
    raw = urllib.request.urlopen(CSV_URL, timeout=30).read().decode("utf-8", "replace")
    pool = []
    for row in csv.reader(io.StringIO(raw), delimiter=";"):
        if len(row) <= COL_SPEED or not row[COL_PORT].strip().isdigit():
            continue
        if COUNTRY and row[COL_COUNTRY].strip().upper() != COUNTRY.upper():
            continue
        if int(row[COL_SPEED] or 0) < MIN_SPEED:
            continue
        pool.append(row[COL_IP].strip() + ":" + row[COL_PORT].strip())
    return pool


def position(html, domain):
    """First place the domain shows up among the result links, or 0 if absent."""
    rank, seen = 0, set()
    for host in HREF.findall(html):
        host = host.lower()
        if "bing.com" in host or "microsoft.com" in host or host in seen:
            continue
        seen.add(host)
        rank += 1
        if host == domain or host.endswith("." + domain):
            return rank
    return 0


def main():
    proxies = load_proxies()
    if not proxies:
        sys.exit("No proxies for COUNTRY=%r." % COUNTRY)
    with open(KEYWORDS_FILE, encoding="utf-8") as fh:
        keywords = [line.strip() for line in fh if line.strip()]
    print("proxies: %d (%s), keywords: %d" % (len(proxies), COUNTRY, len(keywords)))

    with open(OUT_FILE, "w", encoding="utf-8", newline="") as out:
        writer = csv.writer(out, delimiter=";")
        writer.writerow(["keyword", "position", "proxy"])
        for i, keyword in enumerate(keywords):
            proxy = proxies[i % len(proxies)]
            url = SEARCH_URL.format(q=urllib.parse.quote(keyword), cc=COUNTRY.lower())
            handler = urllib.request.ProxyHandler({"http": "http://" + proxy, "https": "http://" + proxy})
            req = urllib.request.Request(url, headers={"User-Agent": UA, "Accept-Language": COUNTRY.lower()})
            try:
                html = urllib.request.build_opener(handler).open(req, timeout=TIMEOUT).read().decode("utf-8", "replace")
                pos = position(html, DOMAIN.lower())
            except Exception as exc:
                pos = "err: %s" % exc.__class__.__name__
            writer.writerow([keyword, pos, proxy])
            print("%-40s %s" % (keyword[:40], pos))
    print("written %s" % OUT_FILE)


if __name__ == "__main__":
    main()

سكربت: هل توجد كتلة ذكاء اصطناعي، وهل تستشهد بنطاقك

الصق سطر Resi من لوحة التحكم، واضبط DOMAIN، وضع الكلمات المفتاحية في keywords.txt. يفتح السكربت النتائج في Chromium حقيقي عبر البروكسي، وينتظر اكتمال تحميل كتلة الذكاء الاصطناعي، ويكتب إلى CSV هل الكتلة موجودة، وأي نطاقات تستشهد بها، وهل نطاقك بينها. يغلق بنفسه شريط ملفات تعريف الارتباط الأوروبي، ويشير في سطر منفصل إلى رمز التحقق أو خطأ البروكسي. يغيّر Google بنية صفحاته، لذا يوجد عنوان الكتلة في LABELS.

host:port:login:password line from your dashboard
the domain you want to see among the cited sources
one keyword per line
{q}=keyword
interface language of the results page
country of the results, keep it equal to the country in the login
heading text of the AI block, separated by |
cookie banner buttons in EU countries, in the HL language
keyword;ai_block;cited;your_domain is written here
time for the AI block to finish drawing
set False to watch the browser
القيم تأتي من النموذج؛ انسخ الملف الجاهز أو نزّله.
عرض كود السكربت
Python 3.8+ · ai_overview.py
#!/usr/bin/env python3
"""AI Overview tracker for Advanced.name residential proxies.

Opens Google results for every keyword through a Resi Core or Resi Prime line
in a real Chromium, because the AI block is drawn by JavaScript. Records
whether the page shows the AI block and which domains it cites.
Setup: pip install playwright && python -m playwright install chromium
"""

# ================================ CONFIG ====================================
PROXY = "res.advanced.name:9000:USER-type-residential-country-us:PASS"  # host:port:login:password line from your dashboard
DOMAIN = "example.com"  # the domain you want to see among the cited sources
KEYWORDS_FILE = "keywords.txt"  # one keyword per line
SEARCH_URL = "https://www.google.com/search?q={q}&hl={hl}&gl={gl}"  # {q}=keyword
HL = "en"  # interface language of the results page
GL = "us"  # country of the results, keep it equal to the country in the login
LABELS = "AI Overview|AI Mode"  # heading text of the AI block, separated by |
CONSENT = "Reject all|Accept all"  # cookie banner buttons in EU countries, in the HL language
OUT_FILE = "ai_overview.csv"  # keyword;ai_block;cited;your_domain is written here
WAIT_MS = 4000  # time for the AI block to finish drawing
HEADLESS = True  # set False to watch the browser
# ============================================================================

import csv
import sys
import urllib.parse

from playwright.sync_api import sync_playwright

FIND_BLOCK = """(labels) => {
  const heads = [...document.querySelectorAll('h1,h2,h3,div,span')]
    .filter(e => e.children.length === 0 && labels.includes(e.textContent.trim()));
  if (!heads.length) return null;
  let box = heads[0];
  for (let i = 0; i < 8 && box.parentElement; i++) {
    box = box.parentElement;
    const links = [...box.querySelectorAll('a[href^="http"]')];
    if (links.length >= 2 && box.innerText.length > 200) return links.map(a => new URL(a.href).hostname);
  }
  return [];
}"""


def proxy_of(line):
    host, port, user, password = line.strip().split(":", 3)
    return {"server": "http://%s:%s" % (host, port), "username": user, "password": password}


def bare(host):
    host = host.lower()
    return host[4:] if host.startswith("www.") else host


def main():
    keywords = [k.strip() for k in open(KEYWORDS_FILE, encoding="utf-8") if k.strip()]
    labels = [x.strip() for x in LABELS.split("|") if x.strip()]
    consent = [x.strip() for x in CONSENT.split("|") if x.strip()]
    rows = []
    with sync_playwright() as pw:
        browser = pw.chromium.launch(headless=HEADLESS, proxy=proxy_of(PROXY))
        page = browser.new_page(locale=HL)
        for kw in keywords:
            url = SEARCH_URL.format(q=urllib.parse.quote_plus(kw), hl=HL, gl=GL)
            try:
                resp = page.goto(url, wait_until="domcontentloaded", timeout=60000)
                if resp is None or resp.status >= 400:
                    status = "http %s" % (resp.status if resp else "none")
                    print("%-40s %s" % (kw[:40], status), file=sys.stderr)
                    rows.append([kw, status, "", ""])
                    continue
                for name in consent:
                    button = page.get_by_role("button", name=name)
                    if button.count():
                        button.first.click()
                        page.wait_for_load_state("domcontentloaded")
                        break
                if "/sorry/" in page.url:
                    print("%-40s captcha: change the session id in the login" % kw[:40], file=sys.stderr)
                    rows.append([kw, "captcha", "", ""])
                    continue
                page.wait_for_timeout(WAIT_MS)
                hosts = page.evaluate(FIND_BLOCK, labels)
            except Exception as exc:
                print("%-40s error: %s" % (kw[:40], str(exc).splitlines()[0]), file=sys.stderr)
                rows.append([kw, "error", "", ""])
                continue
            if hosts is None:
                print("%-40s no AI block" % kw[:40])
                rows.append([kw, "no", "", ""])
                continue
            cited = sorted({bare(h) for h in hosts if "google." not in h})
            mine = any(h == DOMAIN or h.endswith("." + DOMAIN) for h in cited)
            print("%-40s AI block, %d sources, %s %s" % (kw[:40], len(cited), DOMAIN, "cited" if mine else "not cited"))
            rows.append([kw, "yes", " ".join(cited), "yes" if mine else "no"])
        browser.close()
    with open(OUT_FILE, "w", encoding="utf-8", newline="") as f:
        out = csv.writer(f, delimiter=";")
        out.writerow(["keyword", "ai_block", "cited", "your_domain"])
        out.writerows(rows)
    print("saved", OUT_FILE)


if __name__ == "__main__":
    main()
الإعداد

إعداد أداة تتبع الترتيب

A-Parser, Key Collector, Rank Tracker

في A-Parser وKey Collector الصق قائمة ip:port في حقل البروكسي واضبط فاصل الفحص بحيث تمر الكلمة المفتاحية بعنوان واحد مرة في اليوم على الأكثر. تقرأ Rank Tracker والبرامج المكتبية المشابهة ملف بروكسي؛ وجّهها إلى القائمة التي يكتبها المولّد لكل دولة.

تتوقف المراكز على مصدر الاستعلام، لذا احتفظ بقائمة منفصلة لكل سوق: نسخة من الأداة لكل دولة، ولكل نسخة عناوين تلك الدولة فقط.

قراءة المراكز بكودك الخاص

يستعلم السكربت أعلاه من محرك البحث عبر بروكسي الدولة ويسجل موقع نطاقك. أرسل معاملات اللغة والمنطقة الخاصة بالمحرك مع البروكسي: العنوان يحدد الدولة والمعاملات تحدد المدينة.

افحص المجموعة قبل كل تشغيل بـأداة فحص البروكسي؛ ولتجربة يدوية خفيفة تصلح قائمة البروكسي المجانية. مقدمة عن نتائج البحث الإقليمية ستُنشر في المقالات.

إجابات الذكاء الاصطناعي في Google: ‏AI Overviews وAI Mode

يضع Google كتلة ذكاء اصطناعي فوق النتائج العادية أكثر فأكثر: إجابة قصيرة مع روابط إلى المصادر. يذهب جزء من النقرات إلى هناك، لذا تحتاج أن تعرف هل دخل موقعك المصادر، وأي استعلامات لا تعرض الكتلة أصلًا. تُبنى الكتلة حسب موقع المستخدم: للاستعلام نفسه قد ترى برلين وميونخ مصادر مختلفة.

لا ترى أداة جمع النتائج العادية هذه الكتلة أبدًا: يرسمها Google بـJavaScript بعد تحميل الصفحة. تحتاج متصفحًا حقيقيًا، مثل Chromium عبر Playwright، وعنوان IP منزليًا في الدولة الصحيحة. وعناوين القوائم كثيرًا ما تصطدم برمز التحقق في هذه النتائج، ولهذا يتولى Resi Core وResi Prime العمل هنا.

للتتبع على مستوى الدولة يكفي Resi Core مع رمز الدولة في اسم المستخدم. وعندما يهتم العميل بمدينة، خذ Resi Prime مع المدينة في السلسلة وجلسة ثابتة لكل دفعة استعلامات: تخرج الدفعة كلها حينها من عنوان واحد في تلك المدينة.

ماذا تسجّل وكم مرة

شغّل قائمة الكلمات المفتاحية مرة يوميًا أو مرة أسبوعيًا: كتلة الذكاء الاصطناعي تتغير أبطأ من الترتيب العادي. لكل استعلام سجّل التاريخ، والدولة أو المدينة، وهل الكتلة موجودة، وأي نطاقات تستشهد بها، وهل نطاقك بينها. بعد شهر ترى أي صفحات يأخذها الذكاء الاصطناعي في إجابته وأيها خرج.

السكربت الثاني أعلاه يكتب هذه الحقول بالضبط إلى CSV. والسكربت الأول يتتبع الترتيب العادي في الدولة نفسها، فيتطابق التقريران حسب الاستعلام.

في الواقع العملي

المراكز كما تبدو من كل دولة

أربعة إعدادات تجعل بيانات الترتيب صادقة

  1. استعلم عن كلمة مفتاحية من IP واحد مرة في اليوم على الأكثر؛ المجموعة كبيرة بما يكفي لتوزيع الحمل.
  2. افصل قوائم IP حسب الدولة: العناوين المختلطة تخلط النتائج.
  3. أضف معاملات اللغة والموقع الخاصة بمحرك البحث؛ البروكسي يحدد الدولة والمعاملات تحدد المدينة.
  4. استخدم صفحة البروكسيات المجانية لاختبار سريع، ثم انتقل إلى Resi Core أو باقة للتتبع اليومي.

خطط الغيغابايت لهذه المهمة

هذه المهمة حسب الدولة

عرض كل الدول
FAQ

أسئلة حول هذه المهمة

أي منطقة لـ Google؟
يعرض Google النتائج حسب دولة الباحث. في Resi Core ضع رمز الدولة في اسم المستخدم، فيخرج كل طلب من عنوان IP منزلي في تلك الدولة. وفي الباقات رشّح ملف CSV بعمود الدولة: Europe للاتحاد الأوروبي، وWorld MIX للولايات المتحدة وبقية العالم، وCIS للأسواق الناطقة بالروسية.
كيف أتتبع إجابات الذكاء الاصطناعي في Google؟
عبر Resi Core أو Resi Prime ومتصفح حقيقي: يرسم JavaScript كتلة الذكاء الاصطناعي، فلا يراها طلب HTTP عادي أبدًا. يفتح السكربت في هذه الصفحة النتائج في Chromium ويسجل هل الكتلة موجودة وهل تستشهد بنطاقك. ولمدن مختلفة خذ Resi Prime.
كم كلمة مفتاحية في اليوم؟
Resi Core بلا حد للخيوط، فالحركة التي تشتريها هي التي تحدد السقف. ومع 1000 خيط في الباقة #2 يعالج الفاحص عشرات الآلاف من الاستعلامات يوميًا؛ احتفظ بعنوان IP واحد لكل كلمة مفتاحية في اليوم.
هل أحتاج اسم مستخدم وكلمة مرور؟
ليس في الباقات: الوصول مربوط بعنوان IP للجهاز الذي يشغّل الفاحص. ويستخدم Resi Core اسم المستخدم وكلمة المرور من السلسلة ولا يحتاج قائمة بيضاء.
كيف أتتبع نتائج مدينة بعينها؟
معاملات الموقع في محرك البحث تحدد المدينة مع أي بروكسي. وعندما تعتمد النتائج على عنوان IP، خذ Resi Prime: تحدد المدينة في سلسلة الاتصال.
خطط لهذه المهمة

ماذا تأخذ لتتبع الترتيب

تتبّع نتائج الدول عبر Resi Core ونتائج المدن عبر Resi Prime، وشغّل قوائم الكلمات المفتاحية الكبيرة يوميًا على باقة غير محدودة بتكلفة أقل.

Resi Core

نتائج الدولالخيار الأنسب

أكثر من 2 مليون IP · أكثر من 200 دولة · بلا حد للخيوط

عنوان IP منزلي من الدولة الصحيحة مع كل طلب. صفحة النتائج خفيفة، فيغطي الغيغابايت الواحد آلاف الاستعلامات.

من $0.49 للغيغابايت1 غيغابايت بسعر $0.85

Resi Prime

نتائج المدن

أكثر من 30 مليون IP · 220 دولة · بلا حد للخيوط

المدينة والمنطقة في سلسلة الاتصال تعطيان النتائج التي يراها مستخدم من تلك المدينة.

من $1.39 للغيغابايت1 غيغابايت بسعر $2.29

بروكسيات غير محدودة

قوائم كلمات مفتاحية كبيرة

الباقة #2 · المزيج العالمي · 12,000 IP · 1000 خيوط

عشرات الآلاف من الاستعلامات يوميًا بلا عدّاد للحركة. تختار دولة السوق بالعمود في ملف CSV.

$378 شهريًاأو $2.10 للساعة

شاهد المراكز الحقيقية صباح الغد

خذ 1 غيغابايت من Resi Core، وحدد الدولة في السلسلة، وشغّل الفاحص على عناوين حية.

الأسعار جرّب ساعة مجانًا