【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- ...
随机推荐
- 【Tool】MySQL卸载
MySQL卸载 2019-11-07 13:23:00 by冲冲 1.停止MySQL服务 右击"计算机" -- "管理" -- 左击"服务和应用程 ...
- 前台json遍历拼装
//添加角色. $.ajax({ type: "post", url: "/sysRole/list", data: {page: 1, limit: 1000 ...
- .NET Core基础篇之:依赖注入DependencyInjection
依赖注入已经不是什么新鲜话题了,在.NET Framework时期就已经出现了各种依赖注入框架,比如:autofac.unity等.只是在.net core微软将它搬上了台面,不用再依赖第三方组件(那 ...
- [NOI2020] 美食家
很好,自己会做NOI签到题了,去年只要会这题,再多打点暴力,\(Ag\)到手,希望今年\(NOI\)同步赛过\(Ag\)线吧,得有点拿得出手的成绩证明啊. 考虑\(T\)非常大,\(n\)又很小. 想 ...
- 洛谷 P6783 - [Ynoi2008] rrusq(KDT+势能均摊+根号平衡)
洛谷题面传送门 首先显然原问题严格强于区间数颜色,因此考虑将询问离线下来然后用某些根号级别复杂度的数据结构.按照数颜色题目的套路,我们肯定要对于每种颜色维护一个前驱 \(pre\),那么答案可写作 \ ...
- Codeforces 715E - Complete the Permutations(第一类斯特林数)
Codeforces 题面传送门 & 洛谷题面传送门 神仙题.在 AC 此题之前,此题已经在我的任务计划中躺了 5 个月的灰了. 首先考虑这个最短距离是什么东西,有点常识的人(大雾)应该知道, ...
- Atcoder M-SOLUTIONS Programming Contest C - Best-of-(2n-1)(无穷级数求和+组合恒等式)
Atcoder 题面传送门 & 洛谷题面传送门 无穷级数求和的简单题,稍微写写吧,正好也算帮我回忆下组合数这一块的内容. 首先我们不妨假设 A 赢,B 赢的情况就直接镜像一下即可.我们枚举 B ...
- docker_清华源国内的选择
清华大学开源镜像官网:https://mirrors.tuna.tsinghua.edu.cn/ 前期: 在centos7 中的extras 源里面有docker 安装包,但是里面的安装包是比较旧的 ...
- 利用elliipse做相关图
参考资料:<数据探掘 R语言实战> p65-P68 install.packages("rattle") # 获取实验数据集 install.packages(&quo ...
- mysql—将字符型数字转成数值型数字
今天写sql语句时,相对字符串类型的数字进行排序,怎么做呢? 需要先转换成数字再进行排序 1.直接用加法 字符串+0 eg: select * from orders order by (mark+0 ...