Como você descobriu, há um cabeçalho sendo enviado: X-Forwarded-For , que contém seu IP original.
Pode ser possível remover o cabeçalho da solicitação ou personalizá-lo. Se você estiver tentando removê-lo, ele poderá ser anexado pelo proxy, não importa se esteja fora de suas mãos. Aqui está um artigo interessante que pode ajudar se você ainda não viu. Solicitações HTTP de Java, adicione informações de cabeçalho e proxy . Outra opção pode ser procurar um provedor de proxy diferente.
Para um método alternativo para verificar se o proxy está funcionando, você deve poder usar: InetAddress.isReachable (), você pode procurar uma resposta de qualquer site, como o Google.com, ou um servidor personalizado que você tem em a Internet. A menos que você esteja tentando verificar o IP do proxy, ainda é possível configurar seu próprio servidor de verificação, mesmo que seja um host gratuito. InetAddress.isReachable pode ter algumas quedas conforme mencionado aqui: O método" isReachable "não tem valido a pena usar para mim em muitos casos.
Isso parece ser o mais relevante para sua pergunta: Como verificar se o proxy está funcionando em Java? Também imagino que você esteja tentando fazer algo semelhante, como verificar uma lista de proxy, em vez de usar um serviço pago. Depende se o software é apenas para você ou se será lançado e compartilhado. Se é só você, pode valer a pena comprar um proxy que lhe dê anonimato.