• 售前

  • 售后

热门帖子
入门百科

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

[复制链接]
梨波儿 显示全部楼层 发表于 2021-10-26 14:08:24 |阅读模式 打印 上一主题 下一主题
Pyppeteer简介

先容Pyppeteer之前先说一下Puppeteer,Puppeteer是谷歌出品的一款基于Node.js开发的一款工具,主要是用来操纵Chrome浏览器的 API,通过Javascript代码来操纵Chrome浏览器,完成数据爬取、Web步伐主动测试等任务。
在上篇文章给大家详细先容了python爬虫 Pyppeteer利用方法剖析 ,感兴趣的朋侪可以点击查看。
今天给大家先容python pyppeteer 破解京东滑块功能,详细代码如下所示:
  1. import asyncio
  2. import random
  3. import cv2
  4. from pyppeteer import launch
  5. from urllib import request
  6. # 滑块的缺口距离识别
  7. async def get_distance():
  8. img = cv2.imread('image.png', 0)
  9. template = cv2.imread('template.png', 0)
  10. res = cv2.matchTemplate(img, template, cv2.TM_CCORR_NORMED)
  11. value = cv2.minMaxLoc(res)[2][0]
  12. distance = value * 278/360
  13. return distance
  14. async def main():
  15. browser = await launch({
  16.   'headless': False,# 需要设置一个路径
  17.   'userDataDir': r'E:\mj',
  18.   'args': ['--no-sandbox', '--window-size=1366,768'],
  19. })
  20. page = await browser.newPage()
  21. await page.setViewport({'width': 1366, 'height': 768})
  22. await page.goto('https://passport.jd.com/login.aspx')
  23. await page.waitFor(1000)
  24. await page.click('div.login-tab-r')
  25. await page.waitFor(1000)
  26. # TODO 模拟人工输入用户名、密码 输入自己的账号密码
  27. await page.type('#loginname', 'yazhishaw',
  28.      {'delay': random.randint(60, 121)})
  29. await page.type('#nloginpwd', '123456',
  30.      {'delay': random.randint(100, 151)})
  31. await page.waitFor(2000)
  32. await page.click('div.login-btn')
  33. await page.waitFor(3000)
  34. # 模拟人工拖动滑块、失败则重试
  35. while True:
  36.   if await page.J('#ttbar-login'):
  37.    print('登录成功!')
  38.    await page.waitFor(6000)
  39.    break
  40.   else:
  41.    image_src = await page.Jeval('.JDJRV-bigimg >img', 'el => el.src')
  42.    request.urlretrieve(image_src, 'image.png')
  43.    template_src = await page.Jeval('.JDJRV-smallimg >img', 'el => el.src')
  44.    request.urlretrieve(template_src, 'template.png')
  45.    await page.waitFor(3000)
  46.    el = await page.J('div.JDJRV-slide-btn')
  47.    box = await el.boundingBox()
  48.    await page.hover('div.JDJRV-slide-btn')
  49.    distance = await get_distance()
  50.    await page.mouse.down()
  51.    await page.mouse.move(box['x'] + distance + random.uniform(30, 33), box['y'], {'steps': 20})
  52.    await page.waitFor(random.randint(300, 700))
  53.    await page.mouse.move(box['x'] + distance + 29, box['y'], {'steps': 20})
  54.    await page.mouse.up()
  55.    await page.waitFor(3000)
  56. asyncio.get_event_loop().run_until_complete(main())
复制代码
到此这篇关于python pyppeteer 破解京东滑块功能的代码的文章就先容到这了,更多相干python pyppeteer 京东滑块内容请搜索脚本之家从前的文章或继续浏览下面的相干文章希望大家以后多多支持脚本之家!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作