【python】青果教务系统模拟登陆
使用 python 的 selenium + chrome 来模拟登陆学校教务系统
完整代码传至 github,增加了一个自动识别验证码的功能,不过是用的别人的轮子,识别度也不高
这是需要手动输入验证码的
获取验证码是在一个网页上,访问以后随机生成的,想要让生成的跟我们登录时要输入的验证码对起来,需要保证使用的是同一个cookie
- from bs4 import BeautifulSoup
- from selenium import webdriver
- import requests
- import time
- from selenium.webdriver.common.keys import Keys
- from requests.cookies import RequestsCookieJar
- #browser=webdriver.PhantomJS(executable_path='D:/software/phantomjs-2.1.1-windows/bin/phantomjs')
- #browser.get("http://jwxt.sdaeu.edu.cn/jwweb/home.aspx")
- #为了验证,暂时不用无界
- #chromeOptions = webdriver.ChromeOptions()
- #chromeOptions.add_argument("--proxy-server=http://127.0.0.1:8080")
- #给chrome设置代理
- #browser = webdriver.Chrome(chrome_options = chromeOptions)
- browser = webdriver.Chrome()
- browser.get('http://jwxt.sdaeu.edu.cn/jwweb/home.aspx')
- #打开chrome
- time.sleep(2)
- browser.switch_to_frame('frm_login')
- #跳转表单
- browser.find_element_by_id("txt_sdertfgsadscxcadsads").click()
- jpg=browser.find_element_by_id('imgCode')
- img_src=jpg.get_attribute("src")
- #print(img_src)
- #拿到验证码url
- #在这里应该使用browser的ASP.NET_SessionId的值
- cookie_bro = browser.get_cookies()
- #获取browser的cookie字典
- #print(cookie_bro)
- cookie1=cookie_bro[0]['value']
- print("\n当前cookie为: "+cookie1)
- headers1={
- 'Host':'jwxt.sdaeu.edu.cn',
- 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
- 'Accept':'image/webp,image/apng,image/*,*/*;q=0.8',
- 'Referer':'http://jwxt.sdaeu.edu.cn/jwweb/_data/login_home.aspx',
- 'Accept-Encoding':'gzip, deflate',
- 'Accept-Language':'zh-CN,zh;q=0.9',
- 'Cookie':'myCookie=;'+'ASP.NET_SessionId='+cookie1,
- 'Connection':'close'
- }
- #proxy1={"http":"http://127.0.0.1:8080"}
- #r=requests.get(img_src,headers=headers1,proxies=proxy1)
- #requests代理
- r=requests.get(img_src,headers=headers1)
- img_content=r.content
- print("[*]正在下载验证码...\n")
- with open('check.jpg','wb') as f:
- f.write(img_content)
- #把对应的“学号”和“密码”换成自己的
- browser.find_element_by_id("txt_asmcdefsddsd").send_keys("1803120102")
- browser.find_element_by_id("txt_asmcdefsddsd").send_keys(Keys.TAB)
- browser.find_element_by_id("txt_pewerwedsdfsdff").send_keys("wuxiange360")
- #没有识别功能手动输入
- code = input("[*]请输入验证码: ")
- browser.find_element_by_id("txt_sdertfgsadscxcadsads").send_keys(code)
- browser.find_element_by_id("btn_login").click()
- #browser.close()
- #关闭浏览器
【python】青果教务系统模拟登陆的更多相关文章
- 使用php的curl爬去青果教务系统 课表(转)
1. 分析 首先我们要了解 Http Cookie 的作用(可参考HTTP cookies 详解),简单来说就是维持一个会话,这样我们就能在登陆一个网页后,就能进入这个网页需要登陆的界面. 现在我们需 ...
- python urllib2 模拟网站登陆
python urllib2 模拟网站登陆 1. 可用浏览器先登陆,然后查看网页源码,分析登录表单 2. 使用python urllib2,cookielib 模拟网页登录 import urllib ...
- Python实现网站模拟登陆
一.实验简介 1.1 基本介绍 本实验中我们将通过分析登陆流程并使用 Python 实现模拟登陆到一个实验提供的网站,在实验过程中将学习并实践 Python 的网络编程,Python 实现模拟登陆的方 ...
- 使用python的Paramiko模块登陆SSH
使用python的Paramiko模块登陆SSH paramiko是用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. python的paramiko模块 ...
- Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证
Python tkinter 实现简单登陆注册 最终效果 开始界面 注册 登陆 源码 login.py # encoding=utf-8 from tkinter import * from ...
- Python Selenium + phantomJS 模拟登陆教务管理系统 “抢课”
# _*_coding:utf-8_*_ from selenium import webdriver from selenium.webdriver.common.action_chains imp ...
- Redis & Python/Django 简单用户登陆
一.Redis key相关操作: 1.del key [key..] 删除一个或多个key,如果不存在则忽略 2.keys pattern keys模式匹配,符合glob风格通配符,glob风格的通配 ...
- Python作业之三次登陆锁定用户
作业之三次登陆锁定用户 作业要求如下: 1. 输入用户名和密码 2. 认证成功提示欢迎信息 3. 认证失败三次锁定用户 具体代码如下: 方法1: import os#导入os模块 if os.path ...
- 广州商学院Python正方教务系统爬虫(获取个人信息成绩课表修改密码)
使用python的requests库简单爬取,使用xpath解析内容 可以获取个人信息.个人照片.成绩单和课表 github地址:https://github.com/PythonerKK/GZCC- ...
随机推荐
- [luogu4466]和与积
令$d=\gcd(i,j)$,$i'=\frac{i}{d}$,$j'=\frac{j}{d}$,则$(i',j')=1$,可得$(i'+j',i'j')=1$(假设有公因子$p$,必然有$p|i'或 ...
- opencv 视频处理相关
包含视频格式知识(编解码和封装格式):如何获取视频信息及视频编解码格式:opencv读取及保存视频,及opencv fourcc编码格式 一.基础知识 视频的编解码格式和封装格式 参考如山似水 视频编 ...
- Dapr初体验之服务调用
初次理解服务调用 在微服务中,有一个难点就是:如果你想使用各个服务组件,你就得知道不同服务的地址和端口,也就是服务发现. 在传统应用我们是怎么做的?就是在web项目里配置上api地址,如下: 在一个w ...
- [CSP-S2019] 树上的数
考虑处理字典序的一类经典操作: 按位枚举. 我们思考一些性质: 一个点的权值出去则不会再回来. 一条边不会使用两次. 那么我们从小到大来操作. 那么存在矛盾当且仅当: 起点在之前非开始边被操作过 中间 ...
- Codeforces 193E - Fibonacci Number(打表找规律+乱搞)
Codeforces 题目传送门 & 洛谷题目传送门 蠢蠢的我竟然第一眼想套通项公式?然鹅显然 \(5\) 在 \(\bmod 10^{13}\) 意义下并没有二次剩余--我真是活回去了... ...
- ClickHouse数据定义
数据定义 ClickHouse的数据类型 ClickHouse是一款分析型数据库,有多种数据库类型,分为基础类型.复合类型和特殊类型.其中基础类型使用ClickHouse具备了描述数据的基本能力, ...
- 【Python小试】根据外显子位置生成CDS序列
已知 genomic_dna.txt TCGATCGTACCGTCGACGATGCTACGATCGTCGATCGTAGTCGATCATCGATCGATCGACTGATCGATCGATCGATCGATC ...
- Linux—linux 查看一个文件有多少M
ls -l --block-size=M #就把目录下的所有文件按M单位呈现
- A Child's History of England.2
They made boats of basket-work, covered with the skins of animals, but seldom, if ever, ventured far ...
- Spark基础:(三)Spark 键值对操作
1.pair RDD的简介 Spark为包含键值对类型的RDD提供了一些专有的操作,这些RDD就被称为pair RDD 那么如何创建pair RDD呢? 在不同的语言中有着不同的创建方式 在pytho ...