14-python登入教务网(python+bs4)
用request先得到到session对象,用其去放送请求,会自动保存cookie。
模拟有验证码的登入步骤:
1.发送请求登入页面;
2.分析验证码的地址,以及要将登入请求发往的地址(可以先输入错的密码登入一次,抓包获取发送地址)
3.将返回的验证码存入文件,读取验证码,手动输入;
4.整合所有数据以及验证码,发往登入验证界面;
5.登入成功后即可访问只有登入后的界面了,比如个人主页
#_*_ coding: utf-8 _*_ '''
Created on 2018年7月16日
@author: sss
function: 登入ctgujwc '''
from bs4 import BeautifulSoup
import requests
import random
from pip._vendor.distlib.compat import raw_input def CheckCode(checkcode):
with open('checkcode.jpg', 'wb+') as f:
f.write(checkcode)
text = raw_input('请输入验证码:')
return text def WriteFile(test):
with open('ys_person.html', 'w+') as f:
f.write(test)
print('已写入!') def jwcLogin():
#构造一个Session对象,可以保存Cookie:
sess = requests.Session()
ua_list = [
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
"Mozilla/5.0 (X11; CrOS i686 2268.111.0)like Gecko",
"Mozilla/5.0 (Macintosh; U; PPC Mac OS X ",
"Mozilla/5.0 (Macintosh; Intel Mac OS "
] user_agnet = random.choice(ua_list) headers = {
"Connection" : "keep-alive",
"Accept" : "application/json, text/javascript, */*; q=0.01",
"User-Agent" : user_agnet,
} #首先过去登入页面
html = sess.get('http://210.42.38.26:84/jwc_glxt/Login.aspx', headers = headers).text
# print(html) #调用lxml解析库
bs = BeautifulSoup(html, 'lxml') #获取页面验证码网址:
checkcodeUrl = bs.find('img', attrs = {"id": 'ImageCheck'}).get('src')
# print(checkcodeUrl)
checkcodeUrl = 'http://210.42.38.26:84/jwc_glxt/' + checkcodeUrl #获得验证码图片:
checkcode_data = sess.get(checkcodeUrl, headers = headers).content
# print(checkcode_data)
#验证码存入文件
text = CheckCode(checkcode_data) #放入post表单数据,只放用户名+密码+验证码是不行的!!!
data = {
'__VIEWSTATE':'/wEPDwUKLTQ4NjU1OTA5NGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFCGJ0bkxvZ2luMRg1SjrafPmtoydz1mPeR4vBlIE=',
'__EVENTVALIDATION':'/wEWBQK8vuPMAgKl1bKzCQKC3IeGDAK1qbSRCwLO44u1DdFTNDJgcOwlCVJHcDBqwrj3IMXf',
"txtUserName" : "name",
"txtPassword" : "password",
'btnLogin.x':'41',
'btnLogin.y':'31',
"CheckCode" : text
} #发起post请求登入:
respense = sess.post('http://210.42.38.26:84/jwc_glxt/Login.aspx', data = data, headers = headers)
# print(respense) #获取登入后的个人主页:
respense = sess.get('http://210.42.38.26:84/jwc_glxt/Stu_Info/Stu_info.aspx').text;
# print(respense)
#将个人主页写入文件
WriteFile(respense) #退出登入
respense = sess.get('http://210.42.38.26:84/jwc_glxt/Login.aspx?xttc=1')
print('退出!') if __name__ == '__main__':
jwcLogin()
14-python登入教务网(python+bs4)的更多相关文章
- 登入爱丽网后台(非JS绕过、非盲打、非IP欺骗)
后台: http://wed.27.cn/marry/marryadmin/web/login.php 不难猜解到后台管理的相关页面名称(不存在的页面服务器返回404,而存在的页面会直接跳转到上面的登 ...
- python selenium 多账户自动登入163邮箱
pycharm一些快捷键: ' ctrl ' +' / ' :注释 ' Tab ' :同时缩进 ' shift ' +' Tab ' :左移 一次缩进 本文webinfo.txt路径:C:\Pytho ...
- Python爬虫笔记【一】模拟用户访问之提交表单登入—第二次(7)
在第一次登入时遇到这个问题,页面验证码与下载下来需要识别的验证码不同的问题,从网上查寻说是叫验证码同步问题.发现是用cookie解决的,那次cookie介绍到通过cookie就可以实现时间戳同步问题, ...
- Python爬虫-尝试使用人工和OCR处理验证码模拟登入
刚开始在网上看别人一直在说知乎登入首页有有倒立的汉字验证码,我打开自己的知乎登入页面,发现只有账号和密码,他们说的倒立的验证码去哪了,后面仔细一想我之前登入过知乎,应该在本地存在cookies,然后我 ...
- python编辑用户登入界面
1.需求分析 登入界面需要达到以下要求: 系统要有登入和注册两个选项可供选择 系统要能够实现登入出错提示,比如账户密码错误等,用户信息保存在user_info.txt文件夹中 系统要能够进行登入错误次 ...
- python基础篇---实战---用户登入注册程序
一.首先了解需求: 1.支持多个用户登入 2.登入成功后显示欢迎,并退出程序 3.登入三次失败后,退出程序,并在下次程序启动尝试登入时,该用户名依然是锁定状态 二.文件代码如下: f = open(& ...
- python获取淘宝登入cookies
重点:去新浪微博登入接口登入 一.代码 # coding=utf-8 import requests from selenium.webdriver.common.by import By from ...
- Python socket编程 (2)--实现文件验证登入
可以实现从客户端输入账号和密码然后发送到服务器进行验证,实现用户登入校正操作. 服务器: import socket import json server = socket.socket() serv ...
- python爬取当当网的书籍信息并保存到csv文件
python爬取当当网的书籍信息并保存到csv文件 依赖的库: requests #用来获取页面内容 BeautifulSoup #opython3不能安装BeautifulSoup,但可以安装Bea ...
随机推荐
- 坑爹的AMH
坑爹的 AMH的配置文件在这里: nginx 配置文件1:/usr/local/nginx-generic-1.6/conf/nginx.conf nginx 配置文件2:/home/wwwroot/ ...
- qing-automation简单入门介绍
1.相关文档:http://www.51testing.com/html/50/category-catid-250.html 2.进行Qing automation相关操作之前,必须安装好jdk跟a ...
- Linux下定时执行任务(crontab命令)
1.循环执行的计划任务 linux下面有atd和crond两种计划任务,其中,atd服务使用的at命令只能执行一次,而crond服务使用的crontab定义的命令,是循环作用的,所以crond才符合我 ...
- 禁用绑定在Repeater的控件
实例一: 前台: <asp:Repeater ID="rp_bf" runat="server" onitemdatabound="rp_bf_ ...
- PoJ 1595 PrimeCuts
Prime Cuts Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9339 Accepted: 3562 Descri ...
- 一步步实现 Redis 搜索引擎
来源:jasonGeng88 github.com/jasonGeng88/blog/blob/master/201706/redis-search.md 如有好文章投稿,请点击 → 这里了解详情 场 ...
- 个人关于python装饰器的白痴理解
无参数装饰器 对于python小白来说,python的装饰器简直让人懵逼,不知如何理解,其实按照装饰器的字面意思, 就是把自己定义的函数装饰一遍,然后返回一个新的函数(注意是新的,已经不是本来定义的函 ...
- PEM文件和private.key文件生成IIS服务器所需的pfx文件(配置SSL用)
第一步:输入域名,点击"创建免费的SSL证书"按钮,如图 第二步:输入邮箱,点击创建,如图 创建成功后,需要进行dns验证,结果图如下: 第三步:在域名所在的云服务器上,添加域名解 ...
- python删除安装的模块
上篇讲述了如何用distutils模块来创建分发包,那么安装了模块之后,怎么来删除呢,具体的步骤如下: [root@FTP ansible]# ls -l /usr/share/kel -rw-r-- ...
- HTTP之URL
URI 和 URL 与 URI(统一资源标识符)相比,我们更熟悉 URL(Uniform Resource Locator,统一资源定位符).URL 正是使用 Web 浏览器等访问 Web 页面时需要 ...