自动化滑动极验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,现在发现很多网站都开始流行滑动拼图的验证了,今天也想自己动手来弄一个. 废话不多说,开始撸起来! ...
随机推荐
- P2540 [NOIP2015 提高组] 斗地主 加强版
简要题意 给你一副手牌,求最少的次数出完所有手牌.(按照它给出的规定出) 题目 分析 因为求最小次数直接贪心很明显是错的,但又直接写不出 \(dp\) 的式子,所以我们只能够爆搜所有情况,但这样明显会 ...
- WebService WCF 请求通道在等待 00:00:58.9616639 以后答复时超时。增加传递给请求调用的超时值,或者增加绑定上的 SendTimeout 值。分配给此操作的时间可能是更长超时的一部分。
查看使用什么方式调用的接口 如果是使用的 HttpWebRequest 请检查Timeout属性,默认值是 100,000 毫秒(100 秒)如果超过便会返回超时错误.
- python的迭代器和生成器?
python中的迭代器和生成器都是用来处理数据序列的. 迭代器 迭代器是一个可以记住遍历位置的对象,使用iter()创建一个迭代器,使用next()方法依次返回迭代器中的每一个元素,如果数组里面的数据 ...
- 我们有40%代码是 AI 写的
- Stratum挖矿协议&XMR挖矿流量分析
目录 前言 区块链和挖矿相关概念 挖矿木马 挖矿协议Stratum Stratum工作过程 XMR挖矿流量分析 环境搭建 流量分析 总结 前言 之前参与了一个关于"挖矿行为检测"的 ...
- python中的多继承理解
在python的多继承中,父类的初始化顺序遵循所谓方法解析顺序(Method Resolution Order,MRO)的机制.python使用C3线性化算法来确定多继承类的MRO: 1. 目标:创建 ...
- python数据结构的性能分析
2.python数据结构的性能分析 一.引言 - 现在大家对 大O 算法和不同函数之间的差异有了了解.本节的目标是告诉你 Python 列表和字典操作的 大O 性能.然后我们将做一些基于时间的实验来说 ...
- npm报错error:0308010C:digital envelope routines::unsupported
error:0308010C:digital envelope routines::unsupported 出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而Open ...
- 终端工具之Tabby
我工作中用的最多的工具之一就是「终端连接工具」了,因为经常和 Linux 服务器打交道,经常在上面跑代码.排查系统问题等等. Windows 系统最常用的就是 Xshell 这款终端工具了,但是它只能 ...
- Python之pandas读取Excel
#! -*- coding utf-8 -*- """ 模块功能:读取当前文件夹下的Source里的Excel文件,显示其相关信息 说明:默认把Excel的第一行当做列名 ...