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 相关文章推荐
wxPython事件驱动实例详解
Sep 28 Python
python通过shutil实现快速文件复制的方法
Mar 14 Python
Python简单读取json文件功能示例
Nov 30 Python
利用anaconda保证64位和32位的python共存
Mar 09 Python
在PyTorch中Tensor的查找和筛选例子
Aug 18 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
python处理document文档保留原样式
Sep 23 Python
详解Django CAS 解决方案
Oct 30 Python
selenium+Chrome滑动验证码破解二(某某网站)
Dec 17 Python
Python开发企业微信机器人每天定时发消息实例
Mar 17 Python
详解Python自动化之文件自动化处理
Jun 21 Python
python开发飞机大战游戏
Jul 15 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
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
PHP5+UTF8多文件上传类
2008/10/17 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
一组PHP可逆加密解密算法实例代码
2014/01/21 PHP
实现局部遮罩与关闭原理及代码
2013/02/04 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
javascript创建cookie、读取cookie
2016/03/31 Javascript
AngularJS入门教程之双向绑定详解
2016/08/18 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
express如何解决ajax跨域访问session失效问题详解
2019/06/20 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
vue如何使用rem适配
2021/02/06 Vue.js
[39:52]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第一场
2018/04/04 DOTA
python人人网登录应用实例
2014/09/26 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python爬虫文件下载图文教程
2018/12/23 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
python 读取修改pcap包的例子
2019/07/23 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
分公司经理岗位职责
2013/11/11 职场文书
小学生操行评语大全
2014/04/22 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python
Spring Data JPA使用JPQL与原生SQL进行查询的操作
2021/06/15 Java/Android
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis