Python 实现自动登录+点击+滑动验证功能


Posted in Python onJune 10, 2020

需要用到的库有selenium,还需要安装Chrome浏览器驱动,具体如何安装我就不详述了

在这里我模拟了csdn的登录过程

**

1**.首先打开网页,用户名+密码登录,然后定位用户名输入框,和密码输入框,输入后 点击登陆 弹出验证滑动条

Python 实现自动登录+点击+滑动验证功能

def __init__(self):
 self.url = 'https://passport.csdn.net/login'
 self.browser = webdriver.Chrome()
 

 #获取登录按钮对象 选择 账号密码登录 
 def get_pass_button(self):
 
 button= self.browser.find_element_by_xpath('//*[@id="app"]/div/div/div[1]/div[2]/div[5]/ul/li[2]/a')
 return button
 
 #打开网址,输入用户名。密码
 def open(self,username,password):
 
 self.browser.get(self.url)
 self.get_pass_button().click()

 

2.然后跳转到登录视图

Python 实现自动登录+点击+滑动验证功能

self.browser.find_element_by_xpath('//*[@id="all"]').send_keys(username) 
 self.browser.find_element_by_xpath('//*[@id="password-number"]').send_keys(password)

 

3.滑动验证条:

Python 实现自动登录+点击+滑动验证功能

ps:个人觉得,这个通过用鼠标事件拖动验证条的方法同样可以适用于滑动验证码,可以把整个滑动验证码分为3-4等份,然后写个循环每次拖动1/3,基本上3-4次就能通过验证,这样就不用用网上写的那种通过获取原图,缺图的方法,很实用,很适合初学者,个人建议,大佬们别喷…

# 获取拖拽的滑动验证码块
 # 按钮xpath 
 slideblock = self.browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
 
 # 鼠标点击滑动块不松开
 ActionChains(self.browser).click_and_hold(slideblock).perform()
 # 将圆球滑至相对起点位置的 右边xx
 ActionChains(self.browser).move_by_offset(xoffset=260, yoffset=0).perform()
 
 time.sleep(10)
 # 放开滑动块
 ActionChains(self.browser).release(slideblock).perform()
 
#  time.sleep(10)

整体代码如下:

#coding=utf-8
import time
from selenium import webdriver
from selenium.webdriver import ActionChains

class Login():
 #打开浏览器驱动
 def __init__(self):
 self.url = 'https://passport.csdn.net/login'
 self.browser = webdriver.Chrome()
 #获取登录按钮对象 选择 账号密码登录 
 def get_pass_button(self):
 button= self.browser.find_element_by_xpath('//*[@id="app"]/div/div/div[1]/div[2]/div[5]/ul/li[2]/a')
 return button
 #打开网址,输入用户名。密码
 def open(self,username,password):
 self.browser.get(self.url)
 self.get_pass_button().click()
 self.browser.find_element_by_xpath('//*[@id="all"]').send_keys(username) 
 self.browser.find_element_by_xpath('//*[@id="password-number"]').send_keys(password)
 #调用 open方法,输入用户名。密码,
 #调用 get_geetest_button方法,点击按钮
 def log(self):
 # 输入用户名密码
 self.open('33289317','1111')
 # 点击登录按钮
 self.browser.find_element_by_xpath('//*[@id="app"]/div/div/div[1]/div[2]/div[5]/div/div[6]/div/button').click()
 time.sleep(5)
  # 获取拖拽的滑动验证码块
 # 按钮xpath 
 slideblock = self.browser.find_element_by_xpath('//*[@id="nc_1_n1z"]')
 # 鼠标点击滑动块不松开
 ActionChains(self.browser).click_and_hold(slideblock).perform()
 # 将圆球滑至相对起点位置的 右边xx
 ActionChains(self.browser).move_by_offset(xoffset=260, yoffset=0).perform()
 time.sleep(10)
 # 放开滑动块
 ActionChains(self.browser).release(slideblock).perform()
#  time.sleep(10)
 #关闭浏览器,释放资源
 # self.browser.close()
# 程序主入口
if __name__ == '__main__':
 login = Login()
 login.log()

总结

到此这篇关于Python 实现自动登录+点击+滑动验证的文章就介绍到这了,更多相关Python 实现自动登录+点击+滑动验证内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python的几种开发工具介绍
Mar 07 Python
Python常用正则表达式符号浅析
Aug 13 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
关于python下cv.waitKey无响应的原因及解决方法
Jan 10 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
python搜索包的路径的实现方法
Jul 19 Python
Django模型修改及数据迁移实现解析
Aug 01 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
Python数据可视化:饼状图的实例讲解
Dec 07 Python
python3 pathlib库Path类方法总结
Dec 26 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
Python函数参数定义及传递方式解析
Jun 10 #Python
什么是python类属性
Jun 10 #Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 #Python
浅谈Python中的模块
Jun 10 #Python
keras多显卡训练方式
Jun 10 #Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 #Python
keras 多gpu并行运行案例
Jun 10 #Python
You might like
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
php事务处理实例详解
2014/07/11 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
laravel5.2实现区分前后台用户登录的方法
2017/01/11 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
使用javascript做的一个随机点名程序
2014/02/13 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
jquery实现两个图片渐变切换效果的方法
2015/06/25 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
angularjs $http调用接口的方式详解
2018/08/13 Javascript
vue + typescript + 极验登录验证的实现方法
2019/06/27 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
[01:12:08]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.24
2019/09/10 DOTA
python类型强制转换long to int的代码
2013/02/10 Python
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
Python计算一个文件里字数的方法
2015/06/15 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
python机器学习理论与实战(二)决策树
2018/01/19 Python
对Python 窗体(tkinter)树状数据(Treeview)详解
2018/10/11 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
浅谈Django中view对数据库的调用方法
2019/07/18 Python
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
请说出以下代码输出什么
2013/08/30 面试题
领导班子四风对照检查材料
2014/09/23 职场文书
文明倡议书
2015/01/19 职场文书
老公写给老婆的检讨书
2015/05/06 职场文书
关于分班的感言
2015/08/04 职场文书