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持久性管理pickle模块详细介绍
Feb 18 Python
Python中的条件判断语句与循环语句用法小结
Mar 21 Python
Python爬虫之xlml解析库(全面了解)
Aug 08 Python
Django项目中model的数据处理以及页面交互方法
May 30 Python
PyCharm设置每行最大长度限制的方法
Jan 16 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
pytorch梯度剪裁方式
Feb 04 Python
解决更改AUTH_USER_MODEL后出现的问题
May 14 Python
python如何代码集体右移
Jul 20 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
如何用Python徒手写线性回归
Jan 25 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 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
新闻分类录入、显示系统
2006/10/09 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
laravel框架 laravel-admin上传图片到oss的方法
2019/10/13 PHP
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
python制作mysql数据迁移脚本
2019/01/01 Python
Python实现TCP通信的示例代码
2019/09/09 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
Otticanet意大利:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
会计电算化应届生求职信
2013/11/03 职场文书
应届生污水处理求职信
2013/11/06 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
百年校庆感言
2015/08/01 职场文书
办公室管理规章制度
2015/08/04 职场文书
事业单位岗位说明书
2015/10/08 职场文书
详解Redis集群搭建的三种方式
2021/05/31 Redis
Python可视化神器pyecharts绘制地理图表
2022/07/07 Python