Я делаю так.
Есть на домене баса чекалка ip (его использует действие "Установить прокси" в браузере):
http://ip.bablosoft.com/Завожу БД для проксей, например sqlite с 2 колонками: proxy и ip.
В функции чека ip в цикле отправляю запрос на урл, получаю ip, сравниваю с тем, что в БД (старый ip или null). И если он отличается, то значит ip сменился. В БД обновляю новый ip и возвращаю true.
Также ip лучше проверять регуляркой на валид, иногда херню возвращает. Ну и в цикле задать таймаут чека, чтобы поток не зависал на этом действии бесконечно.
image url)