vvv-bots のスクレイパーが 0件取得になった時、**コードのバグとは限らない**。サイト側が Cloudflare / WAF / CAPTCHA 等の bot 対策を強化してアクセス遮断している場合、コード修正では突破できない。
**切り分け手順**:
1. `curl -s -m15 -A "Mozilla/5.0" "
2. scraper を dry-run 実行しログを見る。`ブロック検知 (page=1, retry=N)` が連続 = `base_scraper._is_blocked` が Cloudflare challenge / CAPTCHA / short page を検出している(誤検知でなく実際の遮断)
3. **必ず venv python で実行する**: 裸の `python3` だと `Scrapling available=False`(ModuleNotFoundError)になり bot 回避が効かない。`venv/bin/python3 bots/
4. Scrapling 有効(`available=True`)でもブロックされるなら、コードでは突破不可と確定
**対処(How to apply)**:
- サイト側遮断と確定したら **`scraper_bot_schedule.enabled=false` で無効化**(levtech #228 / bscareer / assign_navi #245 と同じ処置)。tick の有効ボット判定は `_get_all_bot_schedules`(WHERE enabled=TRUE)と `_get_all_bot_configs` の AND([[memory-instinct-bot-disabled-db-is-truth]])なので、schedule.enabled=false だけで tick 対象外になる(既存無効ボットも config=t/schedule=f の形が標準)
- 無効化すれば ①無駄なブロック打ち停止 ②qa_pipeline が `_db_disabled_group_ids()` で自動スキップ→0件Issue無限起票も止まる
- issue は `won't-fix`(not planned)でクローズ。サイト対策が緩むか residential proxy 導入時に再開
**Why**: 0件=セレクタ崩れと決めつけて DOM を追い続けると時間を浪費する。先に「サイトが取らせてくれているか(curl 403 / ブロック検知ログ)」を確認すれば、コードで直せない案件を即判定できる。
関連: [[instinct-senavi-url-pattern-change]](こちらは抽出/フィルタ段の取りこぼし=コードで直る別パターン) / [[instinct-bot-disabled-db-is-truth]] / [[project-bscareer-retired]]
---
(migrated from local memory/instinct_scraper_zero_items_site_block.md)