selenium利用js获取前端canvas画布标签的图片内容

非小白直接阅读canvas文档

小白继续往下看

问题需求:

获取极验三代滑动验证的图片
查看官网示例:https://www.geetest.com/Sensebot/

在这里插入图片描述

极验三代滑动验证使用canvas画布标签,普通方法取不到图,阅读本文第一行文档,得到解决思路:
使用selenium执行js文件,得到base64编码的图片信息,解码成bytes类型后保存为本地图片,下面直接看源码:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
import random
import base64

driver = webdriver.Chrome()
driver.get('http://127.0.0.1:8000/')  #打开本地部署的极验滑动验证

def click(block):  # 自定义点击函数,模拟人工点击
    action = ActionChains(driver)
    action.click_and_hold(block).perform()
    time.sleep(random.randint(1,10)/10)
    action.release(block).perform()
btn = driver.find_element_by_class_name('geetest_wait')  #到点击按钮
click(btn) # 验证第一步,点击按钮进行验证

#下面的js代码根据canvas文档说明而来
JS = 'return document.getElementsByClassName("geetest_canvas_bg geetest_absolute")[0].toDataURL("image/png");'
# 执行 JS 代码并拿到图片 base64 数据
im_info = driver.execute_script(JS)  #执行js文件得到带图片信息的图片数据
im_base64 = im_info.split(',')[1]  #拿到base64编码的图片信息
im_bytes = base64.b64decode(im_base64)  #转为bytes类型
with open('bg.png','wb') as f:  #保存图片到本地
    f.write(img_data)
# 完毕

图片Im_info数据截图:
在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值