Repository navigation
Every check is now on the record. Each kept proxy says how its checks ended (passed, failed, unavailable or skipped), with a reason code, the target and the time. That goes into proxies.json, proxies.csv, the Python API and the MCP results.
uvx proxy-scraper-cli --pick 3 --verify # up to 3 proxies from the hourly list that pass right now, from your network
uvx proxy-scraper-cli --diagnose socks5://HOST:PORT # one proxy, check by check: what it did and what it didn'tHighlights
--pick N --verifychecks candidates from your own network first and prints only those that pass now. It is bounded: 5 candidates per proxy asked for, 8 at once, 90 s at most. Exit code 3 if fewer than N passed.--diagnose PROXYshows what each check found and why (check states).- A check target going down is no longer the proxy's failure. Those proxies are marked
unavailable, notfailed. The hourly list only keeps proxies whose second request and content check were measured as passed. - Every run writes
run.jsonwith candidates, checked, not checked, and each check by state and reason. - Fixes found by the Windows and Python 3.9 CI matrix. A TCP connect that ran out of time is now
connect_timeout. Control answers are ordered byperf_counter(the loop clock ticks only every 15.6 ms on Windows before 3.13). - The numbers article was redone with its denominators and the scripts that produce them: 3.6 million checks of free proxy lists in a day.
Full list in the changelog.
What's Changed
- docs: maintenance log after 1.29.0 by @maximilianfeix in #331
- docs(ru): native-speaker proofread of README.ru.md by @mrvi0 in #339
- ci: Dependabot batch – Python 3.14 base image, ruff 0.17.0, CodeQL 4.38.3 by @maximilianfeix in #340
- README: 21-second launch video by @maximilianfeix in #342
- release 1.30.0: per-check states, --pick --verify, --diagnose by @maximilianfeix in #341
New Contributors
Full Changelog: v1.29.0...v1.30.0