python爬虫 模拟登陆校园网-初级
最近跟同学学习爬虫的时候看到网上有个帖子,好像是山大校园网不稳定,用py做了个模拟登陆很有趣,于是我走上了一条不归路.....
先上一张校园网截图

首先弄清一下模拟登陆的原理:
1:服务器判定浏览器登录使用浏览器标识,需要模拟登陆
2: 需要post账号,密码,以及学校id
python走起,我用的2.7版本,用notepad++写的,绑定python可以直接运行

由于是模拟网页登陆,需要导入urllib urllib2 cookielib库,前两个有与网页直接的接口,cookielib就是用来处理cookie的
先了解一下这几个库函数 一片不错的博客
http://www.cnblogs.com/mmix2009/p/3226775.html
ok,开始构建一个opener
cookie=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
用urllib2.HTTOCookieProcessor处理CookieJar获得的cookie,并被build_opener处理
然后构建一下需要post的header,这个地址并不是我们输入账号密码的地址,而是提交数据被处理的地址,在登陆的时候用浏览器抓一下:

嗯 就是右边的那个URL,我们最后提交的网址就是那个。我们看一下他的header

差不多就这些,可以都写上,也可以只写服务器验证的UA等等
需要提交的数据:
data={
"username":"xxxxxxxx",
"password":"xxxxx",
}
post_data=urllib.urlencode(data)
然后就是post了,使用Requset(url,post_data,header)
req=urllib2.Request('http://139.198.3.98/sdjd/userAction!login.action',post_data,headers)
content=opener.open(req)
再open(req)放到content里,print一下试试是否成功。
然后.....然后发现失败了找找bug.....

因为是学习的网上的,那个简单的例子只有用户名和密码,而这个登陆还要选择大学.......
好吧,那就先找下源码,结果没找到,就从header里找,果然在cookie里有个schoo id=XXXX,没错了,就是这个了,于是在data里再加上这个,结果提交了以后还是失败。最后发现提交的data里的userName,password,school_必须和request里的名称大小写下划线什么的要一致:

最终代码(账号密码什么的用XXXX代替了):
import urllib
import urllib2
import cookielib data={
"userName":"xxxxxxxx",
"password":"xxxxx",
"school_id":"xxxx"
}
post_data=urllib.urlencode(data) cookie=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) headers={
'Accept': 'text/html, application/xhtml+xml, image/jxr, */*',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-US, en; q=0.8, zh-Hans-CN; q=0.5, zh-Hans; q=0.3',
'Connection': 'Keep-Alive',
'Host': '139.198.3.98',
'Referer': 'http://139.198.3.98/sdjd/protalAction!loginInit.action?wlanuserip=10.177.31.212&basip=124.128.40.39',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393',
'X-Requested-With': 'XMLHttpRequest'
} req=urllib2.Request('http://139.198.3.98/sdjd/userAction!login.action',post_data,headers)
content=opener.open(req) print content.read().decode("utf-8")
运行一下:

初步success~以后在深一步研究
还有求dalao解答我从notepad++上用#注释没效果咋回事......
------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------
学习了requests库 果然好用。。。贴一下代码
import requests se=requests.Session() url='http://139.198.3.98/sdjd/userAction!login.action'
data={
"userName":"xxxxxxxx",
"password":"xxxxx",
"school_id":"xxxx"
} headers={
'Accept': 'text/html, application/xhtml+xml, image/jxr, */*',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-US, en; q=0.8, zh-Hans-CN; q=0.5, zh-Hans; q=0.3',
'Connection': 'Keep-Alive',
'Host': '139.198.3.98',
'Referer': 'http://139.198.3.98/sdjd/protalAction!loginrInit.action?wlanuserip=10.177.31.212&basip=124.128.40.39',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393',
'X-Requested-With': 'XMLHttpRequest'
} content=se.post(url,data=data,headers=headers) print content.text
// 之前#没用是没保存成py格式直接运行了......
python爬虫 模拟登陆校园网-初级的更多相关文章
- python爬虫模拟登陆
python爬虫模拟登陆 学习了:https://www.cnblogs.com/chenxiaohan/p/7654667.html 用的这个 学习了:https://www.cnblogs.co ...
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- 【小白学爬虫连载(10)】–如何用Python实现模拟登陆网站
Python如何实现模拟登陆爬取Python实现模拟登陆的方式简单来说有三种:一.采用post请求提交表单的方式实现.二.利用浏览器登陆网站记录登陆成功后的cookies,采用get的请求方式,传入c ...
- Python实现模拟登陆
大家经常会用Python进行数据挖掘的说,但是有些网站是需要登陆才能看到内容的,那怎么用Python实现模拟登陆呢?其实网路上关于这方面的描述很多,不过前些日子遇到了一个需要cookie才能登陆的网站 ...
- 爬虫模拟登陆之formdata表单数据
首先HTTP协议是个无连接的协议,浏览器和服务器之间是以循环往复的请求回复来交互的,交互的形式是以文件形式来进行的.比如在chrome开发者工具network中看到了 每一行是一个文件,又文件大小啊, ...
- python+requests模拟登陆 学校选课系统
最近学校让我们选课,每天都有不同的课需要选....然后突发奇想试试用python爬学校选课系统的课程信息 先把自己的浏览器缓存清空,然后在登陆界面按f12 如图: 可以看到登陆时候是需要验证码的,验证 ...
- python selenium模拟登陆163邮箱。
selenium是可以模拟浏览器操作. 有些爬虫是异步加载的,通过爬取网页源码是得不到需要的内容.所以可以模拟浏览器去登陆该网站进行爬取操作. 需要安装selenium通过pip install xx ...
- python 脚本自动登陆校园网
学校的校园网每次重开电脑时都要重新打开浏览器进行网页登录,繁琐的操作比较麻烦,于是便写了个python的脚本进行自动登录,下面说下具体的操作过程: 1. 方法说明 博主采用的python的 reque ...
- Python作业模拟登陆(第一周)
模拟登陆:1. 用户输入帐号密码进行登陆2. 用户信息保存在文件内3. 用户密码输入错误三次后锁定用户 思路: 1. 用户名密码文件为passwd,锁定用户文件为lock 2. 用户输入账号密码采用i ...
随机推荐
- Html5浏览器支持
HTML5 浏览器支持 把 HTML5 元素定义为块级元素 语义块级displayblock实例 header, section, footer, aside, nav, main, article, ...
- [原创]一种基于Python爬虫和Lucene检索的垂直搜索引擎的实现方法介绍
声明:本文首发在博客园晨星落羽,Shulin_Cao和lvmememe首页,转载请注明出处. 前言 2016.5到2017.5,我们三人(lvmememe,Shulin_Cao,晨星落羽)共同完成了一 ...
- poj1410计算几何线段相交
You are to write a program that has to decide whether a given line segment intersects a given rectan ...
- BFC块级格式上下文
BFC块级格式上下文,独立的一个渲染区域 1.同一个BFC的两个相邻盒子间的margin会重叠(垂直方向): 2.BFC内部的盒子在垂直方向上会一个接一个的放置: 3.每个子元素的左外边距与包含块的左 ...
- Java面试小试题
面试是我们每个人都要经历的事情,大部分人且不止一次,这里给大家总结最新的2016年面试题,让大家在2017年找工作时候能够事半功倍. 1 Switch能否用string做参数? a.在 Java 7 ...
- Thinkphp3.2学习——架构_URL模式
入口文件是应用的单一入口,对应用的所有请求都定向到应用入口文件,系统会从URL参数中解析当前请求的模块.控制器和操作: http://serverName/index.php/模块/控制器/操作 这是 ...
- jgs--多线程和synchronized
多线程 多线程是我们开发人员经常提到的一个名词.为什么会有多线程的概念呢?我们的电脑有可能会有多个cpu(或者CPU有多个内核)这就产生了多个线程.对于单个CPU来说,由于CPU运算很快,我们在电脑上 ...
- 使用Nginx实现Tomcat集群负载均衡
概述 要解决的问题 环境准备以及问题解决思路 配置 测试 小结 一.概述 使用Nginx主要是来解决高并发情况下的负载均衡问题. 二.要解决的问题 1.最主要是负载均衡请求分发. 2.文件上传功能,只 ...
- 一分钟应对勒索病毒WannaCry
一.WannaCry 勒索病毒 勒索病毒WannaCry肆虐全球,利用Windows操作系统漏洞,因链式反应迅猛自动传播,校园电脑.个人电脑.政府机关都是重灾区.中毒电脑所有文档被加密,将被勒索高达3 ...
- Struts流程分析+源码分析
1.初始化工作 读取配置---转换器-----读取插件 当struts-config.xml配置文件加载到内存,则会创建两个map:ActionConfigs,FromBeans.这两个map都交由M ...