python pyppeteer 破解京东滑块功能的代码

 更新时间:2021年03月29日 14:46:06   作者:她从小就是校花  
这篇文章主要介绍了python pyppeteer 破解京东滑块功能的代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Pyppeteer简介

介绍Pyppeteer之前先说一下Puppeteer,Puppeteer是谷歌出品的一款基于Node.js开发的一款工具,主要是用来操纵Chrome浏览器的 API,通过Javascript代码来操纵Chrome浏览器,完成数据爬取、Web程序自动测试等任务。

在上篇文章给大家详细介绍了python爬虫 Pyppeteer使用方法解析 ,感兴趣的朋友可以点击查看。

今天给大家介绍python pyppeteer 破解京东滑块功能,具体代码如下所示:

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/360
 return distance
 
async def main():
 browser = await launch({
  'headless': False,# 需要设置一个路径
  'userDataDir': r'E:\mj',
  '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)
 
 # TODO 模拟人工输入用户名、密码 输入自己的账号密码
 await page.type('#loginname', 'yazhishaw',
     {'delay': random.randint(60, 121)})
 await page.type('#nloginpwd', '123456',
     {'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)
   break
  else:
   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': 20})
   await page.waitFor(random.randint(300, 700))
   await page.mouse.move(box['x'] + distance + 29, box['y'], {'steps': 20})
   await page.mouse.up()
   await page.waitFor(3000)
 
asyncio.get_event_loop().run_until_complete(main())

到此这篇关于python pyppeteer 破解京东滑块功能的代码的文章就介绍到这了,更多相关python pyppeteer 京东滑块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python如何在字典中插入或增加一个字典

    python如何在字典中插入或增加一个字典

    这篇文章主要介绍了python如何在字典中插入或增加一个字典问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 使用Python的requests库进行网页数据抓取的详细教程

    使用Python的requests库进行网页数据抓取的详细教程

    网络爬虫是一种自动化程序,用于从互联网上抓取数据,无论是用于数据分析、市场研究、学术研究,还是搜索引擎的网页索引,爬虫技术都在现代互联网应用中发挥着重要作用,本文将通过 requests 库 来讲解如何进行基本的网页数据抓取,需要的朋友可以参考下
    2025-03-03
  • pandas全表查询定位某个值所在行列的方法

    pandas全表查询定位某个值所在行列的方法

    下面小编就为大家分享一篇pandas全表查询定位某个值所在行列的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python tkinter实现春节烟花效果demo

    Python tkinter实现春节烟花效果demo

    这篇文章主要为大家介绍了Python实现春节烟花效果demo,本文为大家提供了两种实现方式代码,详细的实现一场浪漫的烟花秀,有需要的朋友可以借鉴参考下
    2024-01-01
  • Pytorch获取无梯度TorchTensor中的值

    Pytorch获取无梯度TorchTensor中的值

    这篇文章主要介绍了Pytorch获取无梯度TorchTensor中的值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python下的opencv画矩形和文字注释的实现方法

    python下的opencv画矩形和文字注释的实现方法

    今天小编就为大家分享一篇python下的opencv画矩形和文字注释的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python利用pythonping处理ping的示例详解

    Python利用pythonping处理ping的示例详解

    ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序 。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令。本文将利用pythonpin实现gping的处理,需要的可以参考一下
    2022-11-11
  • Python制作爬虫抓取美女图

    Python制作爬虫抓取美女图

    本文主要介绍了Python制作爬虫抓取美女图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2016-01-01
  • pygame实现弹球游戏

    pygame实现弹球游戏

    这篇文章主要为大家详细介绍了pygame实现弹球游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • torch.optim优化算法理解之optim.Adam()解读

    torch.optim优化算法理解之optim.Adam()解读

    这篇文章主要介绍了torch.optim优化算法理解之optim.Adam()解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论