Como detectar um firewall no Windows?
-
22-07-2019 - |
Pergunta
As minhas necessidades de aplicativos para fazer um pedido GET para um site e eu gostaria de ser capaz de saber se ele está sendo bloqueado por um firewall, e perguntar ao usuário adicionar uma exceção.
Como posso saber que o meu pedido get falhou devido a um firewall, em vez de outra coisa?
Solução
Se é um bom firewall, você não pode. Entre outras opções, um firewall pode:
- responder com uma das várias mensagens diferentes ICMP , indicando o destino não está acessível, ou
- silenciosamente descartar a solicitação, resultando em um tempo limite.
A opção razoável é explicar por que o aplicativo não consegui acessar o site e fornecer algumas sugestões úteis:
No response from www.site.com: * Your computer may not be connected to the Internet. * The site may be down. * The site may be blocked by a firewall.
The network indicated that www.site.com is not accessible: * Helpful messages go here.
O ponto importante é diferenciar, talvez melhor do que eu fiz acima, entre o tipos de falha, e razões atrás deles. Por exemplo, os passos para a resolução de problemas "nenhuma resposta" serão diferentes daquelas para solucionar "o dispositivo me disse que não está escutando nessa porta."
Outras dicas
Tente acessar a internet com um curto tempo de espera ... Se o comando falhar, você pode supor que a máquina tem um firewall que requer interação do usuário.
Se o firewall é bom, você não pode detectá-lo.
Use Win32 Firewall APIs (clássico)