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中的序列化与反序列化的使用
Jun 30 Python
Python中的模块导入和读取键盘输入的方法
Oct 16 Python
python append、extend与insert的区别
Oct 13 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
python中实现控制小数点位数的方法
Jan 24 Python
Python代码实现删除一个list里面重复元素的方法
Apr 02 Python
Django实现文件上传下载功能
Oct 06 Python
Python 私有化操作实例分析
Nov 21 Python
tensorflow 自定义损失函数示例代码
Feb 05 Python
Python开发入门——迭代的基本使用
Sep 03 Python
虚拟环境及venv和virtualenv的区别说明
Feb 05 Python
如何在Python中妥善使用进度条详解
Apr 05 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中的字符串函数
2006/11/24 PHP
PHP 定界符 使用技巧
2009/06/14 PHP
php做下载文件的实现代码及文件名中乱码解决方法
2011/02/03 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
一个JS的日期格式化算法示例
2013/07/31 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
Bootstrap每天必学之模态框(Modal)插件
2016/04/26 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
js获取隐藏元素的宽高
2017/02/24 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
Vue.js 时间转换代码及时间戳转时间字符串
2018/10/16 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
详细介绍Python中的偏函数
2015/04/27 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
Tensorflow累加的实现案例
2020/02/05 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
纯CSS3单页切换导航菜单界面设计的简单实现
2016/08/16 HTML / CSS
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
简单说说tomcat的配置
2013/05/28 面试题
办理生育手续介绍信
2014/01/14 职场文书
捐资助学倡议书
2014/04/15 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
围城读书笔记
2015/06/26 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
导游词之南迦巴瓦峰
2019/11/19 职场文书