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使用正则表达式提取网页URL的方法
May 26 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
python实现两张图片的像素融合
Feb 23 Python
详解python列表(list)的使用技巧及高级操作
Aug 15 Python
python 如何将数据写入本地txt文本文件的实现方法
Sep 11 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
Tensorflow实现将标签变为one-hot形式
May 22 Python
基于Pyinstaller打包Python程序并压缩文件大小
May 28 Python
Python3 requests模块如何模仿浏览器及代理
Jun 15 Python
详解python tkinter 图片插入问题
Sep 03 Python
python list等分并从等分的子集中随机选取一个数
Nov 16 Python
python 基于selectors库实现文件上传与下载
Dec 31 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 str_pad 函数使用详解
2009/01/13 PHP
php GeoIP的使用教程
2011/03/09 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
JavaScript中变量提升 Hoisting
2012/07/03 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
jquery日历插件e-calendar升级版
2016/11/10 Javascript
JQuery和html+css实现带小圆点和左右按钮的轮播图实例
2017/07/22 jQuery
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
Vue数字输入框组件示例代码详解
2020/01/15 Javascript
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
Auguste The Label官网:澳大利亚一家精品女装时尚品牌
2020/06/14 全球购物
小学优秀教育工作者事迹材料
2014/05/09 职场文书
收款授权委托书
2014/10/02 职场文书
校园广播稿100字
2014/10/06 职场文书
大一学生个人总结
2015/02/15 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
无房证明样本
2015/06/17 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
Python基础知识之变量的详解
2021/04/14 Python
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python