Вход Регистрация
Мониторинг цен

Прокси для мониторинга цен, которые магазины не замечают

Магазины показывают разные цены разным регионам и блокируют тех, кто спрашивает слишком часто с одного адреса. Трекер цен на Advanced.name размазывает запросы по десяткам тысяч адресов IPv4 и спрашивает каждый магазин из региона его покупателей.

  • 30 000 IP на пакете №4
  • цены из региона покупателя
  • обновление списка каждые 10 минут
Проход склада с планшетом, на котором график цен
Мониторинг цен

Что нужно трекеру цен и что даёт пакет

Трекер заходит на одни и те же страницы каждый час. Именно этот рисунок и блокируют, пул должен его спрятать.

Что нужно задачеЧто даёт пакет

Разный IP на каждый заход к одному товару

В пакете №4 30 000 адресов: карточка товара видит один и тот же IP раз в месяц

Цены такие, какими их видит местный покупатель

Пулы Европа, СНГ и Китай; Микс Мира для США и остальных рынков

Тысячи SKU каждый час

До 2 500 потоков на пакете №4, 5 000 на пакете №6

Страницы с картинками и скриптами, а не только JSON

Лимита трафика нет: тяните полные страницы так часто, как велит расписание

Безлимитные прокси

Подберите пакет под размер каталога

Десять тысяч SKU в час укладываются в пакет №3; слежка за целым маркетплейсом требует №4 и больше.

Регион
Срок
Авторизованных IP
1 +10% к тарифу за каждый IP свыше первого
Рекомендуем под эту задачу
$0
  • Прокси в пакете
  • Потоков
  • IP авторизации1
  • ПротоколыHTTP / SOCKS5
Все 13 пакетов в таблице тарифов

Три шага до первого среза цен

Разделите каталог по магазинам

У каждого магазина своя очередь запросов и своя доля списка прокси. Крупным маркетплейсам достаётся самая большая.

Ротируйте и повторяйте

На каждый запрос берите следующий адрес, при ошибке повторяйте дважды через другой, записывайте цену вместе с IP, который её принёс.

Обновляйте список каждые 10 минут

Адреса уходят из пула по мере старения. Ссылка всегда отдаёт актуальный набор, перечитывайте её по таймеру.

Готовый монитор цен: один запрос на товар, с ротацией

Заполните products.txt ссылками на товары и задайте COUNTRY. Каждый товар тянется через следующий прокси, цена выдёргивается и пишется в prices.csv. PRICE_RE подгоните под разметку магазина. Обкатать можно на бесплатных прокси.

CSV export link from your dashboard
buyers' country: prices are read as local shoppers see them
one product URL per line
regex, group 1 = the price
url;price;proxy;country is written here
Значения берутся из формы: скопируйте или скачайте готовый файл.
Показать код скрипта
Python 3.8+ · prices.py
#!/usr/bin/env python3
"""Price monitor for Advanced.name proxies.

Fetches product pages through proxies from the buyer's country and pulls the
price out of each page. One request per product goes through the next proxy, so
a shop sees the same address rarely. Standard library only. python3 prices.py
"""

# ================================ CONFIG ====================================
CSV_URL = "https://get.advanced.name/YOUR_LIST_ID.csv"  # CSV export link from your dashboard
COUNTRY = "DE"          # buyers' country: prices are read as local shoppers see them
MIN_SPEED = 3
PRODUCTS_FILE = "products.txt"           # one product URL per line
PRICE_RE = r'"price"\s*:\s*"?([0-9][0-9.,]*)'   # regex, group 1 = the price
OUT_FILE = "prices.csv"                   # url;price;proxy;country is written here
THREADS = 40
TIMEOUT = 20
RETRIES = 3
# ============================================================================

import csv
import io
import itertools
import re
import sys
import threading
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 (compatible; price-monitor/1.0)"
PRICE = re.compile(PRICE_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 grab(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() + "," + COUNTRY.upper()})
            try:
                html = urllib.request.build_opener(handler).open(req, timeout=TIMEOUT).read().decode("utf-8", "replace")
            except Exception:
                continue
            match = PRICE.search(html)
            return (match.group(1) if match else "not found"), proxy
        return "unreachable", ""

    rows = []
    with ThreadPoolExecutor(max_workers=THREADS) as pool:
        futures = {pool.submit(grab, u): u for u in products}
        for fut in as_completed(futures):
            url = futures[fut]
            price, proxy = fut.result()
            rows.append((url, price, proxy, COUNTRY))
            print("%-9s %s" % (price, url[:60]))

    with open(OUT_FILE, "w", encoding="utf-8", newline="") as out:
        writer = csv.writer(out, delimiter=";")
        writer.writerow(["url", "price", "proxy", "country"])
        writer.writerows(rows)
    print("written %s (%d rows)" % (OUT_FILE, len(rows)))


if __name__ == "__main__":
    main()
Настройка

Настройка трекера цен

Свой парсер

Тяните страницу товара через следующий прокси и берите цену из блока JSON-LD или узла цены; скрипт выше использует regex, который подгоняется под магазин. Отправляйте с местным IP Accept-Language и куку валюты региона, иначе магазин перекинет на другой рынок.

Расписание по нагрузке: наличие каждый час, цены дважды в день. Пишите HTTP-статус рядом с ценой — всплеск 403 от одного магазина значит притормозить там, а не везде.

Готовые программы и таблицы

Сервисы слежки за ценами и no-code парсеры (Octoparse, Web Scraper) берут список прокси в настройках — вставьте тот же файл ip:port. Даже Google Sheets IMPORTXML можно пустить через небольшой прокси-релей для лёгких проверок.

Пул держите свежим прокси-чекером, а схему обкатайте на бесплатных прокси до полного каталога.

На практике

Что видит трекер

Четыре правила для чистых данных о ценах

  1. Вместе с региональным IP отправляйте Accept-Language и куки валюты нужного региона; иначе магазин всё равно может вас перекинуть.
  2. Следите за кешированными и персональными ценами: два IP из одной страны должны вернуть одно число.
  3. Храните HTTP-статус рядом с каждой ценой. Всплеск 403 от одного магазина значит притормозить там, а не везде.
  4. Оставляйте небольшой запас потоков на перепроверку товаров, у которых цена прыгнула больше чем на 20%.

Тарифы за ГБ под эту задачу

Эта задача по странам

Показать все страны
FAQ

Вопросы по этой задаче

Как часто можно проверять один товар?
Раз в час безопасно на пакете №4: при 30 000 адресов карточка товара встречает один и тот же IP примерно раз в месяц.
Я увижу локальные цены?
Да, если IP из региона магазина, а запрос несёт заголовки языка и валюты этого региона.
Что с маркетплейсами на тяжёлом JavaScript?
Трафик не считается, поэтому headless-браузер через прокси подходит. Дайте ему 15–20 секунд таймаута и свежий IP на сессию.
Можно сначала попробовать на своём каталоге?
Час теста на любом пакете бесплатный, с полными потоками. Прогоните трекер час и сравните долю ошибок.
Как снять цены по городам?
Через Resi Prime: город задаётся в строке подключения, и магазин отдаёт местную цену и срок доставки. Безлимитные пакеты и Resi Core дают точность до страны.
Тарифы под задачу

Что взять под мониторинг цен

Ежечасный обход каталога выгоднее на безлимитном пакете. Магазинам со строгой защитой и ценам по городам нужны резидентные адреса.

Безлимитные прокси

Каталог каждый часЛучший выбор

Пакет №4 · Микс Мира · 30 000 IP · 2 500 потоков

Карточка товара встречает тот же IP примерно раз в месяц при ежечасной проверке. Полные страницы не увеличивают счёт.

$990 в месяцили $4.20 в час

Resi Core

Строгие магазины

2 млн+ IP · 200+ стран · потоки без лимита

Домашний IP страны магазина на каждый запрос. Для площадок, которые показывают адресам из списков капчу вместо цены.

от $0.49 за ГБ1 ГБ за $0.85

Resi Prime

Цены по городам

30 млн+ IP · 220 стран · потоки без лимита

Город и регион в строке подключения. Магазин показывает цену и доставку, какие видит покупатель этого города.

от $1.39 за ГБ1 ГБ за $2.29

Снимите сегодняшние цены во всех магазинах

Выберите пакет, возьмите бесплатный час, прогоните трекер по всему каталогу.

Цены Забрать час теста