大丰网站建设公司鞍山网站制作开发

news/2025/9/24 14:42:36/文章来源:
大丰网站建设公司,鞍山网站制作开发,html标签代码大全,甘肃省建设厅网站首页绿色建筑由于最近比较忙#xff0c;所以本周搞了一个相对简单的验证码#xff0c;就是抖音Tiktok的滑块验证码#xff0c;这也是接到客户的一个需求。这种验证码通常在电脑端登录抖音、巨量引擎的的时候出现。 首先看一下最终的效果#xff1a; 验证码识别过程 1、利用爬虫采集图…由于最近比较忙所以本周搞了一个相对简单的验证码就是抖音Tiktok的滑块验证码这也是接到客户的一个需求。这种验证码通常在电脑端登录抖音、巨量引擎的的时候出现。 首先看一下最终的效果 验证码识别过程 1、利用爬虫采集图像 由于是识别滑块缺口位置分析了一下大图已经包含了滑块缺口的位置信息所以这里只需要采集大图就够了。不需要小图进行比对这样可以简单一点。 1采集大图 2、人工标记 为了保障识别的精度这里需要进行大量的人工标记最好将误差控制在1-2像素以内这样训练出来的识别模型效果才好。 3、训练模型 4、测试验证 我们将训练好的模型用100张图片来进行测试发现全部都能正确识别位置所以正确率接近100%。因为100张测试图片比较少所以保守估计正确率应该在99%左右。 如果再想提升正确率可以再增加训练的数据量就需要再投入大量人力这个投入与提升产出比需要自己权衡。 5、实战测试 这里我就直接上代码就是文章开通动图的演示效果。我也将模型封装成了免费的接口给感兴趣的小伙伴调用得塔云 __author__ dengxinyanimport io import time import json import requests import urllib import random import base64 from io import BytesIO from PIL import Image, ImageDraw, ImageFont from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys from selenium.webdriver import ChromeOptions from selenium.webdriver import FirefoxOptions# PIL图片保存为base64编码 def PIL_base64(img, codingutf-8):img_format img.formatif img_format None:img_format JPEGformat_str JPEGif png img_format.lower():format_str PNGif gif img_format.lower():format_str gifif img.mode P:img img.convert(RGB)if img.mode RGBA:format_str PNGimg_format PNGoutput_buffer BytesIO()# img.save(output_buffer, formatformat_str)img.save(output_buffer, quality100, formatformat_str)byte_data output_buffer.getvalue()base64_str data:image/ img_format.lower() ;base64, base64.b64encode(byte_data).decode(coding)return base64_str# 验证码识别接口 def shibie(img):url http://www.detayun.cn/openapi/verify_code_identify/data {# 用户的keykey:nWrzPFUgFuqXQrCJJUME,# 验证码类型verify_idf_id:6,# 样例图片img_base64:PIL_base64(img),img_byte: None,# 中文点选空间语义类型验证码的文本描述这里缺省为空字符串words:}header {Content-Type: application/json}# 发送请求调用接口response requests.post(urlurl, jsondata, headersheader)print(response.text)return response.json()def run(headlessFalse):# 配置参数options FirefoxOptions()if headless:options.add_argument(--headless)else:options.add_argument(--window-size100,100)options.add_argument(--disable-blink-featuresAutomationControlled)options.add_argument(--disable-dev-shm-usage)options.set_preference(general.useragent.override, Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36)driver webdriver.Firefox(executable_pathrF:\验证码项目\小红书旋转验证码\webdriver\geckodriver.exe, optionsoptions)# 伪装浏览器driver.execute_script(Object.defineProperty(navigator, webdriver, {get: () false,});)navigator_webdriver driver.execute_script(return navigator.webdriver)driver.execute_script(Object.defineProperty(navigator, plugins, {get: () [1, 2, 3, 4, 5],});)plugins_length driver.execute_script(return navigator.plugins.length)# 发送请求driver.get(https://business.oceanengine.com/login?appKey51)# 等待【请输入邮箱】元素出现WebDriverWait(driver, 20).until(lambda x: x.find_element_by_xpath(//input[placeholder请输入邮箱]))# 找到【请输入邮箱】元素tag1 driver.find_element_by_xpath(//input[placeholder请输入邮箱])# 点击【请输入邮箱】元素tag1.click()# 输入邮箱tag1.send_keys(123451111qq.com)# 等待【密码】元素出现WebDriverWait(driver, 20).until(lambda x: x.find_element_by_xpath(//input[placeholder密码]))# 找到【密码】元素tag2 driver.find_element_by_xpath(//input[placeholder密码])# 点击【密码】元素tag2.click()# 输入密码tag2.send_keys(13611112222)# 等待【用户协议】元素出现WebDriverWait(driver, 20).until(lambda x: x.find_element_by_xpath(//div[classaccount-center-agreement-check]))# 找到【用户协议】元素tag3 driver.find_element_by_xpath(//div[classaccount-center-agreement-check])# 点击【用户协议】元素tag3.click()# 等待【登录】元素出现WebDriverWait(driver, 20).until(lambda x: x.find_element_by_xpath(//button[classace-ui-btn account-center-action-button active ace-ui-btn-primary]))# 找到【登录】元素tag4 driver.find_element_by_xpath(//button[classace-ui-btn account-center-action-button active ace-ui-btn-primary])# 点击【登录】元素tag4.click()# 可能一次不成功需要多次滑动for i in range(5):# 等待【验证码大图】元素出现WebDriverWait(driver, 20).until(lambda x: x.find_element_by_xpath(//img[idcaptcha-verify-image]))# 找到【验证码大图】元素tag5 driver.find_element_by_xpath(//img[idcaptcha-verify-image])# 获取图像链接img_url tag5.get_attribute(src)print(img_url)header {Host: p9-catpcha.byteimg.com,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0,Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8,Accept-Language: zh-CN,zh;q0.8,zh-TW;q0.7,zh-HK;q0.5,en-US;q0.3,en;q0.2,Accept-Encoding: gzip, deflate, br,Connection: keep-alive,Upgrade-Insecure-Requests: 1,}# 下载图片response requests.get(urlimg_url)img Image.open(BytesIO(response.content))y shibie(img)# 获得滑动像素距离y int(str(y[data][res_str]).replace(滑动,).replace(px,))# 等待【滑块】元素出现WebDriverWait(driver, 20).until(lambda x: x.find_element_by_xpath(//div[classsecsdk-captcha-drag-icon sc-kEYyzF fiQtnm]))# 找到【滑块】元素tag6 driver.find_element_by_xpath(//div[classsecsdk-captcha-drag-icon sc-kEYyzF fiQtnm])# 滑动滑块action ActionChains(driver)action.click_and_hold(tag6).perform()time.sleep(1)# 计算实际滑动距离 像素距离 * 滑动系数move_x y * 0.61# 滑动1直接滑动action.move_by_offset(move_x 20, 5)time.sleep(0.5)action.move_by_offset(-10, -15)time.sleep(0.5)action.move_by_offset(-10, 10)# 滑动2分段滑动# n (random.randint(5, 8))# move_x move_x / n# for i in range(n):# action.move_by_offset(move_x, 5)# time.sleep(0.5)time.sleep(1)# 释放鼠标action.release().perform()time.sleep(2)# 判断是否滑动成功try:# 等待【错误提示】元素出现WebDriverWait(driver, 5).until(lambda x: x.find_element_by_xpath(//div[classsc-htoDjs jwiskW]))# 等待【刷新】元素出现WebDriverWait(driver, 20).until(lambda x: x.find_element_by_xpath(//span[classsecsdk_captcha_refresh--text sc-bwzfXH gBXrMn]))# 找到【刷新】元素tag7 driver.find_element_by_xpath(//span[classsecsdk_captcha_refresh--text sc-bwzfXH gBXrMn])# 点击【刷新】元素tag7.click()time.sleep(1)except:breakif __name__ __main__:run(headlessFalse)6、总结分析 1抖音图片标注工作比较复杂我统计了一下背景图的种类超过800中所以给标注、识别增加了一定难度 2抖音的滑动轨迹检测比较厉害直接滑动到位完全无法通过分段轨迹也很难通过。所以我首先滑过再返回对齐这样就能完美一次通过验证最前面动图就是这样的效果 3抖音页面有很强的反爬措施检测我使用 selenium 始终无法通过验证始终不会条验证码。这一点如何防检测 selenium 也请各位大神指点。所以我代码使用的巨量引擎巨量引擎是字节跳动旗下的品牌网站进行的测试 各位大神也请指出我的不足或者有其他建议都可以给我留言或私信我谢谢指点。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网上做外贸都有哪些网站做网站要多少

主要是安装一些插件,c/c开发常用的插件有如下几个: 插件名称功能C/CC 和 C的编译环境C/C SnippetsC/C重用代码块C/C Advanced LintC/C静态检测Code Runner代码运行Include AutoComplete自动头文件包含Rainbow Brackets彩虹花括号,有助于阅读…

建设网站建设什么挣钱织梦技术网站模版

0.按照步骤,快速进行python的开发准备工作 1. Python解释器的下载 下载地址 https://www.python.org/ 选择对应你的系统的安装包 2.记得勾选这里将python加入你的路径中 3.有如下四个程序表明安装成功 4.点击上图中的第二个程序打开窗口检查解释器能否正常工作 输…

乌海做网站网站开发服务费入什么科目

我们知道C的类应当是先定义,然后使用。但在处理相对复杂的问题、考虑类的组合时,很可能遇到俩个类相互引用的情况,这种情况称为循环依赖。 例如: class A { public:void f(B b);//以B类对象b为形参的成员函数//这里编译错位&…

房建设计网站excel+表格+做的网站

k8s subPathExpr作用 场景: 对于一个deployment或者job拉起的服务,所有pod都是一样的配置,如果都挂载了宿主机的同一个目录,那么就会互相干扰,我们希望挂载相同目录,且在这个目录下,每个pod建立…

答题互动网页收藏

<!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"&…

常见问题解决 --- windows软件运行报错MSVCP140 ATOMIC WAIT.dI

常见问题解决 --- windows软件运行报错MSVCP140 ATOMIC WAIT.dI解决方法: https://aka.ms/vs/17/release/vc_redist.x64.exe 下载安装即可 其他参考: https://www.dll-files.com/msvcp140_atomic_wait.dll.htmlhttps…

芯脉:面向高速接口的SoC架构与完整性设计<3> - 教程

芯脉:面向高速接口的SoC架构与完整性设计<3> - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

spring boot实现MCP服务器,及其cursor测试利用的手段

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

vscode插件开发,打包后不生效问题解决

原因:使用AI生成的vscode 插件代码,打包使用的tsc,没有将三方依赖打包进去,导致安装插件后,插件无法激活,仅注册了快捷键 解决:对比使用 yo生成的ts+pnpm 插件项目,切换为esbuild打包 注意发布的话,使用 @vsco…

streamlit构建dashboard

1.python numpy pandas plotly库三者不同的侧重点 | 内容1 | 内容2 | | 内容3 | 内容4 | | 内容5 | 内容6 |

力扣 338题 比特位计数

动态规划 1.奇数中1的个数,是它上一个数1个个数+1,如2(10),3(11),4(100),5(101) 2.偶数中1的个数,是它除以2后的那个数的1的个数,如2(10),4(100),8(1000),6(110),12(1100) 3.因此,dp[i]…

技术前瞻与个人发展 - 构建终身学习的手艺体系——AI大模型:从0手搓到∞——AI、大模型时代,如何学习?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

企业服务管理是做什么的?-ManageEngine卓豪

什么是企业服务管理软件呢?企业服务管理软件提供了一个统一的系统,可以整合IT、人力资源、设施和薪资等垂直业务部门的服务运营。这使得最终用户能够从单个控制台发现和访问服务,服务提供商可以从单个工作区中受益,…

wordpress免费云储存上海seo及网络推广

题目&#xff1a;桌上有 n 堆力扣币&#xff0c;每堆的数量保存在数组 coins 中。我们每次可以选择任意一堆&#xff0c;拿走其中的一枚或者两枚&#xff0c;求拿完所有力扣币的最少次数。 示例 1&#xff1a; 输入&#xff1a;[4,2,1]输出&#xff1a;4解释&#xff1a;第一…

站内关键词排名软件建设美妆企业网站

数据分区&#xff08;Data Partitioning&#xff09; 数据分区是指将一个大规模的数据集按某种规则划分成多个子集&#xff0c;并将这些子集存储到不同的存储节点上。这种方式不仅能提高查询效率&#xff0c;还能减轻单一节点的负担&#xff0c;使系统更容易扩展。 数据分区的…

学习笔记_在Python中使用微信扫码功能(OpenCV WeChatQRCode)

原文链接:http://www.juzicode.com/opencv-note-wechat-qrcode-detect-decode 微信开发团队在今年年初的时候将其二维码扫描功能贡献给了OpenCV社区,在OpenCV-Python中也可以使用微信扫码功能了。 使用前需要安装ope…

fastApi框架开发一个web端仓库管理系统 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

国标GB28181视频平台EasyCVR如何构建安防监控“中枢神经”?

国标GB28181视频平台EasyCVR如何构建安防监控“中枢神经”?在视频监控互联互通的需求日益迫切的今天,如何打破不同品牌、不同协议设备之间的壁垒?本文深度解析基于国家标准GB/T28181协议的视频平台EasyCVR的核心特点…

做个网站跳转链接怎么做网站建设与发布

类的测试与函数的测试相似 测试函数的案例&#xff1a;https://blog.csdn.net/hanhanwanghaha/article/details/107487037 https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努…

域名估价网站网页设计的首页如何设计官网

为啥又写一篇&#xff1f; 因为之前 用 Anchor 写的&#xff0c;这东西 放到Paragraph 里就不好使了 。 这回 目录里 和 跳转的地方 用的都是 Chunk 添加 目录条目 返回跳转的标记 public String addMenuTag (List<Pair<Chunk, String>> chunks, String[] men…