python selenium模块联合带带弟弟破解滑块验证码

这篇具有很好参考价值的文章主要介绍了python selenium模块联合带带弟弟破解滑块验证码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        img_element = driver.find_element(By.XPATH,"/html/body/div[2]/div[2]/div[6]/div/div[1]/div[1]/div/a/div[1]/div/canvas[1]")
        hk_element = driver.find_element(By.XPATH,"/html/body/div[2]/div[2]/div[6]/div/div[1]/div[1]/div/a/div[1]/div/canvas[2]")
        yt_element = driver.find_element(By.XPATH,"/html/body/div[2]/div[2]/div[6]/div/div[1]/div[1]/div/a/div[1]/canvas")
        active = False
    except:
        continue
# 执行js 获取改元素的data:url
img_data_b64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(22);",img_element)
hk_data_b64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(22);",hk_element)
yt_data_b64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(22);",yt_element)
#解码
img_data = base64.b64decode(img_data_b64)
hk_data = base64.b64decode(hk_data_b64)
yt_data = base64.b64decode(yt_data_b64)
#以二进制保存
with open("./imgs/bg.png","wb") as f:
    f.write(img_data)
    #print("[*]滑块验证码背景图已保存")
with open("./imgs/hk.png","wb") as f:
    f.write(hk_data)
    #print("[*]滑块验证码滑块图片已保存")
with open("./imgs/yt.png","wb") as f:
    f.write(yt_data)
    #print("[*]滑块验证码原图已保存")
print("[*]保存滑动验证码成功")

提取出来如下图所示,(hk\_jg.png是下一个模块处理后的结果,不用管)

计算距离的主要需要图片就是通过hk.png处理后的hk\_jg.png和bg.png两个图片

Python,Python 滑块验证码破解,python selenium模块图片处理

接下来处理hk.png为hk\_jg.png

直接传入hk.png这种图片的路径,可以实现将带有白框的图片截取成只有图片的最小方框,例如:

Python,Python 滑块验证码破解,python selenium模块图片处理

这么多白框的图片变成下图这种

Python,Python 滑块验证码破解,python selenium模块图片处理

代码实现如下所示

def hk_chuli(hk_img):
“”"
处理滑块图片
:return:
“”"
image = Image.open(hk_img) # 打开tiff图像
ImageArray = np.array(image)
row = ImageArray.shape[0]
col = ImageArray.shape[1]
# 先计算所有图片的裁剪范围,然后再统一裁剪并输出图片
x_left = row
x_top = col
x_right = 0
x_bottom = 0
for r in range(row):
    for c in range(col):
        # if ImageArray[row][col][0] < 255 or ImageArray[row][col][0] ==0:
        if ImageArray[r][c][0] < 255 and ImageArray[r][c][0] != 0:  # 外框有个黑色边框,增加条件判断
            if x_top > r:
                x_top = r  # 获取最小x_top
            if x_bottom < r:
                x_bottom = r  # 获取最大x_bottom
            if x_left > c:
                x_left = c  # 获取最小x_left
            if x_right < c:
                x_right = c  # 获取最大x_right
#print(x_left, x_top, x_right, x_bottom)
cropped = image.crop((x_left - 5, x_top - 5, x_right + 5, x_bottom + 5))  # (left, upper, right, lower)
cropped.save(r".\imgs\{}.png".format("hk_jg"))
print("[*]处理滑块图片成功")

计算距离

现在引入了 ddddocr 模块来计算滑动距离。这个模块可以用于处理滑块验证码。接下来,你创建了一个函数 get_len(hk, bg),它调用 ddddocr 来获取滑动距离。然后,你提到了使用 Selenium 模块来模拟鼠标滑动轨迹,以绕过极验的滑块验证码。文章来源地址https://www.toymoban.com/news/detail-850681.html

import ddddocr
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
import time

def get_len(hk, bg):
    """
    调用 ddddocr 获取滑动距离
    :param hk: 处理好的滑块图片路径
    :param bg: 有缺口的背景图片路径
    :return: 滑动距离
    """
    det = ddddocr.DdddOcr(det=False, ocr=False, show_ad=False)
    with open(hk, "rb") as f:
        hk_image = f.read()
    with open(bg, "rb") as f:
        bg_image = f.read()

    res = det.slide_match(hk_image, bg_image, simple_target=True)
    return res["target"][0]

def get_tracks(distance):
    """
    拿到移动轨迹,模拟人的滑动行为,先匀加速后匀减速
    匀变速运动基本公式:
    1. v = v₀ + at
    2. s = v₀t + 1/2 * at²
    :param distance: 滑块一次性快速移动到某一位置后剩下的距离,进行五等分
    :return: 位置/轨迹列表,列表内的一个元素代表0.3s的位移
    """
    v = 0  # 初速度
    t = 0.3  # 单位时间为0.3s来统计轨迹,轨迹即0.3内的位移
    tracks = []  # 位置/轨迹列表,列表内的一个元素代表0.3s的位移
    current = 0  # 当前的位移
    mid = distance * 4 / 5  # 到达mid值开始减速,前4/5匀加速,后1/5匀减速
    while current < distance:
        if current < mid:  # 加速度越小,单位时间内的位移越小,模拟的轨迹就越多越详细
            a = 2
        else:
            a = -3
        v0 = v  # 初速度
        s = v0 * t + 0.5 * a * (t ** 2)  # 0.3s内的位移
        current += s  # 当前的位置
        tracks.append(round(s))  # 添加到轨迹列表
        v = v0 + a * t  # 速度已经达到v,该速度作为下次的初速度
    return tracks  # tracks:[第1个0.3s的移动距离,第2个0.3s的移动距离,...]

def slider_verification_code(driver, length):
    """
    滑动滑块验证码
    """
    # 按住滑块按钮
    slider = driver.find_element(By.XPATH, "/html/body/div[2]/div[2]/div[6]/div/div[1]/div[2]/div[2]")
    # 创建鼠标动态链
    subiao = ActionChains(driver)
    # 点击指定元素并保持
    subiao.click_and_hold(on_element=slider).perform()
    # 滑动指定单位 xoffset 代表水平方向的移动,正数为向右
    subiao.move_to_element_with_offset(to_element=slider, xoffset=15, yoffset=15).perform()
    time.sleep(0.5)
    # 使用加速度
    tracks = get_tracks(length - 15)
    for track in tracks:
        subiao.move_by_offset(xoffset=track, yoffset=0).perform()

    # 放开鼠标
    time.sleep(1)
    subiao.release().perform()

    # 网络不给力情况
    try:
        continue_element = driver.find_element(By.XPATH, "/html/body/div[2]/div[2]/div[4]/div[3]")
        if continue_element:
            print("[*] 出现网络不给力情况,立即开始重试")
            continue_element.click()
            main()
    except:
        pass

    # 没绕过情况
    try:
        # 检测滑动验证码是否还存在
        huadon = driver.find_element(By.CLASS_NAME, "geetest_slider_button")
        if huadon:
            # 刷新
            sx = driver.find_element(By.XPATH, "/html/body/div[2]/div[2]/div[6]/div/div[2]/div/a[2]")
            sx.click()
            print("[*] 绕过滑动验证码失败,开始下一次尝试")
            main()
    except:
        print("[*] 滑动验证码绕过成功")
        pass

到了这里,关于python selenium模块联合带带弟弟破解滑块验证码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 教你python破解滑块验证码!记得收藏!

    有小伙伴们私信反馈说,在web自动化的过程中,经常会被登录的验证码给卡住,不知道如何去通过验证码的验证。今天专门给大家来聊聊验证码的问题,一般的情况下遇到验证码我们可以都可以找开发去帮忙解决,关闭验证码!我们自己有没有办法来处理这些验证码的问题呢

    2024年02月16日
    浏览(60)
  • python+selenium尝试处理滑块验证

     效果如图:   处理思路: 1.打开滑动验证页面,这个用selenium一步一步走过去 2.将滑动验证码的整个图片保存下来 3.对图片的像素点进行分析,发现拼图处像素特征如下:   1).阴影起点处rgb的第一个值为0   2).阴影处的rgb三个值相加大部分小于某个临界值(minPix=400)   3).拼图阴影大

    2024年02月15日
    浏览(50)
  • python+selenium绕过滑块验证,实现自动登录

    实现taobao自动化登录,当用webdriver打开淘宝时,滑块验证一直失败,手动滑都会失败。因为淘宝会检测window.navigator.webdriver,控件检测到你是selenium进入,所以就会弹出滑块验证。只需要绕过检测就能实现自动登录 验证了两种方法可以跳过: 第一种是给浏览器加启动参数,开

    2024年02月12日
    浏览(51)
  • 抖音、云图、星图、巨量等滑块验证(python+selenium)

    抖音、云图、星图、巨量等滑块通用 2023年3月份亲测好用,仅用于学习测试。

    2024年02月10日
    浏览(56)
  • java爬虫破解滑块验证码

    使用技术:java+Selenium 废话:         有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页面都会用到验证码技术。其实验证码的英文

    2023年04月09日
    浏览(51)
  • 【Python从入门到进阶】39、使用Selenium自动验证滑块登录

    接上篇《38、selenium关于Chrome handless的基本使用》 上一篇我们介绍了selenium中有关Chrome的无头版浏览器Chrome Handless的使用。本篇我们使用selenium做一些常见的复杂验证功能,首先我们来讲解如何进行滑块自动验证的操作。 我们要通过selenium来实现目前常见的滑块验证码的验证,

    2024年02月08日
    浏览(57)
  • 渗透测试——python脚本(selenium模块)暴力破解

    免责声明 本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 背景:实习的第二个周的第二个评估网站项目,很明显,这里没有验证码(有验证码的情况也可以用这个方法,具

    2024年02月02日
    浏览(48)
  • python爬虫 scrapy+selenium+webdriver实现鼠标滑动破解阿里云盾快验证

    在爬取jianshu文章的时候发现,jianshu竟然买了阿里云的盾块验证!!!很是头疼,虽然说没有其他图片匹配的那么麻烦,但是阿里云的人机验证和算法真的是顶尖的,查阅了多个资料最后没办法,才实现用webdriver模拟鼠标去通过验证 首先我们需要安装webdriver驱动和Google Chrom

    2024年02月03日
    浏览(64)
  • Selenium图片滑块验证码

    因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧。这篇文章主要是用selenium解决滑块验证码的个别案列。 思路: 用selenium打开浏览器指定网站 将残缺块图片和背景图片下载到本地 对比两张图片的相似地方,计算要滑动的距离 规划路线,移动

    2024年02月13日
    浏览(52)
  • 用selenium解决滑块验证码

    因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧。这篇博客主要是用selenium解决滑块验证码的个别案列。 思路: 用selenium打开浏览器指定网站 将残缺块图片和背景图片下载到本地 对比两张图片的相似地方,计算要滑动的距离 规划路线,移动

    2024年02月01日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包