私は、インターネットにアクセスできるかどうかを判断するスクリプトをPythonで書いています。Python urllib cache
import urllib
CHECK_PAGE = "http://64.37.51.146/check.txt"
CHECK_VALUE = "true\n"
PROXY_VALUE = "Privoxy"
OFFLINE_VALUE = ""
page = urllib.urlopen(CHECK_PAGE)
response = page.read()
page.close()
if response.find(PROXY_VALUE) != -1:
urllib.getproxies = lambda x = None: {}
page = urllib.urlopen(CHECK_PAGE)
response = page.read()
page.close()
if response != CHECK_VALUE:
print "'" + response + "' != '" + CHECK_VALUE + "'" #
else:
print "You are online!"
私は自分のコンピュータでプロキシを使用していますので、プロキシの正しい取り扱いが重要です。プロキシ経由でインターネットに接続できない場合は、プロキシをバイパスして、ログインページで停止しているかどうかを確認する必要があります(多くの公開ホットスポットがそうしているように)。そのコードで、私がインターネットに接続されていない場合、最初のread()はプロキシのエラーページを返します。しかし、それ以降はプロキシをバイパスすると、同じページが表示されます。リクエストを行う前にプロキシをバイパスすると、私はエラーが発生します。私はPythonが1回目からページをキャッシュしていると思います。
Pythonでキャッシュをクリアするにはどうすればよいですか?
urllib2の使用を検討する - http://docs.python.org/library/urllib2.html#urllib2.urlopen – gimel