基于pyppeteer模拟浏览器方式破解极验滑块验证码

1.背景

在爬虫领域中,可能你有很多中破解手段,但是随着产品的迭代和技术新进,反爬措施也就趋于智能化,我们也就要模拟人的想法来破解了

2.目标

本节将介绍基于pyppeteer技术来模拟浏览器方式的滑块验证码图片

主要步骤:

a.获取没有缺口的图片/含缺口图片(目的将两种类型图片进行比较,一半情况下前端是隐藏了背景图,需要你通过css调控来发现原图在那个标签内)

b.计算缺口离左边界的距离

3.步骤展示

比较通过改css,display:none与block,查找你的目标图片

然后使用模拟浏览器方式,向浏览器中注入js

fulljs = """() => { return document.getElementsByClassName("geetest_canvas_fullbg")[0].toDataURL("image/png") }"""
fadejs = """() => { return document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].toDataURL("image/png")}"""

上面代码表示将对应图片转为base64(这样的好处避免了截图的不准确而带来比较差异带来的影响)

接下来就可以根据图片差异(两种图片相减就可以得到差异部分)

4.详细代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-"""
Author:Lijiacai
Email:1050518702@qq.com
===========================================
CopyRight@JackLee.com
===========================================
"""
import base64
import os
import sys
import json
import asyncio
import time
import numpy as np
import cv2
from pyppeteer import launch
from PIL import Image, ImageChops
import matplotlib.pyplot as pltlaunch_args = {"headless": False,"args": ["--start-maximized","--disable-infobars","--ignore-certificate-errors","--log-level=3","--enable-extensions","--window-size=1920,1080","--user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",],
}async def get_decode_image(filename, data):_, img = data.split(",")img = base64.b64decode(img)with open(filename, "wb") as f:f.write(img)async def main():browser = await launch(**launch_args)page = await browser.newPage()await page.setViewport({"width": 1920, "height": 1080})await page.goto(url="http://sd.gsxt.gov.cn/index.html")await page.waitForXPath("//input[@id='keyword']")await asyncio.sleep(2)elem = await page.xpath("//input[@id='keyword']")await elem[0].type("百度")await asyncio.sleep(2)await page.waitForXPath("//img[@id='btn_query']")elem = await page.xpath("//img[@id='btn_query']")await elem[0].click()await asyncio.sleep(3)fulljs = """() => { return document.getElementsByClassName("geetest_canvas_fullbg")[0].toDataURL("image/png") }"""fadejs = """() => { return document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].toDataURL("image/png")}"""full_img = await page.evaluate(fulljs)await get_decode_image(filename="fullbg.png", data=full_img)await asyncio.sleep(0.1)fade_img = await page.evaluate(fadejs)await get_decode_image(filename="fadebg.png", data=fade_img)await asyncio.sleep(0.1)a = await compute_gap(img1="fullbg.png", img2="fadebg.png")elem = await page.xpath("//div[@class='geetest_slider_button']")await elem[0].hover()await page.mouse.down()await page.mouse.move(int(840 + a), 450)await page.mouse.up()await asyncio.sleep(1000)await browser.close()async def compute_gap(img1, img2):"""计算缺口偏移 这种方式成功率很高"""img1 = Image.open(img1)img2 = Image.open(img2)# 将图片修改为RGB模式img1 = img1.convert("RGB")img2 = img2.convert("RGB")# 计算差值diff = ImageChops.difference(img1, img2)plt.figure('pokemon')plt.imshow(diff, cmap='gray')plt.show()table = []for i in range(256):if i < 50:table.append(0)else:table.append(1)# 灰度图diff = diff.convert("L")## # 二值化diff = diff.point(table, '1')# print(diff.getbbox())  # 这里可以直接获取差异坐标点坐标顺序为左上右下#left = 43# # 这里做了优化为减少误差 纵坐标的像素点大于5时才认为是找到# # 防止缺口有凸起时有误差for w in range(left, diff.size[0]):lis = []for h in range(diff.size[1]):if diff.load()[w, h] == 1:lis.append(w)if len(lis) > 5:return wif __name__ == '__main__':asyncio.get_event_loop().run_until_complete(main())

5.上面教程只是一个思路,代码中没有模拟人点鼠标的运动轨迹,但是测试是可以发现,按钮是移动到了缺口位置

如果阅读者需要模拟轨迹,只需要把偏移的方式变下,目前我的代码直接到move到了目标点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/54156.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络爬虫-tx滑块验证码

仅供研究学习使用。 目标站点 --> 腾讯防水墙官网 首先打开Fiddler&#xff0c;刷新下页面完成一组操作&#xff0c;发现主要请求有这几个 去除加载的js与log上传&#xff0c;真正的一组操作有三个&#xff1a; 1是初始化验证码。详细请求为 GET https://t.captcha.qq.co…

验证码识别登录:使用超级鹰(验证码识别第三方包)识别超级鹰网站登录

验证码识别超级鹰网址&#xff1a;超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大 (chaojiying.com) 注册并微信扫码即可获得1000积分&#xff0c;首先做如图操作生成ID 然后下载其第三方开发api python文件 点击下载即可&#xff0c;将下载…

selenium 超级鹰 通过携程滑块和汉字验证码

大概流程 1、进入页面点击同意按钮。 2、得到滑块和滑块区域的xpath 3、定位滑块&#xff0c;设置按住事件&#xff0c;进行拖动 4、xpath定位汉字图片&#xff0c;获取屏幕截图&#xff0c;保存本地 5、超级鹰识别图片返回汉字对应的坐标&#xff0c;移动至坐标位置进行点击。…

面试中经常问到的几个问题,快来看看能答对几道吧

写在前面 CSDN话题挑战赛第1期 活动详情地址&#xff1a;https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f 参赛话题&#xff1a;前端面试宝典 话题描述&#xff1a;欢迎各位加入话题创作得小伙伴&#xff0c;如果我没有猜错得话&#xff0c;我觉得你是应该同…

速卖通大卖不会告诉你的技巧,学会这招出单很简单

如今&#xff0c;无论是在实体店还是在网上&#xff0c;“流量”一词都很熟悉&#xff0c;流量越大&#xff0c;交易量自然就越大。从事国内电商的朋友都知道&#xff0c;要把网店做好&#xff0c;首先要做好店铺信誉&#xff0c;这样才能有更多的流量。尽管速卖通是一个重产品…

速卖通新手卖家入门知识问答

美国有亚马逊&#xff0c;中国有速卖通。我们都知道“十年一剑速卖通”&#xff0c;自2010年速卖通成立并高速发展&#xff0c;至今已覆盖全球220个国家和地区&#xff0c;支持18种语言&#xff0c;支持全球51个国家的当地支付方式&#xff0c;海外成交卖家突破1.5亿。速卖通已…

速卖通正式推出全托管,卖家竞争进入新阶段

全托管来了&#xff0c;卖家就能安心做甩手掌柜吗&#xff1f; 正式推出全托管 显而易见&#xff0c;越来越多的平台正在转向全托管模式。 近日&#xff0c;速卖通在2023年度商家峰会上&#xff0c;正式推出了全托管服务模式。官方表示&#xff0c;托管是对速卖通平台商家服…

【速卖通】 AliExpress(速卖通)关键词搜索结果采集

采集场景 在AliExpress(速卖通) 首页中 http://www.aliexpress.com 中输入关键词&#xff0c;采集关键词搜索后得到的商品列表信息。 采集字段 关键词、标题、商品id、商品图片地址、商品详情链接、价格、免费退送货、星级、已出售数量、店铺名 采集结果 采集结果可导出为E…

速卖通正在运营的店铺,流量突然下滑卖家该怎么做

现在速卖通卖家的生意多少都变差了&#xff0c;不管承不承认&#xff0c;这都是客观原因。人人都说速卖通正在转型&#xff0c;本来是打算给予精品店铺、风格化店铺一定的扶持&#xff0c;逐渐品牌化。而照现在看来之前的打算还没落实&#xff0c;又紧急推出大卖的天堂AE-MALL&…

121.Android 简单的人工智能聊天项目,chatAi,AI聊天项目,GPTAi

//首页xml布局代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"mat…

3 名离职员工窃取公司游戏源码,半年狂赚 1.5 亿,网友:“自立门户也不带这样玩的!”...

整理 | 朱珂欣 出品 | CSDN程序人生&#xff08;ID&#xff1a;coder_life&#xff09; 对于游戏公司而言&#xff0c;安全、抄袭问题总是「防不胜防」。 不仅要抵御黑客攻击、排查自身的安全漏洞&#xff0c;还要警惕员工拿着代码跑了&#xff01; 近日&#xff0c;据上海市…

揭秘 “移动云杯”移动赛道——算网应用自定义创新子赛道

【赛事介绍】 随着我国“东数西算”工程的推进&#xff0c;算力网络正成为国家、社会、产业发展的战略要求&#xff0c;在数字中国建设进程中发挥着重要引擎作用。中国移动作为我国数字经济发展的“排头兵”&#xff0c;锚定“世界一流信息服务科技创新公司”核心定位&#xff…

揭秘“移动云杯”行业赛道——行业应用创新子赛道

【赛事介绍】 为助力中国移动算力网络的发展&#xff0c;加速移动云向算力网络演进过程&#xff0c;促进基于移动云产品能力的创新应用与解决方案的丰富&#xff0c;中国移动联合多家单位举办第二届“移动云杯”算力网络应用创新大赛&#xff0c;为算力网络的战略落实提供创新平…

国内下载谷歌插件的免费方法

插件功能让Chrome浏览器变得更加优秀&#xff0c;极大地提升了用户体验&#xff0c;给用户一种定制式的在线服务。但是在国内&#xff0c;用户无法登陆谷歌商店&#xff0c;在不能科学上网的情况下&#xff0c;想要下载插件的方法是使用第三方插件下载器。 扩展坞是一个很方便…

Android 点击 App icon 发生了什么?

Gityuan – startActivity启动过程分析 点击桌面App图标&#xff0c;Launcher进程采用Binder IPC向system_server进程发起startActivity请求&#xff1b;system_server 进程接收到请求后&#xff0c;向 zygote 进程发送创建进程的请求&#xff1b;Zygote 进程 fork 出新的子进…

Android开发中app图标更换

最近学习Android开发 然后自己有点菜 一遇到问题就没办法自己解决只能百度解决 然后我在如何修改app图标遇到了一些问题 下面是我解决问题的一些过程 写下来以后自己好看 首先网上的教程是 复制一张图片&#xff08;png格式&#xff09;到资源文件夹下面的drawable目录下&am…

QT for Android设置APP应用图标和名称

APP应用图标 在工程目录中&#xff0c;创建一个Android_sources文件夹&#xff0c;与xxx.pro文件在同一目录下 在QT界面中&#xff0c;打开xxx.pro文件&#xff0c;在最后一行添加ANDROID_PACKAGE_SOURCE_DIR $$PWD/android-sources 在工程文件夹下的Android-build文件中&am…

直播推流方案

一、关键特性 1&#xff09;输入输出接口支持MIPI/BT1120/LVDS输入&#xff0c;MIPI/LVDS输出 2&#xff09;网络接口支持千兆网口、WiFi、4G/5G 3&#xff09;输入输出格式最高支持1080p60Hz&#xff08;RV1126最高4Kp30Hz&#xff09; 4&#xff09;视频编码支持H.264和H.26…

不止直播:腾讯云直播MLVB 插件除了推流/拉流还有哪些亮眼功能

在之前几篇的文章中&#xff0c;我们介绍了腾讯云移动直播插件MLVB的一些基础概念&#xff08;&#xff09;以及移动直播控件可以拓展的直播场景&#xff08;&#xff09;&#xff0c;今天就来分享MLVB插件除了直播的基础推拉流功能以外还有哪些功能来帮助直播APP和小程序拉新和…

腾讯云直播开发日记(三) 聊天室-直播转码-连麦混流

腾讯云直播开发日记(三) 直播的时候,用户还是需要和主播互动的,我们当前的互动就只有刷礼物,那没钱说礼物怎么搞? 不得让他们吹水? 所以我们需要做一个聊天室, 这个话自己也能做, 系统上线迫在眉睫&#xff0c;工作刻不容缓&#xff0c;所以我们一致决定使用最强能力 买。 …