Python URL库缓存

Python URL库缓存,python,urllib,Python,Urllib,我正在用Python编写一个脚本,以确定它是否可以访问internet 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 re

我正在用Python编写一个脚本,以确定它是否可以访问internet

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!"
我在计算机上使用代理,因此正确的代理处理非常重要。如果它不能通过代理连接到互联网,它应该绕过代理,看看它是否停留在登录页面上(就像我使用的许多公共热点一样)。使用该代码,如果未连接到internet,则第一个read()将返回代理的错误页。但是当我绕过代理之后,我得到了相同的页面。如果我在发出任何请求之前绕过代理,我会得到一个我应该得到的错误。我认为Python从第一次开始就在缓存页面

如何强制Python清除缓存(或者这是其他问题)?

page = urllib.urlopen(CHECK_PAGE, proxies={})
移除

urllib.getproxies = lambda x = None: {}
行。

您想要什么

page = urllib.urlopen(CHECK_PAGE, proxies={})
移除

urllib.getproxies = lambda x = None: {}
行。

在每次调用urllib.urlopen()之前调用urllib.URCLEANUP()将解决问题。实际上,urllib.urlopen将调用urlretrive()函数,该函数将创建一个缓存来保存数据,而urlcleanup()将删除它。

在每次调用urllib.urlopen()之前调用urllib.urlcleanup()将解决此问题。实际上,URLLI.URLOPEN将调用URLReReTyVE()函数,该函数创建一个缓存来保存数据,URLCuffUp()将删除它。