Anmelden Registrieren
Positionsabfrage

Proxys für Positionsabfragen mit dem Land direkt im Link

Suchmaschinen zeigen Ergebnisse nach Region, ein Rank-Checker braucht also für jede Abfragegruppe eine IP aus dem richtigen Land. Resi Core liefert eine private Adresse in jedem von über 200 Ländern direkt im Verbindungsstring, unbegrenzte Pakete mit Länderfilter decken große Keyword-Listen ab. Ein eigener Abschnitt behandelt das Tracking der KI-Antworten von Google, die ebenfalls von Land und Stadt abhängen.

  • Resi Core: Land im String
  • eine neue IP bei jeder Anfrage
  • Pakete für große Keyword-Listen
Monitor mit steigendem Positionsdiagramm auf einem Schreibtisch
Positionsabfrage

Was ein Rank-Checker braucht und was das Paket bietet

Positionen hängen davon ab, woher die Anfrage kommt. Diese Frage muss der Pool zuerst beantworten.

Was die Aufgabe brauchtWas die Tarife bieten

Adressen aus dem Land, das Sie verfolgen

Resi Core: Das Land steht im Login; bei Paketen eine Länderspalte im CSV-Export

Eine neue IP für jede Abfragerunde

Resi Core wechselt die Adresse bei jeder Anfrage, Pakete tauschen täglich etwa ein Drittel der Adressen

Genug parallele Abfragen für eine große Keyword-Liste

Keine Thread-Grenze bei Resi, 500 bis 5000 Threads bei Paketen

Läuft mit dem Checker, den Sie schon nutzen

Resi per Login und Passwort im String, Pakete per IP; A-Parser, Key Collector und Rank Tracker akzeptieren HTTP und SOCKS5

Residential-Proxys

Berechnen Sie den Traffic für Ihre Keyword-Liste

Eine Ergebnisseite wiegt wenig, ein Gigabyte deckt also Tausende Abfragen. Der Preis pro GB sinkt mit der Bestellgröße.

Preis von Residential-Proxys pro 1 GB nach Bestellgröße
BestellgrößeResi CoreResi Prime
1 GB+$0.85$2.29
10 GB+7 % sparen$0.79$2.09
50 GB+$0.72$1.95
100 GB+$0.65$1.75
500 GB+$0.57$1.55
1000 GB+$0.49$1.39

Preise in US-Dollar pro 1 GB. Sie kaufen ganze Gigabytes, ab einem einzigen.

Pool

  • 2M+ private IPs in über 200 Ländern
  • Neue Adresse bei jeder Anfrage oder eine pro Sitzung, solange das Gerät erreichbar ist
  • Mail aus dem eigenen Postfach: 465 und 587 zum Senden, IMAP 993 und POP3 995 zum Abrufen, Port 25 gesperrt
  • Bis zu 1000 Zeilen auf einmal, die Liste erneuert sich alle N Minuten selbst
Summe
$19.75
Pro 1 GB
$0.79
Staffel
10–49 GB

Sie sparen 7 % ($1.50) gegenüber dem Preis ab 1 GB

Legen Sie 25 GB dazu, dann sinkt jedes Gigabyte auf $0.72

Diese Menge kaufen

Sie können die Gigabytes 3 Monate ab dem Kauf nutzen; was danach übrig ist, verfällt.

Zu Residential

Drei Schritte zu einer verfolgten Keyword-Liste

Region wählen

Google.de über Europa verfolgen, Yandex über GUS, Baidu über China. World MIX deckt den Rest und die größten Pools ab.

Nach Land exportieren

Nehmen Sie den CSV-Export und behalten Sie die Zeilen, deren Länderspalte zum verfolgten Markt passt; der fertige Builder schreibt Ihnen pro Land eine ip:port-Datei.

Das Werkzeug füttern

Rank-Checker nehmen eine Proxy-Datei oder eine URL. Stellen Sie die Aktualisierung auf 10 Minuten, dann bleibt die Liste von selbst aktuell.

Fertiger Checker: SERP-Position aus einem gewählten Land

Stellen Sie DOMAIN und COUNTRY ein und schreiben Sie Ihre Keywords in keywords.txt. Das Skript fragt die Suchmaschine über einen Proxy aus diesem Land und schreibt die Position Ihrer Domain in eine CSV. Füttern Sie es mit einem sauberen Pool aus dem Proxy-Checker.

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
Die Werte kommen aus dem Formular; kopieren Sie die fertige Datei oder laden Sie sie herunter.
Skriptcode anzeigen
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()

Skript: Gibt es einen KI-Block, und zitiert er Ihre Domain?

Fügen Sie eine Resi-Zeile aus Ihrem Kundenbereich ein, setzen Sie DOMAIN und legen Sie die Keywords in keywords.txt ab. Das Skript öffnet die Ergebnisse über den Proxy in einem echten Chromium, wartet, bis der KI-Block geladen ist, und schreibt in die CSV, ob der Block da ist, welche Domains er zitiert und ob Ihre darunter ist. Den EU-Cookie-Banner schließt es selbst, ein Captcha oder einen Proxy-Fehler markiert es in einer eigenen Zeile. Google ändert sein Markup, daher steht die Überschrift des Blocks in 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
Die Werte kommen aus dem Formular; kopieren Sie die fertige Datei oder laden Sie sie herunter.
Skriptcode anzeigen
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()
Einrichtung

Einen Rank Tracker einrichten

A-Parser, Key Collector, Rank Tracker

In A-Parser und Key Collector fügen Sie die ip:port-Liste ins Proxy-Feld ein und stellen das Prüfintervall so, dass ein Keyword eine Adresse höchstens einmal am Tag trifft. Rank Tracker und ähnliche Desktop-Werkzeuge lesen eine Proxy-Datei; lassen Sie sie auf die Liste zeigen, die der Builder pro Land schreibt.

Positionen hängen davon ab, woher die Anfrage kommt, führen Sie also eine eigene Liste pro Markt: eine Tracker-Instanz pro Land, jede nur mit Adressen dieses Landes.

Positionen im eigenen Code auslesen

Das Skript oben fragt die Suchmaschine über einen Länder-Proxy und notiert den Platz Ihrer Domain. Schicken Sie die Sprach- und Regionsparameter der Suchmaschine zusammen mit dem Proxy: Die Adresse bestimmt das Land, die Parameter die Stadt.

Prüfen Sie den Pool vor einem Lauf mit dem Proxy-Checker; für einen leichten Test von Hand genügt die kostenlose Proxyliste. Eine Einführung in regionale Suchergebnisse folgt bei den Artikeln.

KI-Antworten von Google: AI Overviews und AI Mode

Immer öfter setzt Google einen KI-Block über die normalen Ergebnisse: eine kurze Antwort mit Links zu Quellen. Ein Teil der Klicks geht dorthin, Sie müssen also wissen, ob Ihre Website unter den Quellen ist und bei welchen Abfragen gar kein Block erscheint. Der Block entsteht nach dem Standort des Nutzers: Für dieselbe Abfrage können Berlin und München unterschiedliche Quellen sehen.

Ein normaler Ergebnis-Scraper sieht diesen Block nie: Google zeichnet ihn nach dem Laden der Seite per JavaScript. Sie brauchen einen echten Browser, etwa Chromium über Playwright, und eine private IP im richtigen Land. Listenadressen landen bei diesen Ergebnissen oft im Captcha, deshalb erledigen hier Resi Core und Resi Prime die Arbeit.

Für das Tracking auf Länderebene reicht Resi Core mit dem Ländercode im Login. Ist dem Kunden eine Stadt wichtig, nehmen Sie Resi Prime mit der Stadt im String und einer festen Sitzung pro Abfragegruppe: Die ganze Gruppe geht dann von einer Adresse in dieser Stadt hinaus.

Was man festhält und wie oft

Lassen Sie die Keyword-Liste einmal am Tag oder einmal pro Woche laufen: Der KI-Block ändert sich langsamer als normale Positionen. Notieren Sie für jede Abfrage das Datum, das Land oder die Stadt, ob der Block da ist, welche Domains er zitiert und ob Ihre darunter ist. Nach einem Monat sehen Sie, welche Seiten die KI in ihre Antwort aufnimmt und welche herausgefallen sind.

Das zweite Skript oben schreibt genau diese Felder in eine CSV. Das erste Skript trackt die normalen Positionen im selben Land, die beiden Berichte passen also pro Abfrage zusammen.

Aus der Praxis

Positionen so, wie sie aus jedem Land aussehen

Vier Einstellungen für ehrliche Positionsdaten

  1. Fragen Sie ein Keyword von einer IP höchstens einmal am Tag ab; der Pool ist groß genug, um die Last zu verteilen.
  2. Halten Sie die IP-Listen pro Land getrennt: Gemischte Adressen vermischen die Suchergebnisse.
  3. Geben Sie die Sprach- und Standortparameter der Suchmaschine mit; der Proxy bestimmt das Land, die Parameter die Stadt.
  4. Nutzen Sie die Seite mit Gratis-Proxys für einen schnellen Funktionstest und wechseln Sie für das tägliche Tracking zu Resi Core oder einem Paket.

Diese Aufgabe nach Land

Alle Länder anzeigen
FAQ

Fragen zu dieser Aufgabe

Welche Region für Google?
Google zeigt Ergebnisse nach dem Land des Suchenden. Setzen Sie bei Resi Core den Ländercode ins Login, dann geht jede Anfrage von einer privaten IP in diesem Land hinaus. Filtern Sie bei Paketen den CSV-Export nach der Länderspalte: Europa für die EU, World MIX für die USA und den Rest der Welt, GUS für russischsprachige Märkte.
Wie tracke ich die KI-Antworten von Google?
Über Resi Core oder Resi Prime und einen echten Browser: JavaScript zeichnet den KI-Block, eine einfache HTTP-Anfrage sieht ihn also nie. Das Skript auf dieser Seite öffnet die Ergebnisse in Chromium und hält fest, ob der Block da ist und ob er Ihre Domain zitiert. Für verschiedene Städte nehmen Sie Resi Prime.
Wie viele Keywords pro Tag?
Resi Core hat keine Thread-Grenze, die Obergrenze setzt also der gekaufte Traffic. Mit 1000 Threads auf Paket #2 schafft ein Checker Zehntausende Abfragen am Tag; halten Sie eine IP pro Keyword und Tag.
Brauche ich Login und Passwort?
Bei Paketen nicht: Der Zugang ist an die IP des Rechners gebunden, auf dem der Checker läuft. Resi Core nutzt Login und Passwort aus dem String und braucht keine Whitelist.
Wie tracke ich die Ergebnisse einer bestimmten Stadt?
Die Standortparameter der Suchmaschine setzen die Stadt mit jedem Proxy. Hängen die Ergebnisse von der IP ab, nehmen Sie Resi Prime: Die Stadt legen Sie im Verbindungsstring fest.
Tarife für diese Aufgabe

Was man für Rank-Tracking nimmt

Tracken Sie Länderergebnisse über Resi Core und Städteergebnisse über Resi Prime, und lassen Sie große Keyword-Listen täglich günstiger über ein unbegrenztes Paket laufen.

Resi Core

LänderergebnisseBeste Wahl

2M+ IPs · über 200 Länder · ohne Thread-Grenze

Eine private IP aus dem richtigen Land bei jeder Anfrage. Eine Ergebnisseite wiegt wenig, ein Gigabyte deckt also Tausende Abfragen.

ab $0.49 pro GB1 GB für $0.85

Resi Prime

Städteergebnisse

30M+ IPs · 220 Länder · ohne Thread-Grenze

Stadt und Region im Verbindungsstring liefern die Ergebnisse, die ein Nutzer aus dieser Stadt sieht.

ab $1.39 pro GB1 GB für $2.29

Unbegrenzte Proxys

Große Keyword-Listen

Paket #2 · World MIX · 12.000 IP · 1000 Threads

Zehntausende Abfragen am Tag ohne Traffic-Zähler. Das Marktland wählen Sie über die Spalte im CSV-Export.

$378 pro Monatoder $2.10 pro Stunde

Morgen früh echte Positionen sehen

Nehmen Sie 1 GB Resi Core, setzen Sie das Land im String und lassen Sie den Checker auf lebenden Adressen laufen.

Preise Gratisstunde holen