
15.09.2009, 14:09
|
|
Новичок
Регистрация: 30.08.2009
Сообщений: 19
С нами:
8788294
Репутация:
7
|
|
В итоге, после долгих блужданий по форуму так и не нашел нормального чекера на python и решил сам написать что-то подобное. Возможно кому-то это пригодится, ибо написанное на питоне очень удобно подстраивать под свои конкретные нужды.
PHP код:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import socket
import urllib2
import threading
openUrl = 'http://2ip.ru/'
proxiesFileName = 'proxies-big'
outFileName = 'goodproxies'
timeout = 5
maxProxyNum = 100
class fileLister:
def __init__(self, fileName):
with open(fileName, 'r') as file:
self.fileList = file.readlines()
def getProxyAdress(self):
return {'http': 'http://'+self.fileList.pop().strip()}
def isNotEmpty(self):
if len(self.fileList) == 0:
return False
else: return True
def checkThread():
while proxyFile.isNotEmpty():
checkProxy(proxyFile.getProxyAdress())
def checkProxy(proxyAdress):
proxyHandler = urllib2.ProxyHandler(proxyAdress)
opener = urllib2.build_opener(proxyHandler)
urllib2.install_opener(opener)
try: urllib2.urlopen(openUrl)
except urllib2.URLError, e: proxyErr(proxyAdress, e)
else: goodProxy(proxyAdress)
def proxyErr(proxyAdress, error):
proxyName = proxyAdress.values()[0][7:]
with printLock:
print proxyName, error.errno, error.reason
def goodProxy(proxyAdress):
proxyName = proxyAdress.values()[0][7:]
with printLock:
print proxyName, "Работает"
with open(outFileName, 'a') as file:
print>>file, proxyName
def main():
global printLock
printLock = threading.Lock()
socket.setdefaulttimeout(timeout)
global proxyFile
proxyFile = fileLister(proxiesFileName)
for i in xrange(maxProxyNum):
threading.Thread(target=checkThread).start()
if __name__ == '__main__':
main()
Хотелось бы услышать что вы о моем тварении думаете, желательно разумную критику. Интересно было бы услышать чего еще полезного можно к этому скрипту прикрутить.
|
|
|