Come rilevare un firewall in Windows?
-
22-07-2019 - |
Domanda
La mia app deve inviare una richiesta GET a un sito Web e vorrei essere in grado di sapere se è stato bloccato da un firewall e chiedere all'utente di aggiungere un'eccezione.
Come posso scoprire che la mia richiesta get non è riuscita a causa di un firewall, invece di qualcos'altro?
Soluzione
Se è un buon firewall, non puoi. Tra le altre opzioni, un firewall può:
- rispondi con uno dei numerosi ICMP diversi, indicando che la destinazione non è accessibile o
- elimina silenziosamente la richiesta, determinando un timeout.
Un'opzione ragionevole è spiegare perché l'app non è stata in grado di accedere al sito Web e fornire alcuni suggerimenti utili:
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.
L'importante è differenziare, forse meglio di quanto ho fatto sopra, tra i tipi di fallimento e le ragioni dietro di loro. Ad esempio, i passaggi per la risoluzione dei problemi "nessuna risposta" sarà diverso da quelli per la risoluzione dei problemi " il dispositivo mi ha detto che non è in ascolto su quella porta. "
Altri suggerimenti
Prova ad accedere a Internet con un breve timeout ... Se il comando non riesce, puoi supporre che la macchina abbia un firewall che richiede l'interazione dell'utente.
Se il firewall è buono, non è possibile rilevarlo.
Usa le API del firewall Win32 (classico)