#!/usr/bin/python
#coding:utf-8
import MySQLdb,time
import urllib
import urllib2
import threading
def main():
conn = MySQLdb.connect(host='192.168.1.139',user='gooann',passwd='gooann-a-2013',db='proxy',charset='utf8')
conn.autocommit(True)
cursor = conn.cursor()
cmdsql = "insert into iplist(ip,port,address,type) values('192.1.2.4','80','bj','2')"
#cmdsql = "insert into iplist(ip,port,address,type) values(182.206.130.225,3128,辽宁省,2)"
cursor.execute(cmdsql)
status = cursor.fetchall() #获取返回的结果集.
cousor.close()
conn.close()
# 1、使用urllib访问http://www.cz88.net/proxy/index.shtml(1-10)取得代理服务器的IP地址,并将IP地址存入数据库proxy.iplist表中,type字段按照个人序号插入。
def main1():
proxy = 'proxy_ip.txt'
proxy_list = open(proxy,'r').readlines()
available_ip = []
conn = db_conn('192.168.1.139','gooann','gooann-a-2013','proxy')
cursor = conn.cursor()
for i in proxy_list:
i = i.strip().decode('utf-8').split(',')
sqlcmd = "insert into iplist(ip,port,address,type) values('%s','%s','%s','%s')" % (i[0],i[1],i[3][0:3],'2')
print sqlcmd
try:
cursor.execute(sqlcmd)
except Exception, e:
#raise e
print e
else:
pass
cursor.close() #关闭cursor
conn.close() #关闭conn
def db_conn(hosts,users,passwds,dbs,charsets='utf8'):
try:
#conn = MySQLdb.connect(host='192.168.1.139',user='gooann',passwd='gooann-a-2013',db='proxy',charset='utf8')
conn = MySQLdb.connect(host=hosts,user=users,passwd=passwds,db=dbs,charset=charsets)
conn.autocommit(True)
return conn
except Exception, e:
raise e,"can't connect database!"
# 2、多线程练习
# 使用weak_passwd.txt弱口令文件,暴力破解http://127.0.0.1/www/Login/index.html用户名和密码。
def main2():
fo = open('weak_passwd.txt','r')
pass_list = fo.readlines()
thread_list = []
for i in pass_list:
i = i.strip()
for j in pass_list:
j = j.strip()
t = threading.Thread(target=post,args=(i,j))
thread_list.append(t)
fo.close()
for tl in thread_list:
tl.start()
while True:
if(len(threading.enumerate()) <= 10):
break;
def post(name,pwd):
try:
data = urllib.urlencode({"username":name,"password":pwd});
content_length = len(data)
headers = {
"Host":"192.168.1.139",
"Pragma":"no-cache",
"Content-Length":content_length,
"Accept": "text/html, application/xhtml+xml, */*",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; NMJB; rv:11.0) like Gecko",
"Content-Type": "application/x-www-form-urlencoded",
"Referer": "http://192.168.1.139/www/Login/index.html",
"Cookie": "thinkphp_show_page_trace=0|0; PHPSESSID=dbg5jjc9t76njqp6bimk43hjr4",
}
# Client = httplib.HTTPConnection("192.168.1.139",80,timeout=5)
# Client.request("POST","/www/Login/login/",parames,headers)
# response = Client.getresponse()
url = 'http://192.168.1.139/www/Login/login/'
request = urllib2.Request(url,data,headers)
response = urllib2.urlopen(request,timeout=5)
if response.geturl() == 'http://192.168.1.139/www/Show/index.html': #根据不同的网站需要判断不同的登陆成功方式
print 'user:%s,passwd:%s' % (name,pwd)
except Exception, e:
pass
# 3、多线程验证proxy.iplist中哪些代理IP地址是可用的,并计算响应时间,线程并发数100。
def getIpbyDB():
pass
def getIpbyFile():
pass
# 4、多线程练习,线程并发数100
# (1)、将111.206.217.0/24、218.75.110.0/24两个网段IP地址插入proxy.nmap_ip表中,type字段按照个人序号插入。
def insertIP():
iplist1 = []
iplist2 = []
conn = db_conn('192.168.88.103','root','cosmysql','proxy') #此地址为本机虚拟机中的mysql地址.
#conn = MySQLdb.connect(host='192.168.88.103',user='root',passwd='cosmysql',db='proxy',charset='utf8')
conn.autocommit(True)
cursor = conn.cursor()
for i in range(255):
ip1 = '111.206.217.%d' % i
ip2 = '218.75.110.%d' % i
iplist1.append(ip1)
iplist2.append(ip2)
iplist = iplist1+iplist2
for j in iplist:
cmdsql = "insert into nmap_ip(ip) values('%s')" % (ip1)
print cmdsql
cursor.execute(cmdsql)
cursor.close()
conn.close()
# (2)、使用nmap扫描上述IP的开放端口,并区分http端口和其它端口,并更新数据库;
# (3)、访问上述IP的http端口,取得title并更新数据库。
def main4():
insertIP()
if __name__ == '__main__':
main4()