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 实现文件的递归拷贝实现代码
Aug 02 Python
Python中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
Python保存MongoDB上的文件到本地的方法
Mar 16 Python
整理Python 常用string函数(收藏)
May 30 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
从头学Python之编写可执行的.py文件
Nov 28 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
带你认识Django
Jan 15 Python
python对csv文件追加写入列的方法
Aug 01 Python
Django之编辑时根据条件跳转回原页面的方法
Aug 21 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
Django配置Bootstrap, js实现过程详解
Oct 13 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和ACCESS写聊天室(九)
2006/10/09 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
js 代码优化点滴记录
2012/02/19 Javascript
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
js老生常谈之this,constructor ,prototype全面解析
2016/04/05 Javascript
JSON格式的时间/Date(2367828670431)/格式转为正常的年-月-日 格式的代码
2016/07/27 Javascript
Javascript继承机制详解
2017/05/30 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
2017/07/17 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Python单例模式的两种实现方法
2017/08/14 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
Django model.py表单设置默认值允许为空的操作
2020/05/19 Python
pytorch简介
2020/11/11 Python
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
创业计划书中包含的9个方面
2013/12/26 职场文书
会议接待欢迎词
2014/01/12 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
2015年大学班主任工作总结
2015/04/30 职场文书
紫日观后感
2015/06/05 职场文书
教务处干事工作总结
2015/08/14 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书