Pazar yeri ve ülkeye göre bölün
Her pazar için bir liste: o ülkenin CSV satırlarını tutun ve her ayrıştırıcıya kendi ip:port dosyasını verin.
Çevrimiçi perakende başkalarının verisiyle yaşar: rakiplerin stoku, fiyatları, her ülkedeki alıcıların gördüğü haliyle listeleri. Pazar yerleri liste adreslerini diğer sitelerden daha sert keser, bu yüzden ana tarama doğru ülkeden bir ev IP'siyle Resi Core üzerinden yapılır; sınırsız paketler ise daha basit mağazaları ve büyük hacmi karşılar.
Pazar yerleri webin en iyi korunan siteleridir. Havuzun büyük, yerel ve taze olması gerekir.
Yerel alıcının gördüğü haliyle ilanlar
Resi Core: pazar yeri ülkesinden bir ev IP'si; Resi Prime şehir ve teslimat tarihini ekler
Binlerce üründe stok ve fiyat kontrolü
Resi'de thread sınırı yok, paketlerde 2500'e kadar
Pazar yeri engellemesinden sağ çıkan adresler
Resi Core havuzunda 2 milyonu aşkın adres var, her istekte yeni bir IP
Görselli ve yorumlu tam sayfalar
Sınırsız paketlerde trafik sayılmaz; Resi'de görselleri kapatın ve yalnızca HTML için ödeyin
Scraper'da görselleri ve betikleri kapatın, gigabaytlar liste HTML'sine gitsin. GB başına fiyat sipariş büyüdükçe düşer.
| Sipariş büyüklüğü | Resi Core | Resi Prime |
|---|---|---|
| 1 GB+ | $0.85 | $2.29 |
| 10 GB+ | $0.79 | $2.09 |
| 50 GB+ | $0.72 | $1.95 |
| 100 GB+%24 tasarruf | $0.65 | $1.75 |
| 500 GB+ | $0.57 | $1.55 |
| 1000 GB+ | $0.49 | $1.39 |
Fiyatlar 1 GB başına ABD doları cinsindendir. Tam gigabayt satın alırsınız, birden başlayarak.
Havuz
1 GB+ fiyatına göre %24 ($20.00) tasarruf edersiniz
400 GB ekleyin, her gigabayt $0.57 fiyatına iner
Bu miktarı satın alGigabaytları satın alma tarihinden itibaren 3 ay kullanabilirsiniz; sonrasında kalan kısım silinir.
Her pazar için bir liste: o ülkenin CSV satırlarını tutun ve her ayrıştırıcıya kendi ip:port dosyasını verin.
Stok saatte bir, fiyatlar günde iki kez, ilanlar günde bir kez. Her istek listedeki sıradaki adresten.
Her kayıtla birlikte fiyatı, stok işaretini, teslim tarihini ve IP'nin ülkesini kaydedin: farkları sonradan ülke açıklar.
products.txt dosyasını doldurun ve COUNTRY'yi girin; her ürün yerel bir proxy ile okunur, fiyat ve stok işareti çıkarılıp stock.csv dosyasına eklenir, böylece grafiğe dökebileceğiniz bir geçmiş oluşur. PRICE_RE ve INSTOCK_RE'yi pazar yerine göre ayarlayın.
#!/usr/bin/env python3
"""Marketplace stock and price watcher for Advanced.name proxies.
For each product URL it fetches the page through a proxy from the target country
and pulls both the price and an in-stock flag, writing a CSV you can chart over
time. Standard library only. Edit CONFIG and run: python3 stock.py
"""
# ================================ CONFIG ====================================
CSV_URL = "https://get.advanced.name/YOUR_LIST_ID.csv" # CSV export link from your dashboard
COUNTRY = "IT" # marketplace country
MIN_SPEED = 3
PRODUCTS_FILE = "products.txt" # one product URL per line
PRICE_RE = r'"price"\s*:\s*"?([0-9][0-9.,]*)' # group 1 = price
INSTOCK_RE = r'"availability"\s*:\s*"[^"]*InStock' # matches when in stock
OUT_FILE = "stock.csv" # url;price;in_stock;proxy is written here
THREADS = 40
TIMEOUT = 20
RETRIES = 3
# ============================================================================
import csv
import io
import itertools
import re
import sys
import threading
import time
import urllib.request
from concurrent.futures import ThreadPoolExecutor, as_completed
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"
PRICE = re.compile(PRICE_RE)
INSTOCK = re.compile(INSTOCK_RE)
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 main():
proxies = load_proxies()
if not proxies:
sys.exit("No proxies for COUNTRY=%r." % COUNTRY)
with open(PRODUCTS_FILE, encoding="utf-8") as fh:
products = [line.strip() for line in fh if line.strip() and not line.startswith("#")]
print("proxies: %d (%s), products: %d" % (len(proxies), COUNTRY, len(products)))
rotation = itertools.cycle(proxies)
lock = threading.Lock()
def watch(url):
for _ in range(RETRIES):
with lock:
proxy = next(rotation)
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")
except Exception:
continue
price = PRICE.search(html)
return (price.group(1) if price else ""), ("yes" if INSTOCK.search(html) else "no"), proxy
return "", "unreachable", ""
rows = []
with ThreadPoolExecutor(max_workers=THREADS) as pool:
futures = {pool.submit(watch, u): u for u in products}
for fut in as_completed(futures):
url = futures[fut]
price, stock, proxy = fut.result()
rows.append((time.strftime("%Y-%m-%d %H:%M"), url, price, stock, proxy))
print("%-4s %-9s %s" % (stock, price, url[:56]))
header = not _exists(OUT_FILE)
with open(OUT_FILE, "a", encoding="utf-8", newline="") as out:
writer = csv.writer(out, delimiter=";")
if header:
writer.writerow(["checked_at", "url", "price", "in_stock", "proxy"])
writer.writerows(rows)
print("appended %d rows to %s" % (len(rows), OUT_FILE))
def _exists(path):
try:
open(path).close()
return True
except OSError:
return False
if __name__ == "__main__":
main()
CSV dışa aktarımdan her pazar yeri ülkesi için ayrı bir ip:port listesi oluşturun ve her ayrıştırıcıya kendi dosyasını verin. Bölgesel IP ile pazar yerinin ülke çerezini gönderin; bazı siteler bölgeyi adresten önce bir çerezden okur.
Stok sayısını önbellekteki arama sonuçlarından değil, ürün sayfasından ya da sepetten alın ve 403'ler çıktığında genel değil, pazar yeri bazında yavaşlayın.
Yukarıdaki izleyiciyi cron'dan çalıştırın ve tek bir CSV'ye ekleyin, grafiğe dökülecek bir geçmiş oluşsun. Her kayıtla IP'nin ülkesini yazın; fiyat ve teslimat farklarını sonradan ülke açıklar.
Havuzu Socks List Processor ile taze tutun ve tam kataloğa geçmeden önce ayrıştırıcıyı ücretsiz proxy listesinde deneyin.



Büyük pazar yerlerini Resi Core ile tarayın, satıcı hesabını ve şehir fiyatlarını Resi Prime'da tutun, daha basit mağazaları sınırsız bir paketle daha ucuza çekin.
Pazar yeri taramasıEn uygun seçim
Her istekte pazar yeri ülkesinden bir ev IP'si, böylece engellenen bir adres taramayı durdurmaz. Aldığınız gigabaytları üç ayda harcarsınız.
başlangıç $0.49 GB başına1 GB: $0.85
Satıcı hesabı ve şehir
Bir satıcı hesabı 24 saate kadar tek bir ev IP'sinde kalır. Dizedeki şehir ve ISP, o şehirdeki bir alıcının gördüğü fiyatı ve teslimat tarihini gösterir.
başlangıç $1.39 GB başına1 GB: $2.29
Basit mağazalar ve hacim
Trafik sayılmaz, bu yüzden görselli tam listeler faturayı artırmaz. Liste adreslerini kesmeyen mağazalara uyar.
$397 aylıkveya saatlik $2.20
Pazar yerleri için Resi Core'u alın, scraper'ı 1 GB ile deneyin ve tracker'ı sattığınız her pazarda çalıştırın.