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超简单解决约瑟夫环问题
May 12 Python
Python 使用requests模块发送GET和POST请求的实现代码
Sep 21 Python
Python之读取TXT文件的方法小结
Apr 27 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
PyQt QCombobox设置行高的方法
Jun 20 Python
python分割一个文本为多个文本的方法
Jul 22 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
Jan 09 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 Python
python - asyncio异步编程
Apr 06 Python
Django基础CBV装饰器和中间件
Mar 22 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中使用Oracle数据库(6)
2006/10/09 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
php intval函数用法总结
2019/04/14 PHP
有一段有意思的代码-javascript现实多行信息
2007/08/26 Javascript
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
js canvas实现5张图片合成一张图片
2019/07/15 Javascript
小程序Request的另类用法详解
2019/08/09 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
python+mongodb数据抓取详细介绍
2017/10/25 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
时尚休闲吧创业计划书
2014/01/25 职场文书
公务员转正鉴定材料
2014/02/11 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
中学感恩教育活动总结
2015/05/05 职场文书
公司酒会主持词
2015/07/02 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python
分享python函数常见关键字
2022/04/26 Python