Liste bağlantısını alın
Ödemeden sonra panelde get.advanced.name/<ID> gibi bir bağlantı çıkar. Her adres için bir satır olmak üzere ip:port satırları döndürür. HTTP ve SOCKS5 aynı porttadır.
Bir scraper'ın çok adrese, hızlı rotasyona ve trafik sayacı olmamasına ihtiyacı var. Tek bir Advanced.name paketi tek bağlantıda 5.000 ile 50.000 arası IPv4 adresi, 5.000'e kadar paralel thread ve adreslerin yaklaşık üçte birinin her gün değiştiği bir havuz verir.
Bir taramanın bitip bitmeyeceğini ya da ilk captcha'da ölüp ölmeyeceğini dört şey belirler.
Bir IP'nin siteye dakikada iki kez gitmeyeceği kadar adres
Tek listede 5.000 (1 numaralı paket) ile 50.000 (6 numaralı paket) arası adres
Taze havuz: engellenen IP'ler siz onlara ulaşmadan gitmeli
Havuzun yaklaşık üçte biri 24 saatte bir döner, liste 10 dakikada bir yenilenir
Tüm tarama için paralel bağlantılar
Pakete göre 500 ile 5.000 arası thread, tüm protokoller tek portta
Gigabaytları sayan yok
Hiçbir sınırsız pakette trafik sınırı yok: paket ve thread için ödersiniz
Bölge, paket, süre. Fiyat yetkilendirilmiş bir IP içindir; her ek IP %10 ekler.
Ödemeden sonra panelde get.advanced.name/<ID> gibi bir bağlantı çıkar. Her adres için bir satır olmak üzere ip:port satırları döndürür. HTTP ve SOCKS5 aynı porttadır.
Liste yalnızca panelde eklediğiniz IP'lerden açılır. Scraper ayarlarında kullanıcı adı ve şifre yok: anahtar adresin kendisidir.
Listeyi yükleyin, döngü içinde dolaşın, bir istek başarısız olursa URL'yi sıradaki proxy ile tekrarlayın. Aşağıdaki betik bunu standart kütüphaneyle yapar.
CSV_URL'yi panelinizdeki dışa aktarıma yönlendirin, COUNTRY ve MIN_SPEED değerlerini girin, hedef URL'leri urls.txt dosyasına koyun. Betik yalnızca gereken ülkeyi tutar, her URL'yi sıradaki proxy ile çeker ve biri başarısız olursa başka bir adresle tekrar dener. Önce havuzu Socks List Processor ile kontrol edin.
#!/usr/bin/env python3
"""Multithreaded scraper for Advanced.name proxies.
Reads the CSV proxy export, keeps the country and speed you need, then fetches a
list of target URLs through rotating proxies with automatic retries. Standard
library only, no pip. Edit the CONFIG block and run: python3 scrape.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 (e.g. DE, NL, US), or "" for the whole pool
MIN_SPEED = 3 # keep proxies with speed >= this value (higher is better)
THREADS = 50 # parallel requests
TIMEOUT = 15 # seconds per request
RETRIES = 3 # proxies to try before a URL is marked failed
URLS_FILE = "urls.txt" # one target URL per line
OUT_DIR = "pages" # fetched HTML is written here as 1.html, 2.html, ...
# ============================================================================
import csv
import io
import itertools
import os
import sys
import threading
import urllib.request
from concurrent.futures import ThreadPoolExecutor, as_completed
# CSV columns from the dashboard export, ';' separated:
# ip ; port ; country ; speed ; uptime ; exit_ip
COL_IP, COL_PORT, COL_COUNTRY, COL_SPEED, COL_UPTIME = 0, 1, 2, 3, 4
UA = "Mozilla/5.0 (compatible; scraper/1.0)"
def load_proxies():
"""Download the CSV list, keep the wanted country and speed, fastest first."""
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
country = row[COL_COUNTRY].strip().upper()
speed = int(row[COL_SPEED] or 0)
if COUNTRY and country != COUNTRY.upper():
continue
if speed < MIN_SPEED:
continue
pool.append((row[COL_IP].strip() + ":" + row[COL_PORT].strip(), speed))
pool.sort(key=lambda item: -item[1])
return [addr for addr, _ in pool]
def opener_for(proxy):
handler = urllib.request.ProxyHandler({"http": "http://" + proxy, "https": "http://" + proxy})
return urllib.request.build_opener(handler)
def main():
proxies = load_proxies()
if not proxies:
sys.exit("No proxies match COUNTRY=%r and MIN_SPEED=%d." % (COUNTRY, MIN_SPEED))
with open(URLS_FILE, encoding="utf-8") as fh:
urls = [u for u in map(str.strip, fh) if u and not u.startswith("#")]
os.makedirs(OUT_DIR, exist_ok=True)
print("proxies: %d (%s), urls: %d, threads: %d" % (len(proxies), COUNTRY or "any", len(urls), THREADS))
rotation = itertools.cycle(proxies)
lock = threading.Lock()
done = {"ok": 0, "fail": 0}
def fetch(index, url):
for _ in range(RETRIES):
with lock:
proxy = next(rotation)
req = urllib.request.Request(url, headers={"User-Agent": UA})
try:
body = opener_for(proxy).open(req, timeout=TIMEOUT).read()
except Exception:
continue
with open(os.path.join(OUT_DIR, "%d.html" % index), "wb") as out:
out.write(body)
return True
return False
with ThreadPoolExecutor(max_workers=THREADS) as pool:
futures = {pool.submit(fetch, i, u): u for i, u in enumerate(urls, 1)}
for fut in as_completed(futures):
ok = fut.result()
with lock:
done["ok" if ok else "fail"] += 1
total = done["ok"] + done["fail"]
sys.stderr.write("\r%d/%d ok %d fail %d" % (total, len(urls), done["ok"], done["fail"]))
sys.stderr.flush()
print("\nsaved %d pages to %s/ (%d failed)" % (done["ok"], OUT_DIR, done["fail"]))
if __name__ == "__main__":
main()
Proxy'yi her istekte verin: ProxyHandler ile bir opener kurun ya da requests'e proxies={'http': 'http://ip:port', 'https': 'http://ip:port'} verin. HTTP ve SOCKS tek portu paylaşır, bu yüzden http:// ikisini de kapsar; requests'te SOCKS5 için requests[socks] kurun ve DNS proxy tarafında çözülsün diye socks5h://ip:port kullanın.
Listeyi bir kez okuyun, döngü içinde dolaşın ve her istekte sıradaki adresi alın. Başarısız bir URL'yi atmadan önce iki üç kez başka bir proxy ile tekrar deneyin; yukarıdaki betik bunu zaten yapıyor.
Scrapy'de adresi request.meta['proxy'] içine koyun ya da oluşturucunun yazdığı dosyaya yönlendirilmiş bir proxy rotasyon middleware'i kullanın, CONCURRENT_REQUESTS değerini paketinizin thread sınırında ya da altında tutun. Octoparse ve ParseHub gibi görsel tarayıcılar aynı ip:port listesini proxy ayarlarında kabul eder.
Uzun bir taramadan önce havuzu bir kez Socks List Processor ile süzün, ölü adresler ayrıştırıcıya hiç ulaşmasın. Kodu hızlıca denemek için ücretsiz proxy listesi yeterli.


Yüksek hacimli tarama sınırsız pakette daha ucuza gelir. Liste adreslerini engelleyen sitelerden Resi Core ile geçin, şehir verisini Resi Prime ile çekin.
Yüksek hacimli taramaEn uygun seçim
Trafik sayılmaz: gigabaytlarca HTML ve görsel fiyatı değiştirmez. Adreslerin üçte biri her gün değişir, engellenenler listeden çıkar.
$700 aylıkveya saatlik $2.70
Korumalı siteler
Her istekte yeni bir ev IP'si. Paket adreslerinin captcha'ya takıldığı siteler için alın. Ülkeyi bağlantı dizesinde ayarlarsınız.
başlangıç $0.49 GB başına1 GB: $0.85
Şehir düzeyinde veri
Bağlantı dizesinde şehir, bölge, ISP ve ASN. Bir site farklı şehirlere farklı veri verdiğinde buna ihtiyacınız olur.
başlangıç $1.39 GB başına1 GB: $2.29
Bir paket seçin, ücretsiz test saatini alın, scraper'ınızı gerçek havuzda çalıştırın.