The pool lives in the SCRAPER_PROXY_LIST Fly secret, not the database — that's why this tab is read-only and changes are made from a terminal. Setting the secret redeploys the app and restarts the scraper machines, so only do it when no scrape is running.
1 · Find the bad IPs. The 🔴 Bad rows at the top of the table (lifetime fail rate over 50%, excluded from the pool entirely). Tick their checkboxes and use the "IP addresses" button above the table for a ready-to-paste list. You currently have a monthly IP-replacement allowance on Webshare — spend it on these.
2 · On Webshare. Log in → replace each bad IP with a fresh one (or just delete it to shrink the pool) → download the updated proxy list. Tip: when you replace, request a different region/city than the ones you're dropping — pool diversity matters as much as reputation.
3 · Build the list in our format — comma-separated, no spaces, the one shared username:password in front of every IP:PORT:
http://USER:PASS@IP1:PORT1,http://USER:PASS@IP2:PORT2,…
If your Webshare download is ip:port:user:pass per line (say, saved as proxies.txt), convert & join it with one command (adjust the field numbers $1..$4 if your export orders them differently):
awk -F: '{print "http://"$3":"$4"@"$1":"$2}' proxies.txt | paste -sd, -
4 · Set the secret (from your own terminal, already logged into flyctl). Build it straight from the file so credentials never get pasted inline:
flyctl secrets set \
SCRAPER_PROXY_LIST="$(awk -F: '{print "http://"$3":"$4"@"$1":"$2}' proxies.txt | paste -sd, -)" \
-a pokemon-tracker-red-butterfly-2793
…or paste the finished list literally:
flyctl secrets set SCRAPER_PROXY_LIST="http://USER:PASS@IP:PORT,…" -a pokemon-tracker-red-butterfly-2793
Watch out for:
- The secret is replaced whole — your command must list every IP you want to keep, not just the changes. (Dropping from 100 to 98? The command contains 98 entries.)
- It triggers a redeploy (~1–2 min, machines restart). Never while a scrape is running — check the Catalog tab first.
- The list contains your Webshare login — keep it private; prefer the
$(…) form above over pasting it into shell history.
- A removed IP just stops appearing here after the next pull (only currently-configured IPs are shown); its old stats row is harmless and ignored.
- After the redeploy, the next scrape's log shows
N proxies grouped into … buckets — confirm the new count there.