pyppeteer 模拟人工滑动验证(一)

pyppeteer 模拟人工滑动验证(一),第1张

pyppeteer 有提供鼠标滑动的方法,但是单独调用 pyppeteer 滑动方法是无法通过验证的,必须使滑动轨迹更加接近人工的方式才行。

这里我们先了解一下pyppeteer是如何实现滑动的

根据以上的4个方法组合就可以实现滑动。

如果滑块已经页面page中,则直接调用 pagehover(slide_id), 无需这么复杂

1找出 iframe 的css选择器 :iframe#sufei-dialog-content (你应该根据实际情况填写)

2在page中找到此 WebElement元素节点: iframe_element = await pageJ('iframe#sufei-dialog-content')

此时还 无法在 iframe_element 上调用hover() 函数,因为iframe_element此时是 ElementHandle Class,而我们需要的是Frame Class

3将ElementHandle Class强转成Frame Class :iframe =await iframe_elementcontentFrame()

完整的方法应该是:

其中x,y 是指移动到绝对横向,纵向坐标,options是一个字典,只有一个键steps,用来控制速度。

例如你想要鼠标向右移动500像素,则 x为当前横坐标 + 500,y为当前纵坐标不变。

当前的横坐标、纵坐标获取有些麻烦,网上也有人这样来滑动:

await pagemouse(10000,0) ,这样是指把鼠标横行移动到10000,纵向移动到零,滑动无法纵向移动,所以只能看到横行的移动效果。没有添加第三个参数,则默认一步完成 {'steps':1}

注意:这里的坐标和像素值是一致的,左上角为起点(0,0)

steps 是指分成几步来完成,steps越大,滑动速度越慢。(在源码中,steps是指移动到指定x,y 分段滑动的次数,但是每次启动滑动都会花费一定时间,可以认为steps是滑动的速度)

到现在,我们已经完成了滑动验证的功能,当然它还不够完善,但基本的功能已经齐全了,在下一节,介绍一下控制滑动轨迹,模拟人工滑动。

注意1:这里pyppeteer涉及到 page 与 iframe,peppeteer的功能是以frame为基础单位来实现的,page 的功能 iframe 都有,page 在执行函数时,会先调用 frame = selfmainFrame,然后在frame上执行功能。mainFrame就是最外面的那个Frame

注意2: mouse对象是page/mainFrame对象所独有的,在子frame中,也就是iframe 中不能调用mouse对象。

后续: pyppeteer 模拟人工滑动验证(二)

前端通过传递给后端html_url,由后端服务器获取html文件进行渲染,生成pdf,然后将pdf上传云上服务器。根据发布的相关信息查询到,云上服务器存储html,前端通过传递给后端html_url,由后端服务器获取html文件进行渲染,生成pdf,然后将pdf上传云上服务器。选择pyppeteer,有如下依据,python官方库如xhtml2pdf只能处理类似富文本类的静态页面,而html需要js渲染,故借助浏览器是一种可行的实现方式,tornado是异步框架,pyppeteer是异步库匹配。

以上就是关于pyppeteer 模拟人工滑动验证(一)全部的内容,包括:pyppeteer 模拟人工滑动验证(一)、前端html数据生成pdf,要给后端传什么路径、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/10138458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存