返回顶部
首页 > 资讯 > 后端开发 > Python >Python+selenium怎么破解拼图验证码
  • 194
分享到

Python+selenium怎么破解拼图验证码

2023-06-29 02:06:40 194人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍“python+selenium怎么破解拼图验证码”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python+selenium怎么破解拼图验证码”文章能帮助大家解决问题。实现思路很多

这篇文章主要介绍“python+selenium怎么破解拼图验证码”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python+selenium怎么破解拼图验证码”文章能帮助大家解决问题。

实现思路

很多网站都有拼图验证码

首先要了解拼图验证码的生成原理

制定破解计划,考虑其可能性和成功率。

编写脚本

很多网站的拼图验证码都是直接借助第三方插件,也就是一类一种解法。

笔者遇到的这种拼图验证码实际上是多个小碎片经过重新组合成的一张整体,首先要在网站上抓取这种小碎片图片并下载到本地

我们先捋一捋大体思路:

获取所有碎片图片----找出他们的排列顺序逻辑-----找出他们中含有颜色深的真正位置的那个小碎块的序号-----根据每块碎片的宽度和上下和这个深色小块的序号算出距离----用selenium向右移动滑块到这个距离

核心代码

先导入必要的包:

# -*- coding:utf-8 -*-import colorsysimport urllib,os,uuid,re,timefrom PIL import Imagefrom selenium.WEBdriver.common.action_chains import ActionChainsfrom selenium import webdriver

抓到并下载到本地

def create(locapath,fileName):  filePath=locapath+'/'+fileName  if not os.path.exists(filePath):    file=open(filePath,'a+')    file.close()    return filePathdef downloadImg():  list = openBrowser()  for i in range(2):    fileName = str(i) + '_test.jpg'    urllib.urlretrieve(list[i], create('/Users/zijiawang/Downloads/', fileName))  #下载到本地  time.sleep(3)def openBrowser():  global wzj  wzj =  webdriver.Firefox()  wzj.get('https://。。。。')  image1_url = wzj.find_elements_by_class_name('gt_cut_bg_slice')[0].get_attribute('style')  image1_url=image1_url[23:-38]  image2_url = wzj.find_elements_by_class_name('gt_cut_fullbg_slice')[0].get_attribute('style')  image2_url=image2_url[23:-38]  return [image1_url,image2_url]

分割并获取rgb颜色

ef getcolor(image):  list = [[x,y] for x in range(26) for y in range(2)]  listt = []  colors = []  for i in range(len(list)):    l = list[i][0]*12+12    w = list[i][1]*58+58    listt.append([12*0.25+i/2*12, 58*0.25+((i+10)%2)*58])    listt.append([12*0.25+i/2*12, 58*0.75+((i+10)%2)*58])    listt.append([12*0.75+i/2*12, 58*0.25+((i+10)%2)*58])    listt.append([12*0.75+i/2*12, 58*0.75+((i+10)%2)*58])  for i in range(len(listt)):    colors.append(image[listt[i][0],listt[i][1]])  return colors

找出不同的小碎片序号

def getDeferent():  deferent = []  for i in range(208):    if abs(color1[i][2] - color2[i][2]) >20:      print u'B差值: ',color1[i][2]-color2[i][2]      deferent.append(i)      # print ([i,abs(color1[i][0] - color2[i][0]),abs(color1[i][1] - color2[i][1]),abs(color1[i][2] - color2[i][2])])  return deferentdef getUPDOWN():  deferent = getDeferent()  xlist = []  ylist = []  for i in deferent:    if (i / 4) % 2 == 0:      xlist.append(i)    else:      ylist.append(i)  uplist = []  downlist = []  for i in xlist:    uplist.append(i / 4)  for i in ylist:    downlist.append(i / 4)  for i in range(len(uplist)):    uplist[i] /= 2  for i in range(len(downlist)):    downlist[i] /= 2  func = lambda x, y: x if y in x else x + [y]  up = reduce(func, [[], ] + uplist)  func = lambda x, y: x if y in x else x + [y]  down = reduce(func, [[], ] + downlist)  return up,down

编写好排列方法,会用的

def bubble(l):    for index in range(len(l) - 1, 0 , -1):        for two_index in range(index):            if l[two_index] > l[two_index + 1]:                l[two_index], l[two_index + 1] = l[two_index + 1], l[two_index]    return l

最后的进行解析,拼装源码

def end():  orders = getUPDOWN()  orderx = orders[0]  ordery = orders[1]  print 'x:',orderx  print 'y:',ordery  orderX = [145, 157, 277, 265, 169, 181, 253, 241, 97, 109, 301, 289, 73, 85, 37, 25, 1, 13, 133, 121, 49, 61, 229,            217, 193, 205]  orderY = [157, 145, 265, 277, 181, 169, 241, 253, 109, 97, 289, 301, 85, 73, 25, 37, 13, 1, 121, 133, 61, 49, 217,            229, 205, 193]  print u'X:',orderX  print u'Y:',orderY  for x in range(26):    orderX[x] -= 1    orderX[x] /= 12  for y in range(26):    orderY[y] -= 1    orderY[y] /= 12  endX = []  endY = []  for i in range(len(orderX)):    for j in range(len(orderx)):      if orderx[j] == orderX[i]:        endX.append(i)        break  for i in range(len(orderY)):    for j in range(len(ordery)):      if ordery[j] == orderY[i]:        endY.append(i)        break  print 'endx:',endX  print 'endy:',endY  os.remove('/Users/zijiawang/Downloads/0_test.jpg')  os.remove('/Users/zijiawang/Downloads/1_test.jpg')  all = []  all = endX+endY  # print 'all:',all  #系统最多可实验5次  func = lambda x, y: x if y in x else x + [y]  all_old = reduce(func, [[], ] + all)  # print 'all_old:',all_old  all_end =bubble(all_old)  print 'all_end:',all_end  duandata = 1000  for i in range(1,len(all_end)):    if all_end[i]-1 in all_end:      pass    else:      duandata = all_end[i]      print u'断点为:',duandata  guess =[]  if duandata != 1000:    if endX != [] and endY!=[]:      print u'断点1'      guess = [duandata,all_end[0]]    elif endX ==[]:      print u'断点2'      guess = [duandata, endY[0]]    elif endY == []:      print u'断点3'      guess = [duandata,  endX[0]]  else:      print u'无断点'      guess = [ all_end[0]]  end_guess =[]  print u'猜测的点:',guess  for i in guess:    end_guess.append(i * 12 - 38)    end_guess.append(i * 12 - 28)    end_guess.append(i * 12 - 20)    end_guess.append(i * 12 - 17)    end_guess.append(i * 12 - 15)  print  u'猜测的位移量: ',end_guess  return end_guess

主函数

if __name__ == '__main__':  downloadImg()  color1 = getcolor(Image.open('/Users/zijiawang/Downloads/0_test.jpg').load())  color2 = getcolor(Image.open('/Users/zijiawang/Downloads/1_test.jpg').load())  guess = end()  for i in guess:    print i,wzj.title    try:      ele = wzj.find_element_by_xpath('//div[@class="gt_slider_knob gt_show"]')    except:      ele = wzj.find_element_by_xpath('//div[@class="gt_slider_knob gt_show moving"]')    ActionChains(wzj).click_and_hold(ele).perfORM()    ActionChains(wzj).move_to_element_with_offset(ele, 0,i).perform()

Python+selenium怎么破解拼图验证码

关于“Python+selenium怎么破解拼图验证码”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网Python频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Python+selenium怎么破解拼图验证码

本文链接: https://lsjlt.com/news/321959.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python+selenium怎么破解拼图验证码
    这篇文章主要介绍“Python+selenium怎么破解拼图验证码”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python+selenium怎么破解拼图验证码”文章能帮助大家解决问题。实现思路很多...
    99+
    2023-06-29
  • Python+selenium破解拼图验证码的脚本
    目录实现思路核心代码实现思路 很多网站都有拼图验证码 1.首先要了解拼图验证码的生成原理 2.制定破解计划,考虑其可能性和成功率。 3.编写脚本 很多网站的拼图验证码都是直接借助第三...
    99+
    2024-04-02
  • 实验楼Python破解验证码
      本人大二,因为Python结业考试项目,又想要学习机器学习方向,但是由于接触时间不长,选择了实验楼的Python破解验证码这个项目作为我的项目, 我在原来的基础上加了一些代码用于完善,并且对功能如何实现记录在此,第一次接触到图像识别的...
    99+
    2023-01-30
    验证码 实验楼 Python
  • selenium+java破解极验滑动验证码的示例代码
    摘要分析验证码素材图片混淆原理,并采用selenium模拟人拖动滑块过程,进而破解验证码。人工验证的过程打开威锋网注册页面移动鼠标至小滑块,一张完整的图片会出现(如下图1)点击鼠标左键,图片中间会出现一个缺块(如下图2)移动小滑块正上方图案...
    99+
    2023-05-30
  • 怎么用Python破解滑动验证码
    本篇文章给大家分享的是有关怎么用Python破解滑动验证码,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。相信大家在登录某些网站的时候,都会遇到请输入验证码的状态,比如在哔哔哔哔...
    99+
    2023-06-02
  • Python实现滑块拼图验证码详解
    目录初级版滑块拼图验证码补充知识点高级版滑动拼图验证码滑动拼图验证码可以算是滑块验证码的进阶版本,其验证机制相对复杂。本节将介绍两种滑动拼图验证码:初级版和高级版本。 初级版滑块拼...
    99+
    2024-04-02
  • Python+Selenium+Pytesseract怎么实现图片验证码识别
    这篇文章给大家介绍Python+Selenium+Pytesseract怎么实现图片验证码识别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、selenium截取验证码import jsonfrom&nbs...
    99+
    2023-06-26
  • Python爬虫怎么破解滑块验证码
    这篇文章主要介绍“Python爬虫怎么破解滑块验证码”,在日常操作中,相信很多人在Python爬虫怎么破解滑块验证码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python爬虫怎么破解滑块验证码”的疑惑有所...
    99+
    2023-06-20
  • 【flutter滑动拼图验证码】
    Java后台使用aj_captcha插件,提供/captcha/get(获取captcha底图和拼块图片)、/captcha/check(验证拼图偏移量)这两个接口。并且这个插件在GitHub上有源码。 1.先准备好aj_captcha的...
    99+
    2023-08-19
    flutter
  • 详解Python结合Genetic Algorithm算法破解网易易盾拼图验证
    首先看一下目标的验证形态是什么样子的 是一种通过验证推理的验证方式,用来防人机破解的确是很有效果,但是,But,这里面已经会有一些破绽,比如: (以上是原图和二值化之后的结果) ...
    99+
    2024-04-02
  • 怎么用Python爬虫破解滑动验证码
    这篇文章给大家分享的是有关怎么用Python爬虫破解滑动验证码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型...
    99+
    2023-06-14
  • Python+Selenium+Pytesseract实现图片验证码识别
    目录一、selenium截取验证码二、安装识别环境pytesseract+Tesseract-OCR验证识别环境是否正常三、处理验证码图片图片处理识别一、selenium截取验证码 ...
    99+
    2024-04-02
  • python自动化测试之破解图文验证码
    对于web应用程序来讲,处于安全性考虑,在登录的时候,都会设置验证码,验证码的类型种类繁多,有图片中辨别数字字母的,有点击图片中指定的文字的,也有算术计算结果的,再复杂一点就是滑动验...
    99+
    2024-04-02
  • python滑块验证码如何破解
    很抱歉,我不能提供关于破解滑块验证码的信息。这是不道德且违法行为,违反了网站的服务条款和法律法规。我鼓励尊重和遵守所有的在线服务和法...
    99+
    2023-08-24
    python
  • 利用Python破解验证码实例详解
    一、前言 本实验将通过一个简单的例子来讲解破解验证码的原理,将学习和实践以下知识点: Python基本知识 PIL模块的使用 二、实例详解 安装 pillow(PIL)库: ...
    99+
    2022-06-04
    验证码 详解 实例
  • Java实现滑块拼图验证码
    本文实例为大家分享了Java实现滑块拼图验证码的具体代码,供大家参考,具体内容如下 1、后端随机生成抠图和带有抠图阴影的背景图片,后台保存随机抠图位置坐标 2、前端实现滑动交互,将抠...
    99+
    2024-04-02
  • C#滑动验证码拼图验证功能实现(SlideCaptcha)
    目录使用背景:实现分析:后端代码:准备:使用:前端代码:结语:使用背景: 关于滑动验证码的使用场所还是非常多的,如:调取短信接口之前,和 注册请求之前 或者 频繁会调用的接口都需要加...
    99+
    2024-04-02
  • Python破解极验滑动验证码详细步骤
    目录极验滑动验证码实现位移移动需要的基础知识对比两张图片,找出缺口获得图片按照位移移动详细代码极验滑动验证码 以上图片是最典型的要属于极验滑动认证了,极验官网:http://www...
    99+
    2024-04-02
  • 用selenium解决滑块验证码
    前言 因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧。这篇博客主要是用selenium解决滑块验证码的个别案列。 思路: 用selenium打开浏览器指定网站将残缺块图片和背...
    99+
    2023-09-04
    selenium chrome python
  • 利用Python+Selenium破解春秋航空网滑块验证码的实战过程
    目录前言开发工具环境搭建实战记录一.验证码简介二.破解滑块验证码2.1计算滑块到缺口的距离2.2将滑块拖到缺口位置前言 记录一次利用Python+Selenium破解滑块验证码的实战过程。 让我们愉快地开始吧~ 开...
    99+
    2022-06-02
    Python Selenium滑块验证码 Python Selenium验证码
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作