[ВЛАДЕЛЬЦУ] Один рабочий прокси на три источника — 37 из 53 банов от исчерпания пула, а не от площадок #2638

Open
opened 2026-08-02 14:38:16 +00:00 by lekss361 · 4 comments
Owner

Итог измерения по вопросу «как уменьшить баны и продлить жизнь прокси». Требует решения владельца, потому что упирается в деньги.

Состояние пула прямо сейчас

id  label                  affinity   enabled  fails
 1  asocks-residential-1   domclick   да        0     ← зарезервирован под Домклик
 9  asocks-mobile-1        any        НЕТ      10     ← мёртв
10  asocks-mobile-2        any        да        0     ← ЕДИНСТВЕННЫЙ рабочий
11  asocks-mobile-3        any        НЕТ      10     ← мёртв

Узлы 9 и 11 умерли окончательно: самовосстановление (#2609) исправно переопрашивает их каждый час, и они честно не отвечают (connection refused / 502). Это не ложное отключение — они действительно нерабочие.

Итого: один узел на Авито, Циан и Яндекс.

Как это порождает баны

Аренда узла эксклюзивная (leased_by, FOR UPDATE SKIP LOCKED). Когда развёртки трёх источников пересекаются во времени, узел достаётся одному, остальные получают None — и падают на переменную окружения, а она мертва (#2613). Результат — browser unavailable (proxy may be down), записывается как banned.

Раскладка 53 банов за 14 дней (все Авито, у Циана/Яндекса/Домклика ноль):

причина прогонов статус
пула не было в коде вовсе (полные загрузки) 16 исправлено, PR #2637 в проде
пул был, но узел занят/мёртв → падение на env 37 нужен второй рабочий узел
настоящая блокировка площадкой 1

То есть после #2637 останется около 37 банов, и они упрутся не в код, а в ёмкость.

Что уже сделано, чтобы обойтись малым

  • Срезана нагрузка (#2633, в проде): полная загрузка Циана давала 90% всех запросов — замедлена вчетверо и переведена на трёхдневный такт; выключены задачи с нулевым выходом; областные развёртки на трёхдневном такте.
  • Прошит пул в Авито (#2637, в проде).
  • Отказ вместо хода через мёртвый прокси (#2634, открыт) — превращает молчаливый бан в честную ошибку.

После этих мер суточный объём падает в разы, и одному узлу станет легче. Но эксклюзивная аренда при трёх источниках всё равно оставляет окна, когда двое из трёх остаются без прокси.

Решение за владельцем

Вариант А — восстановить два мёртвых порта ASocks. Узлы 9 и 11 куплены, но не отвечают. Возможно, порты нужно пересоздать в кабинете или они деактивированы. Это самый дешёвый путь: вернёт пул к трём рабочим узлам без новых трат.

Вариант Б — докупить узлы. По измерению достаточно 3-4 рабочих «общих» узла, чтобы три источника не конкурировали. ⚠️ Но сначала нужна привязка узла к прогону (см. ниже), иначе добавление узлов сделает хуже.

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

⚠️ Техническое предусловие перед покупкой

Выдача узлов идёт по принципу «давно не использованный» (ORDER BY last_ok_at NULLS LAST). При двух и более живых узлах это заставит браузер перезапускаться при каждой смене прокси (+5-10 секунд к запросу). Нужна привязка узла к прогону на всё время прогона. Без неё расширение пула ухудшит ситуацию, а не улучшит.

Это отдельная небольшая задача, и её надо сделать до, а не после покупки.

Отдельно: токен ASocks

ASOCKS_API_TOKEN на проде не задан, ротаций за месяц — ноль (scrape_proxy_rotations пуста). Механизм ротации построен и отревьюен (#2611), но вызывать его нечем. При живом токене доступно 12 ротаций в сутки (4 порта × 3) — этого хватит на текущую частоту реальных банов с запасом, но только после того, как баны станут распознаваться (#2625).

Связано: #2600, #2609, #2611, #2613, #2625, #2633, #2634, #2637.

Итог измерения по вопросу «как уменьшить баны и продлить жизнь прокси». Требует решения владельца, потому что упирается в деньги. ## Состояние пула прямо сейчас ``` id label affinity enabled fails 1 asocks-residential-1 domclick да 0 ← зарезервирован под Домклик 9 asocks-mobile-1 any НЕТ 10 ← мёртв 10 asocks-mobile-2 any да 0 ← ЕДИНСТВЕННЫЙ рабочий 11 asocks-mobile-3 any НЕТ 10 ← мёртв ``` Узлы 9 и 11 умерли окончательно: самовосстановление (#2609) исправно переопрашивает их каждый час, и они честно не отвечают (connection refused / 502). Это не ложное отключение — они действительно нерабочие. **Итого: один узел на Авито, Циан и Яндекс.** ## Как это порождает баны Аренда узла эксклюзивная (`leased_by`, `FOR UPDATE SKIP LOCKED`). Когда развёртки трёх источников пересекаются во времени, узел достаётся одному, остальные получают `None` — и падают на переменную окружения, а она мертва (#2613). Результат — `browser unavailable (proxy may be down)`, записывается как `banned`. Раскладка 53 банов за 14 дней (**все Авито**, у Циана/Яндекса/Домклика ноль): | причина | прогонов | статус | |---|---|---| | пула не было в коде вовсе (полные загрузки) | **16** | ✅ исправлено, PR #2637 в проде | | пул был, но узел занят/мёртв → падение на env | **37** | ⛔ нужен второй рабочий узел | | настоящая блокировка площадкой | **1** | — | То есть после #2637 останется около 37 банов, и они упрутся не в код, а в ёмкость. ## Что уже сделано, чтобы обойтись малым - Срезана нагрузка (#2633, в проде): полная загрузка Циана давала 90% всех запросов — замедлена вчетверо и переведена на трёхдневный такт; выключены задачи с нулевым выходом; областные развёртки на трёхдневном такте. - Прошит пул в Авито (#2637, в проде). - Отказ вместо хода через мёртвый прокси (#2634, открыт) — превращает молчаливый бан в честную ошибку. После этих мер суточный объём падает в разы, и одному узлу станет легче. Но эксклюзивная аренда при трёх источниках всё равно оставляет окна, когда двое из трёх остаются без прокси. ## Решение за владельцем **Вариант А — восстановить два мёртвых порта ASocks.** Узлы 9 и 11 куплены, но не отвечают. Возможно, порты нужно пересоздать в кабинете или они деактивированы. Это самый дешёвый путь: вернёт пул к трём рабочим узлам без новых трат. **Вариант Б — докупить узлы.** По измерению достаточно 3-4 рабочих «общих» узла, чтобы три источника не конкурировали. ⚠️ Но сначала нужна привязка узла к прогону (см. ниже), иначе добавление узлов сделает хуже. **Вариант В — ничего не покупать**, принять, что часть прогонов будет пропускаться. После срезания нагрузки это может оказаться приемлемым — увидим по данным за несколько дней. ## ⚠️ Техническое предусловие перед покупкой Выдача узлов идёт по принципу «давно не использованный» (`ORDER BY last_ok_at NULLS LAST`). При двух и более живых узлах это заставит браузер перезапускаться при каждой смене прокси (+5-10 секунд к запросу). Нужна привязка узла к прогону на всё время прогона. Без неё расширение пула ухудшит ситуацию, а не улучшит. Это отдельная небольшая задача, и её надо сделать до, а не после покупки. ## Отдельно: токен ASocks `ASOCKS_API_TOKEN` на проде не задан, ротаций за месяц — **ноль** (`scrape_proxy_rotations` пуста). Механизм ротации построен и отревьюен (#2611), но вызывать его нечем. При живом токене доступно 12 ротаций в сутки (4 порта × 3) — этого хватит на текущую частоту реальных банов с запасом, но только после того, как баны станут распознаваться (#2625). Связано: #2600, #2609, #2611, #2613, #2625, #2633, #2634, #2637.
Author
Owner

Владелец ротировал все порты — результат проверен пробой

прокси до ротации после вывод
id 1 asocks-residential-1 жив, 45.140.53.215 жив, 45.147.168.89 адрес сменился, работает
id 10 asocks-mobile-2 жив жив, 2.15.167.217 работает
id 11 asocks-mobile-3 мёртв (502), выключен, 11 фейлов ЖИВ, 136.169.169.152 ожил ротацией
id 9 asocks-mobile-1 мёртв (connection refused) по-прежнему connection refused ротация не помогла

id 11 включён вручную сразу после пробы (самовосстановление вернуло бы его в течение часа, но ждать незачем).

Пул сейчас

 1  asocks-residential-1   domclick   вкл   0 фейлов
 9  asocks-mobile-1        any        ВЫКЛ  12 фейлов   ← требует внимания
10  asocks-mobile-2        any        вкл   0 фейлов
11  asocks-mobile-3        any        вкл   0 фейлов

Общих узлов стало два вместо одного — для Авито, Циана и Яндекса это вдвое меньше конкуренции за аренду. С учётом того, что суточный объём срезан миграцией 206 (полная загрузка Циана давала 90% запросов, теперь вчетверо медленнее и раз в трое суток), нагрузка на узел падает кратно.

Что осталось по id 9

Connection refused — это отказ на уровне соединения, а не авторизации: порт не слушает вообще. Ротация IP такого не лечит. Варианты: порт деактивирован в кабинете, истёк, либо требует пересоздания. Стоит посмотреть его состояние в личном кабинете ASocks — если он оплачен, но не отвечает, это вопрос к поддержке провайдера.

Для сравнения: у мёртвых mobileproxy-узлов была другая картина — 407 Proxy Authentication Required, то есть порт отвечал, но не принимал учётные данные (закрытая подписка). Здесь порт молчит.

Прогноз

Ожидаю снижения банов из двух источников сразу:

  1. #2637 (в проде) — 16 прогонов полных загрузок Авито получили пул;
  2. второй общий узел — часть из 37 прогонов, падавших при исчерпании пула, теперь получит прокси.

Проверю по scrape_runs за следующие сутки. Если баны не исчезнут — значит остаётся третья причина, которую пока не видели, и её надо будет искать отдельно.

## Владелец ротировал все порты — результат проверен пробой | прокси | до ротации | после | вывод | |---|---|---|---| | id 1 `asocks-residential-1` | жив, 45.140.53.215 | жив, **45.147.168.89** | адрес сменился, работает | | id 10 `asocks-mobile-2` | жив | жив, **2.15.167.217** | работает | | **id 11 `asocks-mobile-3`** | мёртв (502), выключен, 11 фейлов | **ЖИВ, 136.169.169.152** | **ожил ротацией** | | id 9 `asocks-mobile-1` | мёртв (connection refused) | **по-прежнему connection refused** | ротация не помогла | id 11 включён вручную сразу после пробы (самовосстановление вернуло бы его в течение часа, но ждать незачем). ## Пул сейчас ``` 1 asocks-residential-1 domclick вкл 0 фейлов 9 asocks-mobile-1 any ВЫКЛ 12 фейлов ← требует внимания 10 asocks-mobile-2 any вкл 0 фейлов 11 asocks-mobile-3 any вкл 0 фейлов ``` **Общих узлов стало два вместо одного** — для Авито, Циана и Яндекса это вдвое меньше конкуренции за аренду. С учётом того, что суточный объём срезан миграцией 206 (полная загрузка Циана давала 90% запросов, теперь вчетверо медленнее и раз в трое суток), нагрузка на узел падает кратно. ## Что осталось по id 9 `Connection refused` — это отказ на уровне соединения, а не авторизации: порт не слушает вообще. Ротация IP такого не лечит. Варианты: порт деактивирован в кабинете, истёк, либо требует пересоздания. **Стоит посмотреть его состояние в личном кабинете ASocks** — если он оплачен, но не отвечает, это вопрос к поддержке провайдера. Для сравнения: у мёртвых mobileproxy-узлов была другая картина — `407 Proxy Authentication Required`, то есть порт отвечал, но не принимал учётные данные (закрытая подписка). Здесь порт молчит. ## Прогноз Ожидаю снижения банов из двух источников сразу: 1. #2637 (в проде) — 16 прогонов полных загрузок Авито получили пул; 2. второй общий узел — часть из 37 прогонов, падавших при исчерпании пула, теперь получит прокси. Проверю по `scrape_runs` за следующие сутки. Если баны не исчезнут — значит остаётся третья причина, которую пока не видели, и её надо будет искать отдельно.
Author
Owner

Пул восстановлен полностью — владелец обновил последний порт

asocks-mobile-1 (id 9) ожил после пересоздания в кабинете. Проверено пробой: отвечает с exit-адреса 5.227.7.15, по прежнему адресу подключения 190.2.145.131:10313 — то есть учётные данные в базе менять не потребовалось. Включён вручную.

Состояние пула

 1  asocks-residential-1   domclick   вкл   0 фейлов   exit 45.147.168.89
 9  asocks-mobile-1        any        вкл   0 фейлов   exit 5.227.7.15
10  asocks-mobile-2        any        вкл   0 фейлов   exit 2.15.167.217
11  asocks-mobile-3        any        вкл   0 фейлов   exit 136.169.169.152

4 из 4 живы. Для Авито, Циана и Яндекса доступно 3 узла (проверено тем же запросом, что делает acquire()), против одного сегодня утром.

Вариант А из этого issue закрыт

Восстановление оказалось самым дешёвым путём, как и предполагалось: ротация вылечила id 11, пересоздание порта — id 9. Покупать ничего не потребовалось.

Диагностическое наблюдение на будущее: два мёртвых узла требовали разного лечения, и различить их можно было по симптому.

  • id 11 отдавал 502 Bad Gateway — порт слушал, но канал за ним был сломан → вылечила ротация IP;
  • id 9 отдавал Connection refused — порт не слушал вообще → потребовалось пересоздание;
  • для сравнения, мёртвые mobileproxy отдают 407 Proxy Authentication Required — порт живой, учётные данные отвергнуты → закрытая подписка, не лечится ничем со стороны кода.

Стоит зафиксировать это как памятку: по тексту ошибки пробы сразу видно, что делать.

Что теперь ожидается

Три причины банов устранены одновременно:

  1. Полные загрузки Авито получили пул (#2637, в проде) — снимает 16 прогонов из 53.
  2. Общих узлов стало 3 вместо 1 — снимает большую часть из оставшихся 37, где пул исчерпывался.
  3. Суточный объём срезан кратно (#2633, в проде): полная загрузка Циана давала 90% всех запросов, теперь вчетверо медленнее и раз в трое суток.

Проверю по scrape_runs за сутки. Ожидание: банов должно остаться единицы (напомню, настоящая блокировка площадкой среди 53 была одна).

⚠️ Предусловие перед любым расширением пула остаётся в силе

Теперь, когда живых узлов три, актуализируется проблема из исходного разбора: acquire() выдаёт узлы по принципу «давно не использованный» (ORDER BY last_ok_at NULLS LAST), из-за чего браузер будет перезапускаться при каждой смене прокси между запросами (+5-10 с). Нужна привязка узла к прогону на всё время прогона. Раньше это было теоретическим соображением при одном узле — теперь становится практическим.

Завожу отдельной задачей.

## ✅ Пул восстановлен полностью — владелец обновил последний порт `asocks-mobile-1` (id 9) ожил после пересоздания в кабинете. Проверено пробой: отвечает с exit-адреса `5.227.7.15`, **по прежнему адресу подключения** `190.2.145.131:10313` — то есть учётные данные в базе менять не потребовалось. Включён вручную. ### Состояние пула ``` 1 asocks-residential-1 domclick вкл 0 фейлов exit 45.147.168.89 9 asocks-mobile-1 any вкл 0 фейлов exit 5.227.7.15 10 asocks-mobile-2 any вкл 0 фейлов exit 2.15.167.217 11 asocks-mobile-3 any вкл 0 фейлов exit 136.169.169.152 ``` **4 из 4 живы. Для Авито, Циана и Яндекса доступно 3 узла** (проверено тем же запросом, что делает `acquire()`), против одного сегодня утром. ### Вариант А из этого issue закрыт Восстановление оказалось самым дешёвым путём, как и предполагалось: ротация вылечила id 11, пересоздание порта — id 9. Покупать ничего не потребовалось. Диагностическое наблюдение на будущее: **два мёртвых узла требовали разного лечения, и различить их можно было по симптому.** - id 11 отдавал `502 Bad Gateway` — порт слушал, но канал за ним был сломан → вылечила **ротация IP**; - id 9 отдавал `Connection refused` — порт не слушал вообще → потребовалось **пересоздание**; - для сравнения, мёртвые mobileproxy отдают `407 Proxy Authentication Required` — порт живой, учётные данные отвергнуты → **закрытая подписка**, не лечится ничем со стороны кода. Стоит зафиксировать это как памятку: по тексту ошибки пробы сразу видно, что делать. ### Что теперь ожидается Три причины банов устранены одновременно: 1. Полные загрузки Авито получили пул (#2637, в проде) — снимает 16 прогонов из 53. 2. Общих узлов стало 3 вместо 1 — снимает большую часть из оставшихся 37, где пул исчерпывался. 3. Суточный объём срезан кратно (#2633, в проде): полная загрузка Циана давала 90% всех запросов, теперь вчетверо медленнее и раз в трое суток. Проверю по `scrape_runs` за сутки. Ожидание: банов должно остаться единицы (напомню, настоящая блокировка площадкой среди 53 была **одна**). ### ⚠️ Предусловие перед любым расширением пула остаётся в силе Теперь, когда живых узлов три, актуализируется проблема из исходного разбора: `acquire()` выдаёт узлы по принципу «давно не использованный» (`ORDER BY last_ok_at NULLS LAST`), из-за чего браузер будет перезапускаться при каждой смене прокси между запросами (+5-10 с). **Нужна привязка узла к прогону на всё время прогона.** Раньше это было теоретическим соображением при одном узле — теперь становится практическим. Завожу отдельной задачей.
Collaborator

Сегодняшняя ночь как конкретный аргумент: три источника делят один деградирующий узел

Эта задача описывает тесноту пула отвлечённо. Ночь 6→7 августа даёт числа.

Состояние в 01:50 UTC:

id  метка                  affinity   включён  отказов подряд
 1  asocks-residential-1   domclick      да          0      ← Авито/Циану/Яндексу не выдаётся
 9  asocks-mobile-1        any          НЕТ          8      ← выключен автоматически
10  asocks-mobile-2        any           да          1      ← ЕДИНСТВЕННЫЙ, и уже сбоит
11  asocks-mobile-3        any          НЕТ          6      ← выключен автоматически

годных прокси для avito: 1

Порог автоотключения — пять отказов подряд. Узел 10 набрал первый. Если наберёт пятый, у трёх источников останется ноль.

Что это уже стоило этой ночью:

newbuilding_enrich  00:39   processed 25 · succeeded 0 · failed_fetch 25 · 440 с

Двадцать пять обращений из двадцати пяти. Прогон отработал полный цикл, потратил семь минут и не собрал ничего.

Проверки здоровья за ночь показывают, что узлы не «помечены по ошибке», а мертвы по-настоящему — их переспрашивают раз в час и они отказывают снова:

23:35  checked 3 · ok 2 · failed 1
00:05  checked 4 · ok 2 · failed 2
01:05  checked 3 · ok 2 · failed 1
01:36  checked 3 · ok 1 · failed 2

Почему это аргумент именно за ротацию, а не за «купить ещё узлов»

Узлы не сломаны навсегда — они деградируют и восстанавливаются. Ротация, написанная и ждущая токена, меняла бы адрес у деградировавшего узла вместо того, чтобы его выключать. Сейчас единственный доступный ответ на деградацию — вычеркнуть узел из пула, а пул из четырёх такого не переживает.

Побочное следствие, важное для эпика #2674

Девять правок ждали ночных прогонов для проверки. Разметку «какой критерий чем портится» я сделал до ночи (там же, в эпике), и она сработала: критерий про сигнал живости подтвердился чисто, потому что от прокси не зависит, а критерии про обогащение сегодня будут нечитаемы — их ноль скажет о пуле, а не о правках.

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

## Сегодняшняя ночь как конкретный аргумент: три источника делят один деградирующий узел Эта задача описывает тесноту пула отвлечённо. Ночь 6→7 августа даёт числа. **Состояние в 01:50 UTC:** ``` id метка affinity включён отказов подряд 1 asocks-residential-1 domclick да 0 ← Авито/Циану/Яндексу не выдаётся 9 asocks-mobile-1 any НЕТ 8 ← выключен автоматически 10 asocks-mobile-2 any да 1 ← ЕДИНСТВЕННЫЙ, и уже сбоит 11 asocks-mobile-3 any НЕТ 6 ← выключен автоматически годных прокси для avito: 1 ``` Порог автоотключения — пять отказов подряд. Узел 10 набрал первый. Если наберёт пятый, у трёх источников останется **ноль**. **Что это уже стоило этой ночью:** ``` newbuilding_enrich 00:39 processed 25 · succeeded 0 · failed_fetch 25 · 440 с ``` Двадцать пять обращений из двадцати пяти. Прогон отработал полный цикл, потратил семь минут и не собрал ничего. **Проверки здоровья за ночь** показывают, что узлы не «помечены по ошибке», а мертвы по-настоящему — их переспрашивают раз в час и они отказывают снова: ``` 23:35 checked 3 · ok 2 · failed 1 00:05 checked 4 · ok 2 · failed 2 01:05 checked 3 · ok 2 · failed 1 01:36 checked 3 · ok 1 · failed 2 ``` ## Почему это аргумент именно за ротацию, а не за «купить ещё узлов» Узлы не сломаны навсегда — они деградируют и восстанавливаются. Ротация, написанная и ждущая токена, меняла бы адрес у деградировавшего узла вместо того, чтобы его выключать. Сейчас единственный доступный ответ на деградацию — вычеркнуть узел из пула, а пул из четырёх такого не переживает. ## Побочное следствие, важное для эпика #2674 Девять правок ждали ночных прогонов для проверки. Разметку «какой критерий чем портится» я сделал **до** ночи (там же, в эпике), и она сработала: критерий про сигнал живости подтвердился чисто, потому что от прокси не зависит, а критерии про обогащение сегодня будут нечитаемы — их ноль скажет о пуле, а не о правках. То есть нехватка прокси стоит не только собранных данных, но и **возможности проверять сделанное**. Это отдельная цена, которую обычно не считают.
Collaborator

Поправка: пример с новостройками к этой задаче НЕ относится — я ошибся

Выше я привёл прогон newbuilding_enrich (25 обращений из 25 провалились) как цену нехватки прокси. Это неверно. Проверил по журналу:

BrowserFetcher: клиент создан, endpoint=http://tradein-browser:3000  proxy_lease_id=None
Cian newbuilding https://zhk-…-ekb-i.cian.ru: initialState extraction failed
newbuilding fetch returned None house_id=6667 (captcha / parse miss?)

Задача не берёт прокси вообще (proxy_lease_id=None), а отказ — на разборе страницы, а не в сети.

Что меня подвело: строка (captcha / parse miss?). Знак вопроса означает, что автор кода не знал причины и записал догадку — а я прочитал её как установленный внешний блок и приписал прокси. Это третий за сутки случай, когда диагностика со знаком вопроса вводит в заблуждение, и первый, когда она подвела меня самого, а не агента.

Что остаётся верным в этой задаче

Состояние пула и его цена — без изменений:

id  affinity   включён  отказов подряд
 1  domclick      да          0      ← трём источникам не выдаётся
 9  any          НЕТ          8
10  any           да          0      ← единственный общий; отказал и восстановился
11  any          НЕТ          6

Два узла из четырёх мертвы (переспрашиваются раз в час и отказывают снова), для Авито/Циана/Яндекса остаётся один. Аргумент за ротацию это не ослабляет.

Но честная оценка ущерба скромнее, чем я написал. За ночь на одном узле собрано 124 объявления Циана, городской обход взял 1 008 лотов при нуле ошибок, обогащение Яндекса дало 322 без единого отказа. То есть одного узла на нынешнюю ночную нагрузку хватает; теснота опасна не тем, что всё стоит, а тем, что запаса нет — следующий отказ оставляет ноль.

Приношу извинения за преувеличение: я вывел «один прокси — всё падает» из одного прогона, не проверив его причину.

## Поправка: пример с новостройками к этой задаче НЕ относится — я ошибся Выше я привёл прогон `newbuilding_enrich` (25 обращений из 25 провалились) как цену нехватки прокси. **Это неверно.** Проверил по журналу: ``` BrowserFetcher: клиент создан, endpoint=http://tradein-browser:3000 proxy_lease_id=None Cian newbuilding https://zhk-…-ekb-i.cian.ru: initialState extraction failed newbuilding fetch returned None house_id=6667 (captcha / parse miss?) ``` **Задача не берёт прокси вообще** (`proxy_lease_id=None`), а отказ — на **разборе страницы**, а не в сети. Что меня подвело: строка `(captcha / parse miss?)`. Знак вопроса означает, что автор кода не знал причины и записал догадку — а я прочитал её как установленный внешний блок и приписал прокси. Это **третий за сутки** случай, когда диагностика со знаком вопроса вводит в заблуждение, и первый, когда она подвела меня самого, а не агента. ## Что остаётся верным в этой задаче Состояние пула и его цена — без изменений: ``` id affinity включён отказов подряд 1 domclick да 0 ← трём источникам не выдаётся 9 any НЕТ 8 10 any да 0 ← единственный общий; отказал и восстановился 11 any НЕТ 6 ``` Два узла из четырёх мертвы (переспрашиваются раз в час и отказывают снова), для Авито/Циана/Яндекса остаётся один. Аргумент за ротацию это не ослабляет. **Но честная оценка ущерба скромнее, чем я написал.** За ночь на одном узле собрано 124 объявления Циана, городской обход взял 1 008 лотов при нуле ошибок, обогащение Яндекса дало 322 без единого отказа. То есть **одного узла на нынешнюю ночную нагрузку хватает**; теснота опасна не тем, что всё стоит, а тем, что запаса нет — следующий отказ оставляет ноль. Приношу извинения за преувеличение: я вывел «один прокси — всё падает» из одного прогона, не проверив его причину.
lekss361 added the
business
needs-discussion
needs-human
priority/p1
scrapers
tradein
labels 2026-08-16 10:25:11 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2638
No description provided.