,,python3 破解 geetest(极验)的滑块验证码功能

,,python3 破解 geetest(极验)的滑块验证码功能

这篇文章主要介绍了python3破解吉斯特(极验)的滑块验证码功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

下面一段代码给大家介绍大蟒破解吉斯特验证码功能,具体代码如下所示:

从硒导入网驱动程序

从selenium.webdriver.support.ui导入WebDriverWait

从硒。网络驱动。常见。动作链导入操作链

进口PIL .图像作为图像

导入时间,re,随机

导入请求

尝试:

从斯特林堡进口斯特林堡

除了导入错误:

从超正析象管导入斯特林乔

#爬虫模拟的浏览器头部信息

agent=' Mozilla/5.0(Windows NT 5.1;rv:33.0)壁虎/20100101火狐/33.0 '

标题={

"用户代理":代理

}

# 根据位置对图片进行合并还原

#文件名:图片

# location_list:图片位置

#内部两个图片处理函数的介绍

#裁剪函数带的参数为(起始点的横坐标,起始点的纵坐标,宽度,高度)

#粘贴函数的参数为(需要修改的图片,粘贴的起始点的横坐标,粘贴的起始点的纵坐标)

def获取_合并_图像(文件名,位置列表):

#打开图片文件

im=image.open(文件名)

#创建新的图片,大小为260*116

new_im=image.new('RGB ',(260,116))

im_list_upper=[]

im_list_down=[]

# 拷贝图片

对于位置列表中的位置:

#上面的图片

如果位置['y']==-58:

im _ list _ upper。追加(im。作物((abs(位置[' x ']),58,ABS(位置['x']) 10,166)))

#下面的图片

如果位置['y']==0:

im _ list _ down。追加(im。crop((ABS(location[' x ']),0,abs(location['x']) 10,58))

new_im=image.new('RGB ',(260,116))

x_offset=0

#黏贴图片

对于im_list_upper中的即时消息:

new_im.paste(im,(x_offset,0))

x_offset=im.size[0]

x_offset=0

对于im_list_down中的即时消息:

new_im.paste(im,(x_offset,58))

x_offset=im.size[0]

返回新消息

#下载并还原图片

#驱动程序:网络驱动程序

# div:图片的差异

def get_image(驱动程序,分区):

#找到图片所在的差异

背景_图像=驱动程序。通过XPath查找元素(div)

location_list=[]

imageurl=' '

#图片是被半铸钢钢性铸铁(铸造半钢)按照位移的方式打乱的,我们需要找出这些位移,为后续还原做好准备

对于背景图像中的背景图像:

位置={}

#在超文本标记语言里面解析出小图片的全球资源定位器(统一资源定位器)地址,还有长高的数值

location[' x ']=int(re。查找全部('背景图像:URL \(').*)'\);背景-职位:(。*)px(.*)px;',背景_图像。get _ attribute(' style ')[0][1])

location[' y ']=int(re。查找全部('背景图像:URL \(').*)'\);背景-职位:(。*)px(.*)px;',背景_图像。get _ attribute(' style ')[0][2])

imageurl=re。查找全部('背景图像:URL \(').*)'\);背景-职位:(。*)px(.*)px;',背景_图像。get _ attribute(' style ')[0][0]

位置_列表.追加(位置)

#替换图片的后缀,获得图片的统一资源定位器

imageurl=imageurl。替换(' webp ',' jpg ')

#获得图片的名字

imageName=imageurl。split('/')[-1]

#获得图片

session=requests.session()

r=session.get(imageurl,headers=headers,verify=False)

#下载图片

用打开(imageName,“wb”)作为女:

f.write(r.content)

f.close()

#重新合并还原图片

image=get _ merge _ image(imageName,location_list)

返回图像

#对比RGB值

def is_similar(image1,image2,x,y):

及格

#获取指定位置的RGB值

pixel1=image1.getpixel((x,y))

pixel2=image2.getpixel((x,y))

对于范围(0,3)内的我:

# 如果相差超过50则就认为找到了缺口的位置

如果abs(像素1[I]像素2[i])=50:

返回错误的

返回真实的

#计算缺口的位置

定义获取不同位置(图像1,图像2):

i=0

# 两张原始图的大小都是相同的260*116

# 那就通过两个为循环依次对比每个像素点的RGB值

# 如果相差超过50则就认为找到了缺口的位置

对于范围内的一(0.260):

对于范围(0,116)内的j:

if is_similar(image1,image2,I,j)==False:

返回我

#根据缺口的位置模拟x轴移动的轨迹

def获取_跟踪(长度):

及格

list=[]

#间隔通过随机范围函数来获得,每次移动一步或者两步

x=random.randint(1,3)

#生成轨迹并保存到目录内

而长度x=5:

list.append(x)

长度=长度加在以-u结尾的法语词源的名词之后构成复数

x=random.randint(1,3)

#最后五步都是一步步移动

对于范围内的我(长度):

list.append(1)

返回列表

#滑动验证码破解程序

def main():

#打开火狐浏览器

driver=webdriver .火狐()

#用火狐浏览器打开网页

司机。get(' http://www。吉斯特。com/exp _ embed’)

#等待页面的上元素刷新出来

WebDriverWait(司机,30)。直到(lambda the _ driver:the _ driver。find _ element _ by _ XPath('//div[@ class=' gt _ slider _ knob gt _ show ']').is_displayed())

WebDriverWait(司机,30)。直到(lambda the _ driver:the _ driver。find _ element _ by _ XPath('//div[@ class=' gt _ cut _ BG gt _ show ']').is_displayed())

WebDriverWait(司机,30)。直到(lambda the _ driver:the _ driver。find _ element _ by _ XPath('//div[@ class=' gt _ cut _ full BG gt _ show ']').is_displayed())

#下载图片

image1=get_image(driver,'//div[@ class=' gt _ cut _ BG gt _ show ']/div ')

image2=get_image(driver,'//div[@ class=' gt _ cut _ full BG gt _ show ']/div ')

#计算缺口位置

loc=get_diff_location(image1,image2)

#生成x的移动轨迹点

跟踪列表=获取跟踪(位置)

#找到滑动的圆球

元素=驱动程序。find _ element _ by _ XPath('//div[@ class=' gt _ slider _ knob gt _ show ']')

位置=元素。位置

#获得滑动圆球的高度

y=位置['y']

#鼠标点击元素并按住不放

打印('第一步,点击元素)

动作链(驱动程序)。单击并按住(on_element=element).执行()

时间。睡眠(0.15)

打印('第二步,拖动元素)

track_string=' '

对于曲目列表中的曲目:

#不能移动太快,否则会被认为是程序执行

track_string=track_string '{%d,%d},' % (track,y - 445)

# xoffset=轨道22:这里的移动位置的值是相对于滑动圆球左上角的相对值,而轨迹变量里的是圆球的中心点,所以要加上圆球长度的一半。

#yoffset=y-445:这里也是一样的。不过要注意的是不同的浏览器渲染出来的结果是不一样的,要保证最终的计算后的值是22,也就是圆球高度的一半

动作链(驱动程序)。move _ to _ element _ with _ offset(to _ element=element,xoffset=track 22,yoffset=y-445).执行()

#间隔时间也通过随机函数来获得,间隔不能太快,否则会被认为是程序执行

time.sleep(random.randint(10,50)/100)

打印(track_string)

#xoffset=21,本质就是向后退一格。这里退了5格是因为圆球的位置和滑动条的左边缘有5格的距离

动作链(驱动程序)。move _ to _ element _ with _ offset(to _ element=element,xoffset=21,yoffset=y-445).执行()

时间。睡眠(0.1)

动作链(驱动程序)。move _ to _ element _ with _ offset(to _ element=element,xoffset=21,yoffset=y-445).执行()

时间。睡眠(0.1)

动作链(驱动程序)。move _ to _ element _ with _ offset(to _ element=element,xoffset=21,yoffset=y-445).执行()

时间。睡眠(0.1)

动作链(驱动程序)。move _ to _ element _ with _ offset(to _ element=element,xoffset=21,yoffset=y-445).执行()

时间。睡眠(0.1)

动作链(驱动程序)。move _ to _ element _ with _ offset(to _ element=element,xoffset=21,yoffset=y-445).执行()

打印('第三步,释放鼠标)

#释放鼠标

动作链(驱动程序)。release(on_element=element).执行()

时间。睡眠(3)

#点击验证

#提交=驱动程序。find _ element _ by _ XPath('//div[@ class=' gt _ Ajax _ tip success ']')

#打印(提交。位置)

#时间。睡眠(5)

#关闭浏览器,为了演示方便,暂时注释掉。

#driver.quit()

#主函数入口

if __name__=='__main__ ':

及格

主()

总结

以上是边肖推出的python3破解geetest的滑块验证码功能。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • qq短信验证码发送失败怎么回事,qq验证码失败是怎么回事
  • ,,使用阿里大于(大鱼)平台进行发送手机验证码的流程
  • ,,SpringSceurity实现短信验证码登陆
  • android读取短信验证码,
  • android读取短信验证码,,Android使用MobSDK短信验证
  • android自动获取短信验证码功能在哪,安卓自动获取短信验证码
  • android自动获取短信验证码功能在哪,android自动获取短信验证码功能失效,Android自动获取短信验证码功能
  • android实现短信验证码自动填写功能是什么,安卓短信验证码自动填充 实现
  • android实现短信验证码自动填写功能是什么,安卓短信验证码自动填充 实现,Android实现短信验证码自动填写功能
  • android如何通过手机自动获取短信验证码信息,安卓自动获取短信验证码
  • android如何通过手机自动获取短信验证码信息,安卓自动获取短信验证码,Android如何通过手机自动获取短信验证码
  • ,,python网络爬虫实现发送短信验证码的方法
  • ,,Python实现滑块拼图验证码详解
  • 发验证码不在桌面显示,验证码能收到桌面上不显示怎么回事
  • 验证码拖不动滑块,验证码滑不动怎么办呀,为什么验证码滑块滑不动
  • 留言与评论(共有 条评论)
       
    验证码: