AFNetworking reachability manager for domain - всегда доступен, несмотря на невольный портал


Я использую менеджер достижимости AFNetworking для мониторинга достижимости для конкретного домена, как показано ниже:

reachabilityManager = [AFNetworkReachabilityManager managerForDomain:@"www.xyz.com"];
[reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
            switch (status) {
                case AFNetworkReachabilityStatusReachableViaWWAN:
                case AFNetworkReachabilityStatusReachableViaWiFi:
                    DLog(@"***became reachable***");
                    break;
                case AFNetworkReachabilityStatusNotReachable:
                default:
                    DLog(@"***became UNreachable***");
                    break;
            }
        }];
[reachabilityManager startMonitoring];

Он работает хорошо, за исключением тех случаев, когда устройство подключено к невольничьему порталу / сети со всеми другими отключенными данными. По какой-то причине менеджер считает, что устройство находится в состоянии достижимости, несмотря на то, что домен фактически недоступен (если ввести соответствующий URL-адрес в браузере, он перенаправляет на вход в captive portal страница).

Я делаю что-то не так? Если нет, то есть ли какой-нибудь способ обойти это?

Спасибо!

1 2

1 ответ:

К сожалению, достижимость просто проверяет, отвечает ли конкретный хост или dns-имя. Как вы видели из браузера, невольные порталы работают, отвечая на все запросы, чтобы отобразить страницу входа независимо от того, к какому сайту пользователь пытается получить доступ. Таким образом, достижимость говорит, что домен достижим, потому что он получил ответ. Он не может сказать разницу между" реальным " ответом и захваченным порталом.

Вам нужно будет сделать вашу попытку кода, чтобы получить известная часть информации с вашего сайта, когда она "доступна" - что-то вроде "http://example.com/signature.txt " где подпись.txt содержит текст, который вы можете проверить. Если вы получаете соответствующее значение обратно, то вы знаете, что действительно разговариваете с вашим сайтом. Если нет, то это, вероятно, плененный портал