python2.7+selenium2实现淘宝滑块自动认证功能


Posted in Python onFebruary 24, 2018

本文为大家分享了python2.7+selenium2实现淘宝滑块自动认证的具体代码,供大家参考,具体内容如下

1.编译环境

操作系统:win7;语言:python2.7+selenium2;ide:pycharm;浏览器:IE10,chrome

2.1意外开始

今天登录淘宝时候发现吧密码搞忘了,选择找回密码时淘宝居然加了滑块认证。

python2.7+selenium2实现淘宝滑块自动认证功能

恰巧自己也在学习selenium,就想试一试能不能实现自动拖动滑块。

2.2 度娘查找

由于自己没多少思路,第一选择就是问度娘,终于找到一篇文章,该文章使用C#实现了该功能,并提到需要定位滑块元素在网页和桌面的坐标,而这个功能直接可以用selenium中的查找元素接口搞定那么剩下最后一个问题就是如何得知滑块的位移量。(原谅我忘记该文章的名字了)

2.3 开始试验

大家在手动操作滑块的时候会发现如果滑块位移不够,它要自动还原就不能触发认证成功环节,所以我用一个笨方法先手动操作看看。打开浏览器按F12,得到代码如下:

python2.7+selenium2实现淘宝滑块自动认证功能

然后拖动滑块位移,发现滑块元素的style一直在变化如图:

python2.7+selenium2实现淘宝滑块自动认证功能

现在大概清楚右位移量为300px,OK开始写代码,经过很多次试验确定滑块移动后有三种情况:

1无响应:请按住滑块,拖到到最右边;
2失败:哎呀,加载失败了,请点击刷新页面
3成功:请点击图中xx字,请在下方输入xx字

解决思路:无响应时,需要重复拖动滑块,直到成功为止;失败了,需要自动点击刷新按钮,使滑块回到无响应状态;成功了,暂时是直接退出浏览器,验证码识别还在研究中,以后补齐。

2.4 完整代码

PS:粘贴上去的代码,我不知道怎么对齐,如果大家直接复制运行,可能会报错,请自动修改。

# encoding=utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
#使用谷歌浏览器,方便查看效果,如果追求速度可以用phantomJS
driver=webdriver.Chrome()
#调整最大窗口,否则某些元素无法显示
driver.maximize_window()
#使用淘宝找回密码界面做测试
driver.get('https://passport.taobao.com/ac/password_find.htm?spm=a2107.1.0.0.phBxhD&from_site=0')
time.sleep(5)#等待滑动模块和其他JS文件加载完毕!
while True:
  try:
  #定位滑块元素
    source=driver.find_element_by_xpath("//*[@id='nc_1_n1z']") 
  #定义鼠标拖放动作
            ActionChains(driver).drag_and_drop_by_offset(source,400,0).perform()
    #等待JS认证运行,如果不等待容易报错
    time.sleep(2)
    #查看是否认证成功,获取text值
  text=driver.find_element_by_xpath("//div[@id='nc_1__scale_text']/span")
    #目前只碰到3种情况:成功(请在在下方输入验证码,请点击图);无响应(请按住滑块拖动);失败(哎呀,失败了,请刷新)
    if text.text.startswith(u'请在下方'):
      print('成功滑动')
      break
    if text.text.startswith(u'请点击'):
      print('成功滑动')
      break
    if text.text.startswith(u'请按住'):
      continue
  except Exception as e:
  #这里定位失败后的刷新按钮,重新加载滑块模块
  driver.find_element_by_xpath("//div[@id='havana_nco']/div/span/a").click()
    print(e) 
#退出浏览器,如果浏览器打开多个窗口,可以使用driver.close()关闭当前窗口而不是关闭浏览器
driver.quit()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python控制台显示时钟的示例
Feb 24 Python
Python3基础之条件与循环控制实例解析
Aug 13 Python
python集合类型用法分析
Apr 08 Python
Python使用MONGODB入门实例
May 11 Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
Python实现定时自动关闭的tkinter窗口方法
Feb 16 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
python numpy 矩阵堆叠实例
Jan 17 Python
Python sqlite3查询操作过程解析
Feb 20 Python
Python Flask请求扩展与中间件相关知识总结
Jun 11 Python
Python 中Pickle库的使用详解
Feb 24 #Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
Feb 24 #Python
python3+mysql查询数据并通过邮件群发excel附件
Feb 24 #Python
Python3实现带附件的定时发送邮件功能
Dec 22 #Python
python正则实现提取电话功能
Feb 24 #Python
python3实现公众号每日定时发送日报和图片
Feb 24 #Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 #Python
You might like
PHP显示今天、今月、上月、今年的起点/终点时间戳的代码
2011/05/25 PHP
php中引用符号(&)的使用详细介绍
2016/12/06 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
javascript学习之闭包分析
2010/12/02 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
js日期相关函数总结分享
2013/10/15 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
学习vue.js计算属性
2016/12/03 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
利用python批量检查网站的可用性
2016/09/09 Python
Python如何快速实现分布式任务
2017/07/06 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
Python基于mediainfo批量重命名图片文件
2020/12/29 Python
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
音乐表演专业毕业生求职信
2013/10/14 职场文书
酒店应聘自荐信
2013/11/09 职场文书
追悼会子女答谢词
2014/01/28 职场文书
销售员岗位职责
2014/06/09 职场文书
大学生个人学年总结
2015/02/15 职场文书
使用JS实现简易计算器
2021/06/14 Javascript
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技