デバイスに完全なインターネットアクセスがあるかどうか、つまりユーザーがキャプティブポータル(walled gardenとも呼ばれる)に限定されていないかどうかを確実に検出する必要があります。完全なアクセス権を得るためにフォーム上の資格情報Pythonのキャプティブポータルを正確に検出する
私のアプリは認証プロセスを自動化しているため、ログオンアクティビティを開始する前に完全なインターネットアクセスが利用できないことを知っておくことが重要です。
質問は、ネットワークインターフェイスがアップ状態であり、接続状態であることを確認する方法ではありません。これは、サンドボックス化されたイントラネットセグメントではなく、デバイスに無制限のインターネットアクセスがあることを確認することです。ここで
は、これまでテストするための私のコードです:ユーザーがキャプティブポータル内であれば
def get_connection_status(remote_server = "www.google.com"):
for timeout in [1, 5, 10, 15]:
try:
print "Checking internet connection.."
socket.setdefaulttimeout(timeout)
# see if we can resolve the host name -- tells us if there is
# a DNS listening
host = socket.gethostbyname(remote_server)
# connect to the host -- tells us if the host is actually
# reachable
s = socket.create_connection((host, 80), 2)
s.close()
print 'Internet connected.'
return "Connected"
except Exception, e:
print e
print "Internet not connected."
return "Not Connected"
が、これは正確に「未接続」を返すのだろうか?そうでない場合、このメソッドを改善して正確に検出する方法は何ですか?
あなたは、より具体的なものが必要です。ウェブにアクセスする前に、あなたのホストがファーストフードのレストランに座っているかどうかを検出しようとしていますか?あるいは、あなたのホストが、インターネットが巨大なファイアウォールの背後にある中国のような国にいるかどうかを調べようとしていますか? –
明快さに欠けて申し訳ありません。たとえば、ホテルに行ってWi-Fiに接続しているが、完全なインターネットを使用する前に資格情報でサインインする必要があります。そんなこと。あなたのファーストフードの例にもっと近く、私は思う。それは理にかなっていますか? –