马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
由于小甲鱼课后习题的目标豆瓣更改了验证码功能,我找了一个靶机网站当做目标,练习python自动登录脚本。
先说下代码功能:先通过get方式访问登录页面爬取源代码,然后用re.search()从源代码里获得验证码图片地址,通过urllib.request.urlretrieve()远程下载验证码到本地,通过g.integerbox()显示这张验证码图片并让用户输入验证码值,将验证码值加进提交数据中提交,获取响应
代码如下:import re
from urllib import request
from http import cookiejar
from urllib import parse
import easygui as g
#url设置
url='http://192.168.174.134/index.php?r=admin/index/login'
#用户名密码设置
params={
'username':'admin',
'password':'system',
'x':'0'
'y':'0'
}
#声明一个CookieJar对象实例来保存cookie
cookie=cookiejar.CookieJar()
#利用urllib.request库的HTTPCookieProcessor对象来创建cookie处理器,也就CookieHandler
handler=request.HTTPCookieProcessor(cookie)
#通过CookieHandler创建opener
opener=request.build_opener(handler)
#此处的open方法打开网页,‘访问登录页面’
response=opener.open(url)
html=response.read().decode()
print(cookie)
#寻找验证码图片地址
imgurl=re.search('<img src="(.+?)" border="0" height="25" width="50" style=" cursor:hand;" alt="如果您无法识别验证码,请点图片更换" onClick="fleshVerify\(\)" id="verifyImg"/>',html)
if imgurl:
addr='http://192.168.174.134'+imgurl.group(1)
print(cookie)
#将验证码图片保存至同目录下,Pyhon访问下载imgurl之后,导致验证码刷新,python下载的验证码就变成了旧的验证码(对于我们这个cookie的用户而言)
res=request.urlretrieve(addr,'v.png')
params['checkcode']=str(g.integerbox('请输入验证码:','验证码',lowerbound=0,upperbound=9999,image='v.png'))
print(params)
#打包数据
data=parse.urlencode(params).encode('utf-8')
#提交数据
response=opener.open(url,data)
reshtml=response.read().decode('utf-8')
print(reshtml)
下图是登录需要提交的数据(x和y应该是没影响的,抓包修改成任意值仍然可以正常登录):
用户名,密码,验证码
cookie是第一次访问登录页面时服务端下发的,只要不关闭页面就会一直存在
下图是python脚本发出去的数据(红框标注的包):
做的实在没思路了,求解!!
|