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 ...
随机推荐
- 洛谷【P4551】最长异或路径
浅谈\(Trie\):https://www.cnblogs.com/AKMer/p/10444829.html 题目传送门:https://www.luogu.org/problemnew/show ...
- linux性能监控——CPU、Memory、IO、Network
一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System Time <= 70%. 上 ...
- HDOJ5875(线段树)
Function Time Limit: 7000/3500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- 用活firewalld防火墙之service
原文地址:http://www.excelib.com/article/291/show 前面学生已经给大家介绍了在firewalld中service的概念以及在zone中怎么使用service,但是 ...
- litePal用法
1.依赖:在app/build.gradle文件中的depenencies{compile 'org.litepal.android:core:1.3.2'} 2.配置litePal.xml:右击ap ...
- s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由用户控制。
package com.hanqi; import java.util.*; public class yonghukongzhi { public static void main(String[] ...
- 解决: Project facet Java version 1.8 is not supported
背景 从别处Import一个Java project之后,Eclipse提示“Project facet Java version 1.8 is not supported”. 分析 从错误的描述来看 ...
- 利用JAVA操作Redis---demo
package com.js.ai.modules.pointwall.interfac; import java.util.HashMap; import java.util.Iterator; i ...
- B. T-primes
/* PROBLEMSSUBMITSTATUSSTANDINGSCUSTOM TEST B. T-primes time limit per test2 seconds memory limit pe ...
- 仅用CSS3创建h5预加载双旋圈
<head> <meta charset="UTF-8"> <title></title> <style type=" ...