多线程下载地址检测url_download,多线程url_download,#!/usr/local
文章由Byrx.net分享于2019-03-23 08:03:16
多线程下载地址检测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
评论关闭