selenium滑块破解

ActionChains控件

actionchains是selenium里面专门处理鼠标相关的操作,通过前一篇关于爬虫的xpath定位我们可以获取滑块,并判断是否有滑块。

get_trace函数编写

利用初中加速度公式,move = v0 * t + 1 / 2 * a * t * t 将位移,一段一段存入数组trace中

def get_track(distance, t):  # distance为传入的总距离,a为加速度track = []current = 0mid = distance * t / (t + 1)v = 0while current < distance:if current < mid:a = 3else:a = -1v0 = vv = v0 + a * tmove = v0 * t + 1 / 2 * a * t * tcurrent += movetrack.append(round(move))return track

控制滑块 xoffset 参数设置(放慢速度)

由于经常出现退登后过于频繁,滑块无法拖动,或者拖动失效,我们可以适当放慢速度去滑动,需要设置move_by_offset的参数值。

 for x in tracks:ActionChains(self.browser).move_by_offset(xoffset=x, yoffset=0).perform()

@retry()设置,异常重复尝试

安装:pip install retrying
@retry()装饰器中,比较重要的几个参数如下:

stop_max_attempt_number:在停止之前尝试的最大次数,最后一次如果还是有异常则会抛出异常,停止运行,默认为5次

wait_random_min:在两次调用方法停留时长,停留最短时间,默认为0,单位毫秒

wait_random_max:在两次调用方法停留时长,停留最长时间,默认为1000毫秒

retry_on_result:指定一个函数,如果指定的函数返回True,则重试,否则抛出异常退出

retry_on_exception: 指定一个函数,如果此函数返回指定异常,则会重试,如果不是指定的异常则会退出

由于拖动可能没拖动成功,引入retrying包,可以设置重复尝试次数,不易过多,免得在一段时间内手动也无法滑动

@retry(stop_max_attempt_number=3)

完整代码

from retrying import retry
...其他
def get_track(distance, t):  # distance为传入的总距离,a为加速度track = []current = 0mid = distance * t / (t + 1)v = 0while current < distance:if current < mid:a = 3else:a = -1v0 = vv = v0 + a * tmove = v0 * t + 1 / 2 * a * t * tcurrent += movetrack.append(round(move))return trackdef move_to_gap(self, slider, tracks):  # slider是要移动的滑块,tracks是要传入的移动轨迹ActionChains(self.browser).click_and_hold(slider).perform()for x in tracks:ActionChains(self.browser).move_by_offset(xoffset=x, yoffset=0).perform()ActionChains(self.browser).release().perform()@retry(stop_max_attempt_number=3)def login(self, username, password):...省略time1 = [3, 4, 5, 6, 2.1, 2.7, 2.8, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7,3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5.0, 5.1, 5.2]t1 = random.choice(time1)slider = self.browser.find_element_by_xpath("//span[contains(@class, 'btn_slide')]")    if slider.is_displayed():self.move_to_gap(slider, get_track(360, t1))

python- selenium 淘宝爬虫之滑块验证(滑动速度放慢版)相关推荐

  1. selenium淘宝爬虫

    selenium淘宝爬虫 使用selenium做淘宝商品爬虫 1.准备工作 2.页面分析 3.代码实现 3-1.模拟登陆 3-2.商品列表页 3-3.获取商品信息 3-4.数据库设计 3-5.爬虫执行 ...

  2. 最新爬虫(2019.07)淘宝页面登陆滑块验证 selenium + chromedriver 爬取淘宝信息

    说在前面的话 你或许找了很久的方案来到了这里,当你看到本文章时,我默认你已经发现,淘宝的反扒措施是  webdriver和chromedriver的识别.所以我不会贴过多图片,不讲分析思路,直接给你鱼 ...

  3. selenium 淘宝爬虫(需要扫码登录一下)

    from selenium import webdriver import time import redef gethtml(url):'''定义函数获取html源代码''''''由于淘宝是动态网页 ...

  4. Python Selenium淘宝自动登陆最新版,无意间发现淘宝登陆漏洞?

    一.前言 之前写过一篇爬取淘宝商品信息的博客----<<传送门,当时还是新手,急于完成爬取目标,干脆手动登录淘宝使浏览器保存我的信息,然后使用本地用户配置控制浏览器,投机取巧地解决了登录问 ...

  5. selenium淘宝登录和滑块破解最新可用

    本文主要讲解使用selenium模拟登录淘宝爬取数据并解决滑块的一个案例,这里提供两个思路,一个是怎么登录淘宝,一个是怎么解决滑块. 1.登录淘宝: 使用selenium打开淘宝指定页面,会先跳转到淘 ...

  6. Python 实现淘宝秒杀

    新手学习Python,之前在网上看见一位朋友写的40行Python代码搞定京东秒杀,想在淘宝上帮女朋友抢玩偶,所以就照猫画虎的写了下淘宝的秒杀脚本,经自己实验可行.直接上代码: #-*- coding ...

  7. selenium实现淘宝爬虫

    准备工作 安装好selenium和浏览器驱动chromedriver. 淘宝爬虫过程分析加代码 1.页面请求分析 首先请求淘宝页面,然后输入要爬取的数据的关键词,没有登陆,此时会弹出登陆的窗口,采取模 ...

  8. python模拟淘宝登陆_【Python】selenium模拟淘宝登录

    # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By f ...

  9. python爬虫淘宝视频_识别假货有绝招,就用python爬淘宝评论(附视频教程)

    之前我水平有限,对于淘宝评论这种动态网页,由于数据在网页源码中是找不到的,所以无法抓取数据,只能使用selenium模仿人操控浏览器来抓数据, 优点是可见容易且不宜被淘宝公司封锁:缺点是速度太慢. 经 ...

最新文章

  1. 领歌leangoo敏捷工具个人工作台功能
  2. 毕业后的五年拉开大家差距的原因在哪里
  3. ListControl 换行行高与字体
  4. hexo博客配置阿里云oss对象存储
  5. Git错误non-fast-forward的解决方法
  6. QHD DDIC is implemented via HANA
  7. yum安装Docker失败No package docker available
  8. c 结构体中的变长数组
  9. 基于角色的权限控制模型RBAC
  10. 分布式的Key-Value存储系统Cassandra
  11. react 使用rem布局_react如何使用rem适配
  12. 从ARM裸机看驱动之按键中断方式控制LED(二)
  13. (005)CSS选择器的具体性与层叠
  14. 支持https协议么_你真的了解网址么?
  15. Log4cpp 配置文件配置Syslog
  16. 第四方支付跟第三方支付的区别,支付源码有什么用
  17. 体验汉印T260标签打印机,让分类管理更简单
  18. Java多线程系列--【JUC集合04】- ConcurrentHashMap
  19. CTF实验吧-登陆一下好吗??【false SQL注入】
  20. 周志华机器学习笔记(一)

热门文章

  1. 零基础入门产品经理(视频课程),有需要的请加微信或qq
  2. 论文总结:Freeway:自适应地隔离大象流和老鼠流在不同的路径上传输
  3. 设计模式第三天 工厂模式
  4. 《Android 应用案例开发大全(第3版)》——第2.6节绘制相关类
  5. 北大C++课后题系列:022:魔兽世界之二:装备
  6. 限流-RateLimiter
  7. 什么事java中hql语句,hibernate中hql语句详解
  8. IDEA中将maven项目导出打包成war包
  9. 【Photoshop API 】六、 实际案例:在.atn文件中播放所有动作
  10. 浅析即时通讯音视频开发多人实时音视频聊天架构