自动化滑动极验v3示例
import random
import ddddocr
from playwright.sync_api import sync_playwright
import time
import requests
with sync_playwright() as p:
det = ddddocr.DdddOcr(det=False, ocr=False)
browser = p.chromium.launch(headless=False, args=[
'--disable-blink-features=AutomationControlled',
'--disable-infobars',
'--disable-web-security',
'--disable-features=IsolateOrigins,site-per-process'
])
context = browser.new_context(
user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
viewport={'width': 1280, 'height': 800}
)
page = context.new_page()
# 打开网页
page.goto("https://www.zhihu.com/")
# 找到手机输入位置并输入手机号
page.fill('//*[@name="username"]', "18888888888")
time.sleep(1)
# 找到按钮并点击
page.click('//*[contains(@class, "CountingDownButton")]')
# 等待弹窗出现
time.sleep(3)
# 获取滑块和背景图片的元素
bg_img_src = page.get_attribute('//*[@class="yidun_bg-img"]', "src")
jigsaw_img_src = page.get_attribute('//*[@class="yidun_jigsaw"]', "src")
# 下载图片
bg_img_data = requests.get(bg_img_src).content
jigsaw_img_data = requests.get(jigsaw_img_src).content
with open("full.jpg", "wb") as f:
f.write(bg_img_data)
with open("part.png", "wb") as f:
f.write(jigsaw_img_data)
# 重新读取图片并计算滑块需要移动的距离
with open("part.png", "rb") as f:
target_bytes = f.read()
with open("full.jpg", "rb") as f:
background_bytes = f.read()
res = det.slide_match(target_bytes, background_bytes)
distance = res["target"][0] + 8
print(f"滑块需要移动的距离为 {distance} 像素。")
# 找到滑块并模拟拖动
slider = page.locator('//*[@class="yidun_slider__icon"]')
box = slider.bounding_box()
# 计算滑动轨迹
def human_like_track(distance):
track = []
current = 0
mid = distance * 3 / 4
t = 0.2
v = 0
while current < distance:
if current < mid:
a = random.uniform(2, 3)
else:
a = -random.uniform(2, 4)
v0 = v
v = v0 + a * t
move = v0 * t + 0.5 * a * (t ** 2)
current += move
track.append(round(move))
# 模拟拉扯动作
over_shoot = random.randint(10, 15) # 过头的距离稍微大一点
track.append(over_shoot)
track.append(-over_shoot + random.randint(1, 3))
return track
track = human_like_track(distance)
# 模拟拖动滑块
page.mouse.move(box["x"] + box["width"] / 2, box["y"] + box["height"] / 2)
page.mouse.down()
current_x = box["x"] + box["width"] / 2
for move in track:
current_x += move
page.mouse.move(current_x, box["y"] + box["height"] / 2)
if move < 0: # 拉回来的时候速度稍微慢一点
time.sleep(random.uniform(0.05, 0.1))
else: # 往左的时候速度稍微快一点
time.sleep(random.uniform(0.01, 0.02))
page.mouse.up()
time.sleep(20)
# 关闭浏览器
browser.close()
自动化滑动极验v3示例的更多相关文章
- selenium+java破解极验滑动验证码的示例代码
转自: https://www.jianshu.com/p/1466f1ba3275 selenium+java破解极验滑动验证码 卧颜沉默 关注 2017.08.15 20:07* 字数 3085 ...
- thinkphp整合系列之极验滑动验证码
对于建站的筒子们来说:垃圾广告真是让人深恶痛绝:为了清净:搞个难以识别的验证码吧:又被用户各种吐槽:直到后来出现了极验这个滑动的验证码:这真是一个体验好安全高的方案:官网:http://www.gee ...
- Vue(7)- vue-cookies、极验滑动验证geetest、vue-router的导航守卫
一.vue-cookies 参考文档简书:https://www.jianshu.com/p/535b53989b39 参考文档npm:https://www.npmjs.com/package/vu ...
- vue-cookies、极验滑动验证geetest、vue-router的导航守卫
一 . vue-cookies 参考文档简书:https://www.jianshu.com/p/535b53989b39 参考文档npm:https://www.npmjs.com/package/ ...
- 极验反爬虫防护分析之slide验证方式下图片的处理及滑动轨迹的生成思路
本文要分享的内容是去年为了抢鞋而分析 极验(GeeTest)反爬虫防护的笔记,由于篇幅较长(为了多混点CB)我会按照我的分析顺序,分成如下四个主题与大家分享: 极验反爬虫防护分析之交互流程分析 极验反 ...
- selenium处理极验滑动验证码
要爬取一个网站遇到了极验的验证码,这周都在想着怎么破解这个,网上搜了好多知乎上看到有人问了这问题https://www.zhihu.com/question/28833985,我按照这思路去大概实现了 ...
- selenium+java破解极验滑动验证码
摘要 分析验证码素材图片混淆原理,并采用selenium模拟人拖动滑块过程,进而破解验证码. 人工验证的过程 打开威锋网注册页面(https://passport.feng.com/?r=user/r ...
- Django中使用极验Geetest滑动验证码
一,环境部署 1.创建一个django测试项目 此处省略... 二,文档部署 1.下载安装python对应的SDK 使用命令从Github导入完整项目:git clone https://github ...
- vue_drf之实现极验滑动验证码
一.需求 1,场景 我们在很多登录和注册场景里,为了避免某些恶意攻击程序,我们会添加一些验证码,也就是行为验证,让我们相信现在是一个人在交互,而不是一段爬虫程序.现在市面上用的比较多的,比较流行的是极 ...
- 极验3.0滑动拼图验证的使用--java
[ 前言: 在登录其他网站的时候,看到有个滑动拼图的验证觉得挺好玩的,以前做一个图片验证的小demo,现在发现很多网站都开始流行滑动拼图的验证了,今天也想自己动手来弄一个. 废话不多说,开始撸起来! ...
随机推荐
- Bootstrap 栅栏布局中 col-xs-*、col-sm-*、col-md-*、col-lg-* 区别及使用方法 _2021-11-10
Bootstrap 栅栏布局中 col-xs-.col-sm-.col-md-.col-lg- 区别及使用方法 全文转自:https://www.cnblogs.com/tangbohu2008/p/ ...
- 从 Git 提交历史生成 Release Note
发布软件时写 Release Note 算是常规操作,但每次从头手打也有点累,可以考虑从 Git 的提交历史中自动生成. Git 提交信息一般是三段式结构,段落之间使用空行隔开: <subjec ...
- MindSponge分子动力学模拟——增强采样(2024.11)
技术背景 关于增强采样(Enhanced Sampling)算法的具体原理,这里暂不做具体介绍,感兴趣的童鞋可以直接参考下这篇综述文章:Enhanced sampling in molecular d ...
- 量子线路设计:减少CNOT和T门的意义。
在量子线路的设计中,我们往往希望减少线路中的CNOT门和T门的数目,原因如下: 一般文献宣称减少T门的数量是为了更高效地执行容错量子计算(fault-tolerant quantum computat ...
- 计算机网络基础/进制转换/企业级子网IP划分
数制的含义 数制:计数的方法,指用一组固定的符号和统一的规则来表示数值的方法 数位:指数字符号在一个数中所处的位置 基数:指在某种进位计数制中,数位上所能使用的数字符号的个数 位权:指在某种进位计数制 ...
- git clone 远程代码执行漏洞(CVE-2024-32002) 升级
接到提醒说git有个漏洞,Git clone 远程代码执行漏洞(CVE-2024-32002) 看了看,说是git的Symlinks模块存在高危漏洞,攻击者可以利用该漏洞执行任意代码,导致服务器失陷. ...
- 时序数据库之InfluxDB
涉及用户认证: shangmayuan.com/a/1056241c80ef4dfc9cef830d.html
- SharpZipLib解压.tar.gz
上一篇文章我们说了如何用SharpZipLib来压缩.tar.gz,这篇文章我们来看看如何解压. 直接上代码: using ICSharpCode.SharpZipLib.GZip; using IC ...
- Konva.js
1.前言 简介:Konva.js - 适用于桌面/移动端应用的 HTML5 2d canvas 库 个人体验:原生的canvas只支持绘制基本的直线,矩形,文字,图片,扇形等,如果要支持更复杂的功能, ...
- Linux查看进程所在目录
通过ps 或 top 查看进程信息时,只能查到进程的相对路径,查不到进程的详细信息,如绝对路径等,我们可以通过下面的方法进行查询 1. 通过ll /proc/PID 命令查看进程所在的目录位置 lin ...