Hier ist mal ein kleiner Proxy-Checker, der zusätzl. id eProxys von freeproxy.ru holen kann. Multithreading/Multirocesing felt halt noch, aber das steht jedem frei selber einzubauen . Verwendung wird von Programm selber klar beschrieben. Die Proxies werden übrigens mit einem Timeout von 15 Sekunden getestet. Das kann in der 6. Zeile geändert werden.
#!/usr/bin/python
import urllib2
log_file = „log“
timeout = 15„““
Function to grab proxies
„““
def grab_proxys():
url = „http://www.freeproxy.ru/download/lists/goodproxy.txt“
ret = []
o = urllib2.build_opener()
r = o.open(url)
line = r.readline()
while line:
if line[0].isdigit():
ls = line.split(“ „)
ret.append(ls[1].replace(„\r\n“,““).replace(„\n“, „“))
line = r.readline()
r.close()
return ret„““
Functions for checking proxys
„““
def check_http(proxy):
print(„Checking {0}…“.format(proxy))
try:
p = urllib2.ProxyHandler({‚http‘: proxy})
o = urllib2.build_opener(p)
o.addheaders = [(‚User-agent‘, ‚Mozilla/5.0‘)]
urllib2.install_opener(o)
r = urllib2.Request(‚http://www.google.com‘)
s = urllib2.urlopen(r, None, timeout)
except urllib2.HTTPError, e:
log_err(proxy, „HTTP-Error {0}“.format(e.code))
return e.code
except Exception, e:
log_err(proxy, „Error {0}“.format(e))
return False
return Truedef log_err(proxy, err):
write_line(log_file, „[{0}]: {1}“.format(proxy, err))def write_line(path, msg):
try:
f = open(path, „a+“)
except:
print(„Couldn’t open {0}.“.format(path))
f.writelines(„{0}{1}“.format(msg,“\n“))
f.close()def check_list_file(path):
valid = []
invalid = []
try:
f = open(path, „r+“)
except:
print(„Couldn’t open proxy-list.“)
l = f.readline().replace(„\r\n“,““).replace(„\n“,““)
while l:
if check_http(l):
valid.append(l)
print(„{0} valid“.format(l))
else:
invalid.append(l)
print(„{0} invalid“.format(l))
l = f.readline().replace(„\r\n“,““).replace(„\n“,““)
f.close()
return [valid, invalid]def check_list(proxies):
valid = []
invalid = []
try:
for l in proxies:
if check_http(l):
valid.append(l)
print(„{0} valid“.format(l))
else:
invalid.append(l)
print(„{0} invalid“.format(l))
except KeyboardInterrupt:
print(„“)
return [valid, invalid]
return [valid, invalid]„““
Main function
„““valid_path = raw_input(„Save valid proxies to: „)
invalid_path = raw_input(„Save invalid proxies to: „)
if raw_input(„Grab proxys from freeproxy.ru? Otherwise you can use an existing proxy list. (Y/N)“) == „Y“:
print(„Grabbing proxies…“)
proxy_list = grab_proxys()
r = check_list(proxy_list)
else:
proxy_list = raw_input(„Proxy-List: „)
r = check_list_file(proxy_list)
for v in r[0]:
write_line(valid_path, v)
for i in r[1]:
write_line(invalid_path, i)
alls = len(r[0]) + len(r[1])
valids = len(r[0])
invalids = len(r[1])
print(„{0}/{1} valid.“.format(valids, alls))
print(„{0}/{1} invalid.“.format(invalids, alls))
if invalids > 0:
print(„For detailed errors look into \“{0}\“.“.format(log_file))