最近在研究滑块验证码这一块,自然也玩了一把京东,发现之前的轨迹方程并不可用,需要自己慢慢调试,找到合适的参数。这种滑块认证的成功率不可能是100%,所以要写个循环,让认证失败的时候重新调用。

先看效果:

链接:https://v.qq.com/x/page/e0924ylqkir.html

(1) 滑块缺口距离识别

京东的验证码背景图和模板图大概各10张;缺口位置变化的


使用 cv2 库,用模板匹配,就是用来在大图中找小图,也就是说在一副图像中寻找另外一张模板图像的位置

import cv2img = cv2.imread('a1.png',0)
template = cv2.imread('a2.png', 0)
h, w = template.shape[:2]
print("h = " ,h )
print("w = ", w)res = cv2.matchTemplate(img, template, cv2.TM_CCORR_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
print("min_val = ", min_val)
print("max_val = ", max_val)
print("min_loc = ", min_loc)
print("max_loc = ", max_loc) left_top = min_loc  # 左上角
right_bottom = (left_top[0] + w, left_top[1] + h)  # 右下角
cv2.rectangle(img, left_top, right_bottom, 255, 2)  # 画出矩形位置  cv2. imwrite('aa1.png', img)

匹配结果:

识别率大概 80% 左右,但好在代码简单,只需4行可解决缺口位置识别;这里是真实的缺口距离,放到网页中要缩放 278/360

(2) 处理滑块验证的轨迹

这里用简单的方式处理滑块的拖动速度,代码量少;

示例:

import asyncio
import random
import cv2
from pyppeteer import launch
from urllib import request# 滑块的缺口距离识别
async def get_distance():img = cv2.imread('image.png', 0)template = cv2.imread('template.png', 0)res = cv2.matchTemplate(img, template, cv2.TM_CCORR_NORMED)value = cv2.minMaxLoc(res)[2][0]distance = value * 278/360return distanceasync def main():browser = await launch({'headless': False,'args': ['--no-sandbox', '--window-size=1366,768'],})page = await browser.newPage()await page.setViewport({'width': 1366, 'height': 768})await page.goto('https://passport.jd.com/login.aspx')await page.waitFor(1000)await page.click('div.login-tab-r')await page.waitFor(1000)# 模拟人工输入用户名、密码await page.type('#loginname', '123456789@163.com',{'delay': random.randint(60, 121)})await page.type('#nloginpwd', '1234567890',{'delay': random.randint(100, 151)})await page.waitFor(2000)await page.click('div.login-btn')await page.waitFor(3000)# 模拟人工拖动滑块、失败则重试while True:if await page.J('#ttbar-login'):print('登录成功!')await page.waitFor(6000)breakelse:image_src = await page.Jeval('.JDJRV-bigimg >img', 'el => el.src')request.urlretrieve(image_src, 'image.png')template_src = await page.Jeval('.JDJRV-smallimg >img', 'el => el.src')request.urlretrieve(template_src, 'template.png')await page.waitFor(3000)el = await page.J('div.JDJRV-slide-btn')box = await el.boundingBox()await page.hover('div.JDJRV-slide-btn')distance = await get_distance()await page.mouse.down()await page.mouse.move(box['x'] + distance + random.uniform(30, 33), box['y'], {'steps': 30})await page.waitFor(random.randint(300, 700))await page.mouse.move(box['x'] + distance + 29, box['y'], {'steps': 30})await page.mouse.up()await page.waitFor(3000)asyncio.get_event_loop().run_until_complete(main())

京东模拟登录,自动完成滑块验证相关推荐

  1. 微信公众平台模拟登录自动群发图文消息工具包

    无需微信认证即可实现微信公众号自动群发图文消息. 使用 npm i wechat-mp-hack --save const Wechat = require('wechat-mp-hack'); co ...

  2. python实战-京东签到及登入滑块验证

    程序功能:程序模仿登入京东主页,自动输入帐号和密码,完成滑块验证,最后领取每日签京豆 关键难点:80%的难点在于滑块验证 import time import cv2 import random im ...

  3. Python实现京东自动登录(自动完成滑块验证)

    前提要配置好webdriver,不会的可以百度一下,我用的是Chrome的. Python自动登录京东,这里需要填写自己的账号和密码 id = "*********" # 用户账号 ...

  4. Python+Selenium实现12306模拟登录

    最近在学python爬虫,学习到了selenium的使用,看网上有很多使用selenium模拟登录12306网站的文章,于是自己也尝试了一下.期间遇到了一些问题,也参考了很多大佬的文章最终得到了解决, ...

  5. 【项目记录/vue移动端】仿京东到家登录页

    3-1 登陆页面布局开发 视口(Viewport) 目的:让手机的小屏幕尽可能完整显示整个网页,即实现理想视口 1)布局视口layout viewport iOS, Android 都将布局视口分辨率 ...

  6. JS逆向之美团网模拟登录!这教程杠杠滴~

    切忌用于一切非法途径,否则后果自行承担! 地址:https://passport.meituan.com/account/unitivelogin 一.页面分析 打开网页输入账号:138xxxx888 ...

  7. JS逆向之美团网模拟登录h5Fingerprint、password(RSA)加密参数解析

    文章目录 前言 一.页面分析 二.加密解析 1.password解析 加密定位 参数解密 2.h5Fingerprint解析 加密定位 参数解密 3.python调用模拟请求 总结 前言 最近和几位大 ...

  8. 12-基于selenium实现12306模拟登录,及京东登录滑动缺口验证模拟登录

    流程分析: 使用selenium打开登录页面 对当前selenium打开的这张页面进行截图 对当前图片的局部区域(验证码图片区域)进行截图 这样验证码图片和模拟登录进行所显示的图片一一对应(如果我们对 ...

  9. 【爬虫剑谱】二卷4章 实战篇-模拟登录铁路12306网站(滑块验证)

    Python\网络爬虫\Selenium 一.源码 二.实战总结 问题一:不愿意代码模块化(常见于我这种菜狗+懒狗) 三.参考文献 一.源码 from selenium import webdrive ...

最新文章

  1. Qt 小技巧之“To-Do 事项”
  2. js 获取鼠标在画布的位置_使用faceapi.js轻松将面部识别添加到你的应用程序
  3. c#获取autocad安装位置_AutoCAD自动切换输入法插件
  4. java的回文是什么_Java实现回文判断
  5. Java学习 第三章 数组(二)多维数组
  6. HBase 文件合并
  7. 操作元素之表单属性设置
  8. python数学实验与建模_Python数学
  9. 容器算法迭代器初识----容器嵌套容器
  10. 基于android p的miui,小米8青春版终于迎来基于AndroidP的MIUI10系统,米粉欢呼
  11. Unlock Music音乐解锁源码
  12. Python3网络爬虫(三):漫画下载,动态加载、反爬虫这都不叫事!
  13. 怀念张孝祥,张老师一路走好
  14. IntelliJ IDEA 常用快捷键 ------ Windows / Mac 对比
  15. 蒙提霍尔问题及其推广
  16. A19.从零开始前后端react+flask - 删除前后端数据
  17. 编译原理:算符优先分析实验
  18. VMware安装Ubuntu Kylin系统
  19. r统计建模与r软件期末考试题_《统计建模与R软件》电子版(薛毅著)
  20. 学计算机的心理300字,【必备】心理作文300字7篇

热门文章

  1. Linux Ubuntu20.04安装RTL8156网卡驱动开启巨型帧
  2. Python函数认识(二)
  3. 小学计算机教室外墙文化建设,4款小学教室外墙布置图片 小学教室走廊班牌班级文化墙设计图片...
  4. 通信领域相关的英语缩略语
  5. 如何将大数组转成BIN文件
  6. 某奏云资源网址打不开的N种处理方法(亲测好用)
  7. window server2016服务器激活
  8. oracle物料单位错误,Oracle EBS 销售时物料保留出错相关症状和处理方法
  9. 郊区春游(状压dp)
  10. 2020年数学建模国赛C题完整代码下载链接处