背景
验证码识别一直都是一个重要的话题,近日有一些公司询问  定制本地离线DLL验证码识别。另外给大家普及一下通用验证码识别和滑块缺口检测的解决方案【滑块】返回坐标:点击进入,如果调用量比较大,建议购买本地验证码识别DLL

# coding:utf-8import json
import timeimport requests
from PIL import Image
from selenium import webdriver
from selenium.webdriver import ActionChains# 重写联众打码的api
def catch():'''main() 参数介绍api_username    (API账号)             --必须提供api_password    (API账号密码)         --必须提供file_name       (需要识别的图片路径)   --必须提供api_post_url    (API接口地址)         --必须提供yzm_min         (识别结果最小长度值)        --可空提供yzm_max         (识别结果最大长度值)        --可空提供yzm_type        (识别类型)          --可空提供tools_token     (工具或软件token)     --可空提供'''api_username = '',api_password = ''file_name = 'D:/shuati/bilibili_login/yan_zheng_ma.png'api_post_url = "http://v1-http-api.jsdama.com/api.php?mod=php&act=upload"yzm_min = ''yzm_max = ''yzm_type = '1310'tools_token = ''# proxies = {'http': 'http://127.0.0.1:8888'}headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3','Accept-Encoding': 'gzip, deflate','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',# 'Content-Type': 'multipart/form-data; boundary=---------------------------227973204131376','Connection': 'keep-alive','Host': 'v1-http-api.jsdama.com','Upgrade-Insecure-Requests': '1'}files = {'upload': (file_name, open(file_name, 'rb'), 'image/png')}data = {'user_name': api_username,'user_pw': api_password,'yzm_minlen': yzm_min,'yzm_maxlen': yzm_max,'yzmtype_mark': yzm_type,'zztool_token': tools_token}s = requests.session()# r = s.post(api_post_url, headers=headers, data=data, files=files, verify=False, proxies=proxies)r = s.post(api_post_url, headers=headers, data=data, files=files, verify=False)print(r.text)return r.textclass Login(object):def __init__(self):url = 'https://passport.bilibili.com/login'self.driver = webdriver.Chrome()self.driver.get(url)self.driver.maximize_window()def send(self):self.driver.implicitly_wait(6)username_input = self.driver.find_element_by_id('login-username')username_input.clear()username_input.send_keys('你的账号')password_input = self.driver.find_element_by_id('login-passwd')password_input.clear()password_input.send_keys('你的密码')# 需要注意的东西是有多个class_name的话,只取其中一个就可以了# 如此处 class="btn btn-login" 只取出 btn-login 即可login_button = self.driver.find_element_by_class_name('btn-login')login_button.click()def scream_catch(self):self.driver.get_screenshot_as_file('whole_scream.png')element = self.driver.find_element_by_class_name('geetest_absolute')print(element.location)print(element.size)# 因为滑块每次出现的位置都是一样的,所以定死的取出图片的位置即可# 用Fireworks获取图片所在的坐标(x,y)left = 1108top = 321right = left + 314bottom = top + 195im = Image.open('whole_scream.png')# 在全屏的截图中取出验证码的所在位置im = im.crop((left, top, right, bottom))# 估计是因为屏幕的原因,从全屏截取出来的验证码的尺寸是等比例放大了的# 但是必须用和网页中验证码的尺寸相等的图片来提交给打码平台# 重塑图片的尺寸大小im = im.resize((253, 155), Image.ANTIALIAS)im.save('yan_zheng_ma.png')# 调用打码平台的apijson_data = catch()json_data = json.loads(json_data)string = json_data['data']['val']if '|' in string:a, b = string.split('|')a, c = a.split(',')b, d = b.split(',')x_offset = int(a) - int(b)offset = int(c) - int(d)# 返回值的第一个数和第三个数之差的绝对值就是要滑动的距离x_offset = x_offset if x_offset > 0 else -x_offsetoffset = offset if offset > 0 else -offsetprint(offset)# 经过多次调试发现,如果两个坐标的y值之差大于7就会左偏 |c - d|的偏差if offset >= 7:x_offset += offsetprint(x_offset)return x_offsetelse:# 经过多次调试发现,打码平台有时候会返回没有'|'的字符串,而此时里面的第一个数就是距离x_offset = string.split(',')[0]return int(x_offset)def slip_button(self):x = self.scream_catch()# 滑动的动作链handler = self.driver.find_element_by_class_name('geetest_slider_button')ActionChains(self.driver).click_and_hold(handler).perform()time.sleep(1)ActionChains(self.driver).move_by_offset(xoffset=x, yoffset=0).perform()# 此处一定要睡,如果不睡的话,可能还没拉到那个位置就直接进行下一步的动作了time.sleep(1.5)ActionChains(self.driver).click().perform()def run(self):self.send()# 睡一下,等验证码完全加载出来,不然可能截出来是验证码没加载好的截图time.sleep(2)self.slip_button()if __name__ == '__main__':login = Login()login.run()

滑块识别,滑块验证码识别平台,验证码识别相关推荐

  1. 点选识别DLL/滑块识别DLL/通用验证码识别DLL/图标点选/本地识别DLL

    背景 验证码识别一直都是一个重要的话题,近日有一些公司询问 本地DLL验证码识别定制的事,可以联系QQ:[167231471]定制本地离线DLL验证码识别.另外给大家普及一下通用验证码识别和滑块缺口检 ...

  2. 本地DLL通用验证码识别/滑块识别/文字点选/图标点选/推理/OCR文字识别

    背景 验证码识别一直都是一个重要的话题,近日有一些公司询问 本地DLL验证码识别定制的事,可以联系QQ:[167231471]定制本地离线DLL验证码识别.另外给大家普及一下通用验证码识别和滑块缺口检 ...

  3. python识别滑块验证码_干掉验证码!使用Python图像识别移动滑块验证码

    文章来源:python干货铺子 ❞ 前言 验证码往往是爬虫路上的一只拦路虎,而其花样也是层出不穷:图片验证.滑块验证.交互式验证.行为验证等.随着OCR技术的成熟,图片验证已经渐渐淡出主流,而「滑块验 ...

  4. 国税总局增值税发票查验平台验证码识别深度学习实战

    国家税务总局全国增值税发票查验平台验证码 查验验证码图片如下面所示: 测试地址:http://47.99.174.98:8808/ 1.验证码识别Python版 import base64 impor ...

  5. 国税总局发票查验平台验证码识别方案,识别率达98%

    全国增值税发票查验平台验证码 2020.04.30 已经同步更新,测试网址不变 手动置顶:验证码识别测试页面(可视化操作) 识别率97.5%,图片接口支持手动测试,以图片形式返回结果:文本接口需要联系 ...

  6. 利用第三方平台验证码进行识别

    前言:这边是利用第三方平台"超级鹰"进行图片识别,超级鹰平台是收费平台,个人觉得还是很便宜的比较良心的,首先需要先去超级鹰注册账号,并充值金额(建议先充值一块钱试试感觉先) 识别代 ...

  7. 图片识别 就用uu云验证码识别平台

    图片识别 就用uu云验证码识别平台 我相信很多朋友和我一样都有这样的困扰,经常要将图片或者扫描文件中的文字提取出来,保存在我们的文档中去.但是用了很多软件,效果都不是很理想,还是需要自己人工去核对,大 ...

  8. python爬虫之古诗文网中验证码的识别并登录----第三方平台

    目标网站:古诗文网 目标网址:http://so.gushiwen.org/user/collect.aspx 任务要求: (1)通过selenium的方式模拟该网站的登录,并成功输入用户名和密码: ...

  9. 利用PaddleOCR识别增值税发票平台验证码(开箱即用)

    前言:全国增值税发票查验平台验证码没什么好说的,根据指定的颜色识别验证码中的文字,图片如下 下面直接讲解利用paddleocr识别的思路,为什么使用paddleocr,因为paddle中集成了较好的o ...

  10. 使用Python+Selenium+图灵验证码识别平台,识别B站/bilibili的中文验证码,并自动登陆B站

    一直想用python写一个程序帮我自动登陆B站,完成一些点击任务,懂的都懂 =v= 最近终于腾出时间来搞了,其实最难的部分就是中文验证码的识别.这个借助API接口也能轻松搞定.下面分享一下全部源码(前 ...

最新文章

  1. python 函数变量_Python函数中的变量和函数返回值
  2. 趋势科技、亚马逊AWS作后盾,天云趋势首款SaaS安全服务强势来袭
  3. nodejs安装node-rsa遇到的问题及解决
  4. Nutch爬虫解决页面相对路径问题
  5. 针对SSL/TLS的拒绝服务攻击以及使用ettercap进行DNS欺骗
  6. c语言贪吃蛇运行代码,刚学C语言,想写一个贪吃蛇的代码
  7. 一套比较完整的前端技术选型,需要规整哪些东西,你知道不?
  8. wamp环境搭建到mysql就不成功_Wamp环境搭建常见错误问题解决
  9. Spring Cloud入门教程(二):客户端负载均衡(Ribbon)
  10. 导出jvm的内存快照进行分析
  11. 2017CCPC秦皇岛 L题One-Dimensional MazeZOJ3992【模拟】
  12. 正则表达式校验特殊格式
  13. 创建phpinfo.php
  14. 计算机基础毕业论文排版教程,计算机应用基础Word高级应用—排版毕业论文PPT课件.ppt...
  15. Python 批量下载BiliBili视频 打包成软件
  16. macos masm5 Warning level (0-2) expected after W option
  17. 控制台报 [WDS] Disconnected!不影响代码运行。
  18. 单利 java_JAVA中的单利
  19. JAVA:List复制
  20. PhpStorm2019 代码自动换行

热门文章

  1. mysql 省市县三级联动查询_PHP+AJAX+MYSQL 仿凡客诚品省市县三级联动下拉菜单查询效果...
  2. 计算机无法查看隐藏文件夹,怎么查看隐藏文件?2种方法教你查看电脑中的隐藏文件...
  3. 基于MSP430G2231实现的频率计
  4. linux中如何解压.tgz
  5. 模拟模拟交易系统(二)——系统设计
  6. 中国自动化大会CAC2022投稿经验
  7. Java使用System.currentTimeMillis()方法计算程序运行时间
  8. MySQL之LOAD DATA
  9. C++ 类自杀 delete this
  10. flutterapp部分手机无法打开_无法运行啊 · Issue #4 · shichunlei/flutter_app · GitHub