Just check a google server
import urllib2 def internet_on(): try: response=urllib2.urlopen('http://74.125.228.100',timeout=1) return True except urllib2.URLError as err: pass return False
74.125.228.100 is one of the IP-addresses for google.com. Change http://74.125.228.100 to whatever site can be expected to respond quickly.
Using a numerical IP-address avoids a DNS lookup,
which may block the urllib2.urlopen call for more than a second. Thanks to @rzetterberg for pointing this out.
By specifying the timeout=1 parameter, the call to urlopen will not take much longer than 1 second even if the internet is not “on”.
References
1. unutbu, http://stackoverflow.com/questions/3764291/checking-network-connection