当前位置: 首页 > news >正文

js 请求blob:https:// 图片

方式1

def get_file_content_chrome(driver, uri):result = driver.execute_async_script("""var uri = arguments[0];var callback = arguments[1];var toBase64 = function(buffer){for(var r,n=new Uint8Array(buffer),t=n.length,a=new Uint8Array(4*Math.ceil(t/3)),i=new Uint8Array(64),o=0,c=0;64>c;++c)i[c]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(c);for(c=0;t-t%3>c;c+=3,o+=4)r=n[c]<<16|n[c+1]<<8|n[c+2],a[o]=i[r>>18],a[o+1]=i[r>>12&63],a[o+2]=i[r>>6&63],a[o+3]=i[63&r];return t%3===1?(r=n[t-1],a[o]=i[r>>2],a[o+1]=i[r<<4&63],a[o+2]=61,a[o+3]=61):t%3===2&&(r=(n[t-2]<<8)+n[t-1],a[o]=i[r>>10],a[o+1]=i[r>>4&63],a[o+2]=i[r<<2&63],a[o+3]=61),new TextDecoder("ascii").decode(a)};var xhr = new XMLHttpRequest();xhr.responseType = 'arraybuffer';xhr.onload = function(){ callback(toBase64(xhr.response)) };xhr.onerror = function(){ callback(xhr.status) };xhr.open('GET', uri);xhr.send();""", uri)if type(result) == int:raise Exception("Request failed with status %s" % result)return base64.b64decode(result)
bytes_data = get_file_content_chrome(driver, "blob:https://amazon-api.arkoselabs.com/8784ddf9-bbd2-48a6-b529-fc2bfcdaaebc")
# print('bytes_data:', bytes_data)
base64data0 = base64.b64encode(bytes_data).decode("utf8")
print('base64data0:', base64data0)
with open(f'./captcha0.jpg', 'wb') as file:file.write(bytes_data)

方式2

js_img = '''function getImageBlob(url, cb) {var xhr = new XMLHttpRequest();xhr.open("get", url, true);xhr.responseType = "blob";xhr.onload = function() {if (this.status == 200) {if(cb) cb(this.response);}};xhr.send();
}
function preView(url){let reader = new FileReader();getImageBlob( url , function(blob){reader.readAsDataURL(blob);});reader.onload = function(e) {img = document.querySelector('img#captchaimg')if(img){img.src = e.target.result;document.body.appendChild(img);}else{var img = document.createElement("img");img.id = 'captchaimg'img.src = e.target.result;document.body.appendChild(img);}}
}
preView("blob_image")'''
driver.execute_script(js_img.replace('blob_image', blob_image))
time.sleep(2)
captchaimg = driver.find_element(By.XPATH, '//img[@id="captchaimg"]').get_attribute('src')
print('captchaimg:', captchaimg)
base64data = captchaimg.split('base64,')[1]
with io.BytesIO(b64decode(base64data)) as image_file:image = Image.open(image_file)image.save('./captcha.jpg')
content_to_bytes = bytes(captchaimg.split('base64,')[1], 'utf-8')
with open(f'./captcha1.jpg', 'wb') as file:file.write(base64.decodebytes(content_to_bytes))

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ES 慢上游响应问题优化在用户体验场景中的实践
  • Redis服务器统计和配置信息简介
  • 用python识别二维码(python实例二十三)
  • Python-数据爬取(爬虫)
  • vue实现a-model弹窗拖拽移动
  • Power BI 工具介绍
  • 使用GPT-4和ChatGPT构建应用项目
  • 【Redis】复制(Replica)
  • 解决elementUI列表的疑难杂症,排序显示错乱的问题
  • Objective-C 自定义渐变色Slider
  • 数据结构(3.9_1)——特殊矩阵的压缩存储
  • 解决打印PDF文本不清楚的处理办法
  • 如何使用HTML和JavaScript读取文件夹中的所有图片并显示RGB范围
  • 克隆某个特定的分支而不是默认分支(master)
  • 智能运维提升企业长期安全防御能力
  • @jsonView过滤属性
  • 《剑指offer》分解让复杂问题更简单
  • Babel配置的不完全指南
  • mongodb--安装和初步使用教程
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • 大整数乘法-表格法
  • 工作手记之html2canvas使用概述
  • 后端_MYSQL
  • 前端js -- this指向总结。
  • 前言-如何学习区块链
  • 如何合理的规划jvm性能调优
  • 如何设计一个微型分布式架构?
  • 入手阿里云新服务器的部署NODE
  • 使用parted解决大于2T的磁盘分区
  • 学习笔记:对象,原型和继承(1)
  • 一道面试题引发的“血案”
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 阿里云API、SDK和CLI应用实践方案
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • # Redis 入门到精通(九)-- 主从复制(1)
  • (175)FPGA门控时钟技术
  • (C语言)共用体union的用法举例
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (四)React组件、useState、组件样式
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (算法)区间调度问题
  • (未解决)macOS matplotlib 中文是方框
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET Core Web APi类库如何内嵌运行?
  • .net core使用ef 6
  • .Net FrameWork总结
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .net后端程序发布到nignx上,通过nginx访问
  • .net生成的类,跨工程调用显示注释
  • @Autowired 与@Resource的区别