前段时间帮同学写了个程序,其中需要在后台通过访问url来发送邮件,经过摸索,用了php的curl功能,觉得很强大,于是google了下。python作为一款强大的脚本语言,也同样有类似的功能,于是尝试着做了下。
先看下这简短的几行代码
import urllib,urllib2,httplib,cookielib //使用的python模块
url = 'http://www.xxxxxx.com/login.asp?action=chk' //要尝试的url,还是把url改下吧
values = {'username' : 'admin',
'password' : 'admin'} //post提交的数据
data = urllib.urlencode(values) //对提交的数据进行编码
req = urllib2.Request(url, data) //形成一个url请求
response = urllib2.urlopen(req) //发送签名的请求
the_page = response.read() //读取返回的页面
print the_page //输出返回的页面
从上面可以看到对于一个登录验证机制比较简单的网站,只需要这么几行代码即可实现自动登录,由此不难想到可以利用这进行密码的
暴力破解
下面从网上看到的一个自动登录百度空间的代码跟我们这个类似
import urllib , urllib2 , httplib , cookielibdef auto_login_hi ( url , name , pwd ):url_hi = "http://passport.baidu.com/?login"#设置cookiecookie=cookielib.CookieJar()cj=urllib2.HTTPCookieProcessor(cookie)#设置登录参数postdata=urllib.urlencode({'username':name,'password':pwd})#生成请求request=urllib2.Request(url_hi,postdata)#登录百度opener=urllib2.build_opener(request,cj)f=opener.open(request)print f#打开百度HI空间页面hi_html=opener.open(url)return hi_htmlif __name__=='__main__':name='name'password='password'url='yoururl'#例如:url='http://hi.baidu.com/cdkey51'h=auto_login_hi(url,name,password)print h.read()#h里面的内容便是登录后的页面内容