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 ...
随机推荐
- js小数处理
js中的小数处理 先说说Math的几个方法: 1.Math.floor(x) 返回不大于当前数的最大整数. 我的记法:floor 直译 地板 也就是不大于的的意思 (x-0.5 四舍五入取整 ...
- js基本语法汇总
1.分类 ECMAScript js基本语法与标准 DOM Document Object Model文档对象模型 BOM Browser Object Model浏览器对象模型 tips:DOM和B ...
- [ext4]13 空间管理 - Prealloc分配机制
作者:Younger Liu, 本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可. 在ext4系统中,对于小文件和大文件的空间申请请求,都有不同的分配策略 ...
- IO调度器原理介绍
IO调度器(IO Scheduler)是操作系统用来决定块设备上IO操作提交顺序的方法.存在的目的有两个,一是提高IO吞吐量,二是降低IO响应时间.然而IO吞吐量和IO响应时间往往是矛盾的,为了尽量平 ...
- PHP自定义函数
啊哈
- [笔记]cin、cout与scanf、printf的效率差异对比分析
之前上传UVa227 puzzle时,好不容易AC了,但发现自己用时50(ms),而在VJ上看到人家都是40ms.20ms,于是打开一个20ms的代码查看人家强在哪里.但结果研究了半天感觉差不多,于是 ...
- VR全景是继互联网后的第二王朝吗?
VR虚拟现实.VR全景广泛用于游戏中,带上VR眼镜,有身临其境般的感觉.于是近些年围绕着 "下一代计算平台",国内外兴起一股虚拟现实热,在这样的形势下,VR眼镜在国内打的十分火热. ...
- Java类加载和卸载的跟踪
博客搬家自https://my.oschina.net/itsyizu/blog/ 什么是类的加载和卸载 Java程序的运行离不开类的加载,为了更好地理解程序的执行,有时候需要知道系统加载了哪些类.一 ...
- OpenCV探索之路(十):图像修复技术
在实际应用中,我们的图像常常会被噪声腐蚀,这些噪声或是镜头上的灰尘或水滴,或是旧照片的划痕,或者是图像遭到人为的涂画(比如马赛克)或者图像的部分本身已经损坏.如果我们想让这些受到破坏的额图片尽可能恢复 ...
- 关于DB2死锁处理
昨天在修改字段类型的时候引起了死锁,我一般会使用REORG命令处理,在控制中心下 只需要执行 REORG TABLE TABLENAME 命令就可以, 但是在 RazorSQL 下执行此命令会报缺失 ...