多线程下载地址检测url_download,多线程url_download,#!/usr/local


#!/usr/local/bin/python#-*- coding: UTF-8 -*-import threadingimport timeimport urllib2import osfrom threading import Threadfrom collections import defaultdict, deque class CS_url_download(threading.Thread):    def __init__(self,url_download):        threading.Thread.__init__(self)        self.url=url_download  #测试URL    def run(self):        try:            print u"<<<CS_url_download线程启动"            print self.url            self.url_download(self.url) #传入名域名开始扫描        except:            print u"<<<--2345678CS_url_download---run异常!!!!!"    WEAK_USERNAME = [p.replace('\\n','') for p in open('download.txt').readlines()]    def url_download(self,url1): #传入名域名开始扫描        #print url1        url1="http://%s/"%(url1)        accounts = deque()   #list数组        try:            print u"<<<CS_url_download线程启动"            for username in CS_url_download.WEAK_USERNAME:   #导入用户名#WEAK_USERNAME=username.dic                if username not in accounts:#list数组                    accounts.append(username)#添加到 list数组                #print username        except:            print u"<<<-1111-CS_url_download---!!!!!"            return 0##        account = None   #None=NULL  数组#        while accounts:#list数组#            if not account and accounts:#list数组#                account = accounts.pop()   #list数组  输出##                #绝对不要尝试#            if not account:   #数组无数据了就跳出#                break   #跳出##            print account#            account = None   #None=NULL        class crackThread(Thread):            #破解 帐户线程            def __init__(self,Ht):                Thread.__init__(self)                self.AHt=Ht                self.running = True  #这是  控制线程数量            def del_file(self,ftp_download):  #删除文件                try:                    feil=os.getcwd()  #获得当前工作目录                    #data1=feil+"\\\\"+ftp_download                    #print data1                    for allDirs,dirs,filename in os.walk(feil):                        if ftp_download in filename:                            os.remove(feil + "\\\\" + ftp_download)                            #print("\\n删除成功!")                            #if sStr1 not in filename:                            #    print("未找到所要删除的文件!")                    return 0                except:                    return 0            def urlopen(self,url):  #测试地址是否可行                try:                    f = urllib2.urlopen(url)                    sStr1=url                    nPos = sStr1.rfind('/')  #从右至左(倒序)进行查找                    sStr1 = sStr1[nPos+1:len(sStr1)] #复制指定长度的字符                    #print sStr1                    with open(sStr1, "wb") as code:                        code.write(f.read())                    self.del_file(sStr1)  #删除文件                    return 1                except:                    return 0            def run(self):                MAX_RETRIES = 5                retry = 0                account = None   #None=NULL  数组                while self.running and accounts:#list数组                    try:                        print "\\n"                    except Exception, e:                        if retry <= MAX_RETRIES:  #这是为了控制线程吗                            retry = retry +1    #没必要使用这个变量啊                            continue  #跳过                        else:                            self.running = False  #这是  控制线程                            break   #跳出                    if not account and accounts:#list数组                        account = accounts.pop()   #list数组  输出                        #绝对不要尝试                    if not account:   #数组无数据了就跳出                        break   #跳出#                    print u"线程:%d url:%s 下载地址:%s"%(self.AHt,url1,account)#                    time.sleep(1)                    url = "%s%s"%(url1,account)                    print "线程:%d url:%s"%(self.AHt,url)                    if self.urlopen(url):                        print "下载地址有效"                    else:                        print "无效"                    account = None  #None=NULL                    retry = 0        threads = []  #线程        nthreads=5        for i in range(nthreads):  #nthreads=10  创建10个线程            threads.append(crackThread(i))        for thread in threads:   #不理解这是什么意思    是结束线程吗            thread.start()  #start就是开始线程        for thread in threads:   #不理解这是什么意思    是结束线程吗            thread.join()if __name__=='__main__':    threads = []  #线程    nthreads=1    for i in range(nthreads):  #nthreads=10  创建10个线程        threads.append(CS_url_download("www.baidu.com"))    for thread in threads:   #不理解这是什么意思    是结束线程吗        thread.start()  #start就是开始线程#该片段来自于http://byrx.net

评论关闭