python2.7+selenium2实现淘宝滑块自动认证功能
作者:皇月 发布时间:2023-06-06 14:29:34
本文为大家分享了python2.7+selenium2实现淘宝滑块自动认证的具体代码,供大家参考,具体内容如下
1.编译环境
操作系统:win7;语言:python2.7+selenium2;ide:pycharm;浏览器:IE10,chrome
2.1意外开始
今天登录淘宝时候发现吧密码搞忘了,选择找回密码时淘宝居然加了滑块认证。
恰巧自己也在学习selenium,就想试一试能不能实现自动拖动滑块。
2.2 度娘查找
由于自己没多少思路,第一选择就是问度娘,终于找到一篇文章,该文章使用C#实现了该功能,并提到需要定位滑块元素在网页和桌面的坐标,而这个功能直接可以用selenium中的查找元素接口搞定,那么剩下最后一个问题就是如何得知滑块的位移量。(原谅我忘记该文章的名字了)
2.3 开始试验
大家在手动操作滑块的时候会发现如果滑块位移不够,它要自动还原就不能触发认证成功环节,所以我用一个笨方法先手动操作看看。打开浏览器按F12,得到代码如下:
然后拖动滑块位移,发现滑块元素的style一直在变化如图:
现在大概清楚右位移量为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()
来源:http://blog.csdn.net/ldg513783697/article/details/51583641


猜你喜欢
- character_set_client ,这是用户告诉MySQL查询是用的什么字符集。 character_set_connection
- Mysql的安装方法 安装mysql的步骤如下:请注意按图中所示,有些选项和默认是不一样的。同时,如果您是重新安装mysql的话,要注意先备
- 在我们做搜索的时候经常要用到模糊查询 (注:其中name1,name2,name3,name4为数据库字段) 1.方法 sql="
- 这是第二天了,工作之余和女朋友一起学Python3,代码都是她敲的,有点辣眼睛,仅做参考。1.题目:输入“姓名”,输出“你好,姓名”有关安装
- 基于flask的web应用的诞生,供大家参考,具体内容如下Flask是一个非常优秀的web框架,它最大的特点就是保持一个简单而易于扩展的小核
- 一、推荐方法 CURL获取<?php$c = curl_init();$url = 'www.jb51.net';cu
- 本文研究的主要是Python爬虫天气预报的相关内容,具体介绍如下。这次要爬的站点是这个:http://www.weather.com.cn/
- 所需补丁及高版本opatchimage上传后将p6880880_112000_Linux-x86-64.zip解压覆盖$ORACLE_HOM
- 实战场景初学 Python 爬虫,十之八九大家采集的目标是网页,因此快速定位到网页内容,就成为我们面临的第一道障碍,本篇博客就为你详细说明最
- 假设我们已经安装好了tensorflow。一般在安装好tensorflow后,都会跑它的demo,而最常见的demo就是手写数字识别的dem
- 只能是一些限定的东西运行代码框ENTER键可以让光标移到下一个输入框 <input onkeydown="if(event.
- 你可以将FCKEDITOR放置到任何文件夹,默认情况下,将其放入到FCKEDITOR文件夹是最为简单的方法.如果你放入的文件夹使用别的名称,
- 在python中,可以把for循环写在一行,生成一个新的列表,使用起来非常方便,下面举几个简单例子体会一下。1.简单的for...[if].
- 数据处理在现代企业运营中变得越来越重要,越来越关键,甚至会成为企业发展的一项瓶颈. 数据保护的重要性也不言而喻. 如果一个企业没有很好的数据
- 复制是将主数据库的DDL和DML操作通过二进制日志传到从库上,然后再从库重做,从而使得从库和主库保持数据的同步。MySQL可以从一台主库同时
- 目录1.用途2.语法3.实操1.用途通常,如果发生错误,脚本就会立即停止,并在控制台将错误打印出来。有了这个语句就可以捕获错误并执行合理操作
- 这是一个特别简单的用原生js实现的一个小鸟游戏,比较简单,适合新手练习。html结构<div id="game"&
- 最近在改个程序用到了在js中设置css的float属性,以为和平常的写法一样,原来不是,只好去请教google,原来...首先大家先来看一下
- 摘要:本篇博客将详细介绍如何对YOLOv5车牌识别模型进行优化和部署。我们将讨论模型优化策略,如模型蒸馏、模型剪枝和量化等。此外,我们还将介
- 对于某些项目来说,单页面不能很好的满足需求,所以需要将vue-cli创建的单页面项目改为多页面项目。需要修改以下几个文件:1、下载依赖glo