MIX-Basic
8.000 IPs · 500–900 Threads
ab 50 $ im Monat
Ein Projekt: ein Crawl bis hunderttausend URLs, Keyword-Recherche, eine Linkprüfung pro Woche.
Ein Crawler läuft eine Website in hunderten Threads ab, und jeder Server antwortet ihm irgendwann mit einer 429. Ein MIX-Pool bis 25.000 IPs verteilt diese Threads auf verschiedene Adressen, sodass Screaming Frog, Netpeak Spider, A-Parser und Key Collector mit voller Geschwindigkeit laufen statt in einem Thread mit Pausen. Eine Teststunde kostet 1 $.

Wählen Sie ein Paket und verschieben Sie Laufzeit und Threads. Threads sind hier dieselben, die Sie in den Crawler-Einstellungen eintragen: 1.200 Threads sind 1.200 URLs, die das Tool gleichzeitig zieht. Auf diesem Wert steht der Regler.
MIX-Basic deckt das Audit eines Projekts ab: ein Crawl über 50–100 Tausend URLs in Screaming Frog oder Netpeak Spider, Keyword-Recherche in Key Collector, eine einmalige Prüfung defekter Links. 8.000 Adressen heben die Serverlimits auf, und 500 Threads entsprechen dem, was man üblicherweise im Crawler einträgt.
MIX-Business ist für eine SEO-Abteilung und eine Agentur gedacht: mehrere Projekte pro Woche, Sitebulb und SEO PowerSuite parallel, A-Parser für Suggests und SERPs, ScrapeBox für Massenprüfungen. 16.000 Adressen und 1.200 Threads als Voreinstellung: so viel trägt man ein, wenn der Crawl an einem Abend fertig sein soll.
MIX-Elite ist für den eigenen Dienst oder ein großes Inhouse-Team gebaut: Millionen URLs pro Crawl, Logs und Crawling gleichzeitig, eigene Indexierungs- und Paginierungsprüfer. Ein Pool von 25.000 Adressen und Threads bis 9.900 — an solche Zahlen kommen die übrigen Pakete nicht heran.
Ein Thread ist eine gleichzeitige Verbindung. Mehr Threads — mehr geschafft in derselben Zeit.
$50 für 1 Monatkein Aufpreis für Threads
spart $250 vs. TagespreisEin Thread ist eine gleichzeitige Verbindung. Mehr Threads — mehr geschafft in derselben Zeit.
$100 für 1 Monat+ $20 für Threads
spart $420 vs. TagespreisEin Thread ist eine gleichzeitige Verbindung. Mehr Threads — mehr geschafft in derselben Zeit.
$150 für 1 Monatkein Aufpreis für Threads
spart $450 vs. TagespreisDer Zugang hängt am Rechner oder Server selbst, deshalb bleiben in den Proxy-Einstellungen von Screaming Frog und Netpeak die Felder für Login und Passwort leer. Bis zu zehn solcher Rechner sind möglich.
Er liefert eine Textdatei im Format Adresse und Port, ein Proxy pro Zeile. Screaming Frog und Netpeak erwarten dieselbe Liste, nur als Datei: Speichern Sie die Antwort als .txt und geben Sie sie in den Einstellungen an.
A-Parser und ScrapeBox lesen den Link selbst neu ein und nehmen alle Adressen daraus. Key Collector, Sitebulb und SEO PowerSuite lesen eine Listendatei, aktualisieren Sie sie also alle 10 Minuten per Skript, Beispiel unten.
500 bei Basic, 1.000 bei Business, 1.500 bei Elite ohne Zubuchung. Jeder Port ist ein eigener Proxy, und ein Crawler-Thread belegt einen Port: mehr Threads in Screaming Frog als Ports im Paket bringen nichts.
SOCKS5 nehmen Screaming Frog, A-Parser, ZennoPoster und ScrapeBox. Netpeak Spider, Key Collector und SEO PowerSuite gehen über HTTP(S). Beide Protokolle liegen auf demselben Port, umgestellt wird nur im Tool.
So hängt der Pool an einem eigenen Audit. Das Skript liest die Adressen aus urls.txt, zieht jede Seite über einen zufälligen Proxy und legt Statuscode, Redirect, Title, H1, Description, Canonical und Robots in audit.csv ab — dasselbe, was ein Crawler zeigt, nur nach Ihren Regeln. Ersetzen Sie PROXY_LIST_URL_FROM_DASHBOARD durch den Link aus Ihrem Dashboard.
# pip install requests[socks]
import csv, random, re, time, requests
from concurrent.futures import ThreadPoolExecutor
PROXY_LIST_URL = "PROXY_LIST_URL_FROM_DASHBOARD"
REFRESH_SEC = 600
THREADS = 1200
HEADERS = {"User-Agent": "Mozilla/5.0 (compatible; SeoAudit/1.0)", "Accept-Language": "en-US,en;q=0.9"}
_pool, _loaded = [], 0
def pool():
global _pool, _loaded
if time.time() - _loaded > REFRESH_SEC:
text = requests.get(PROXY_LIST_URL, timeout=15).text
_pool = [line.strip() for line in text.splitlines() if ":" in line]
_loaded = time.time()
return _pool
def first(pattern, html):
match = re.search(pattern, html, re.S | re.I)
return re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", match.group(1))).strip() if match else ""
def audit(url, tries=3):
for _ in range(tries):
proxy = random.choice(pool())
try:
r = requests.get(url, headers=HEADERS, timeout=20, allow_redirects=False,
proxies={"http": f"socks5h://{proxy}", "https": f"socks5h://{proxy}"})
except requests.RequestException:
continue
html = r.text if "html" in r.headers.get("Content-Type", "") else ""
return {
"url": url,
"status": r.status_code,
"redirect": r.headers.get("Location", ""),
"title": first(r"<title[^>]*>(.*?)</title>", html),
"h1": first(r"<h1[^>]*>(.*?)</h1>", html),
"description": first(r'<meta[^>]+name="description"[^>]+content="([^"]*)"', html),
"canonical": first(r'<link[^>]+rel="canonical"[^>]+href="([^"]*)"', html),
"robots": first(r'<meta[^>]+name="robots"[^>]+content="([^"]*)"', html),
}
return {"url": url, "status": 0, "redirect": "", "title": "", "h1": "",
"description": "", "canonical": "", "robots": ""}
urls = [line.strip() for line in open("urls.txt") if line.strip()]
fields = ["url", "status", "redirect", "title", "h1", "description", "canonical", "robots"]
with open("audit.csv", "w", newline="", encoding="utf-8") as out:
writer = csv.DictWriter(out, fieldnames=fields, delimiter=";")
writer.writeheader()
with ThreadPoolExecutor(THREADS) as executor:
for row in executor.map(audit, urls):
writer.writerow(row)
print(row["status"], row["url"], row["title"][:60])
8.000 IPs · 500–900 Threads
ab 50 $ im Monat
Ein Projekt: ein Crawl bis hunderttausend URLs, Keyword-Recherche, eine Linkprüfung pro Woche.
16.000 IPs · 1.000–1.400 Threads
ab 100 $ im Monat
Agentur und SEO-Abteilung: mehrere Crawler gleichzeitig, Suggest-Ernte und Massenprüfungen auf einem Pool.
25.000 IPs · 1.500–9.900 Threads
ab 150 $ im Monat
Eigener Dienst und großes Inhouse-Team: Millionen URLs pro Crawl, Threads bis 9.900, rund um die Uhr.
import csv, io, requests
CSV_URL = "PROXY_LIST_URL_FROM_DASHBOARD.csv"
TAKE = 1200
OUT_FILE = "proxies_fast.txt"
text = requests.get(CSV_URL, timeout=15).text
rows = list(csv.DictReader(io.StringIO(text), delimiter=";"))
rows.sort(key=lambda r: int(r["speed"]), reverse=True)
picked = [f"{r['ip']}:{r['port']}" for r in rows[:TAKE]]
with open(OUT_FILE, "w") as f:
f.write("\n".join(picked) + "\n")
print(f"{len(picked)} proxies saved to {OUT_FILE}")
Alles Weitere zum Dienst steht in den allgemeinen FAQ, alle Pakete mit Preisen auf der Startseite.
Lassen Sie Ihren Crawler eine Stunde auf dem Pool laufen, sehen Sie sich das Crawl-Tempo an, dann wählen Sie die Laufzeit. Bei Paketen ab 3 Tagen geht der Rest zurück auf Ihr Guthaben.
Proxys für 1 $ testen