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中将阿拉伯数字转换成中文的实现代码
May 19 Python
Python批量按比例缩小图片脚本分享
May 21 Python
剖析Python的Tornado框架中session支持的实现代码
Aug 21 Python
Python 的类、继承和多态详解
Jul 16 Python
python  Django中的apps.py的目的是什么
Oct 15 Python
Python @property装饰器原理解析
Jan 22 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
Jun 30 Python
Python extract及contains方法代码实例
Sep 11 Python
Python fileinput模块如何逐行读取多个文件
Oct 05 Python
Python时间操作之pytz模块使用详解
Jun 14 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/10/09 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
PHP GD库相关图像生成和处理函数小结
2016/09/30 PHP
php session的应用详细介绍
2017/03/22 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
获取页面高度,窗口高度,滚动条高度等参数值getPageSize,getPageScroll
2006/09/22 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
JS性能优化笔记搜索整理
2013/08/21 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
详解微信小程序 登录获取unionid
2017/06/27 Javascript
ES6扩展运算符的用途实例详解
2017/08/20 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
2019/07/24 Javascript
JS实现轮播图效果
2020/01/11 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
Python的装饰器使用详解
2017/06/26 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
Html5写一个简单的俄罗斯方块小游戏
2019/12/03 HTML / CSS
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
生日邀请函范文
2014/01/13 职场文书
市场营销战略计划书
2014/05/06 职场文书
五一促销活动总结
2014/07/01 职场文书
主题党日活动总结
2014/07/08 职场文书
违反交通安全法检讨书
2014/10/24 职场文书
教师节班会开场白
2015/06/01 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
react国际化react-intl的使用
2021/05/06 Javascript