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 08 Python
python批量修改文件名的实现代码
Sep 01 Python
利用Fn.py库在Python中进行函数式编程
Apr 22 Python
批量获取及验证HTTP代理的Python脚本
Apr 23 Python
PyQt5每天必学之组合框
Apr 20 Python
python+opencv实现阈值分割
Dec 26 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
Aug 17 Python
python设置环境变量的作用整理
Feb 17 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
Python如何实现定时器功能
May 28 Python
python selenium xpath定位操作
Sep 01 Python
python中四舍五入的正确打开方式
Jan 18 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写日志的实现方法
2014/11/05 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
JavaScript For Beginners(转载)
2007/01/05 Javascript
JavaScript显示当前文档最后修改日期的方法
2015/03/19 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
Bootstrap分页插件之Bootstrap Paginator实例详解
2016/10/15 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
Vue中封装input组件的实例详解
2017/10/17 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
浅谈HTTP 缓存的那些事儿
2018/10/17 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
深入浅析Python 中 is 语法带来的误解
2019/05/07 Python
wxPython实现文本框基础组件
2019/11/18 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
Spy++的使用方法及下载教程
2021/01/29 Python
美特斯邦威官方商城:邦购网
2016/10/13 全球购物
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
艺术爱好者的自我评价分享
2013/10/08 职场文书
个人简历自荐信
2013/12/05 职场文书
实习单位接收函模板
2014/01/10 职场文书
小学教师节活动方案
2014/01/31 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
环保建议书400字
2014/05/14 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
篮球赛新闻稿
2015/07/17 职场文书
js之ajax文件上传
2021/05/13 Javascript
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL