Python模拟登陆实现代码


Posted in Python onJune 14, 2017

下面分享一个使用Python进行网站模拟登陆的小例子。

原理

使用Cookie技术,绕开网站登录验证。要使用到cookielib库。流程:

  1. 创建一个保存Cookie的容器,可选的有CookieJar,FileCookieJar,MozillaCookieJar,LWPCookieJar.其相互之间的关系是CookieJar —-派生—->FileCookieJar —-派生—?>MozillaCookieJar和LWPCookieJar.
  2. 然后创建一个处理Cookie的处理器handler.通过urllib2.HTTPCookieProcessor(cookie)即可
  3. 创建一个用于开启网站的opener。即可。这个opener相比于urllib2.urlopen方法更为普通一点而已。opener = urllib2.build_opener(handler)。
  4. 然后我们就可以正常的使用opener来访问网络了。

小案例

实现的功能是模拟登录到大连理工大学的教务网站。代码如下:

# coding:UTF-8

import urllib,urllib2,cookielib

filename = r'F:\pachong\gaoqing\dlutcookie.txt'
# show cookie and save to local
cookie = cookielib.MozillaCookieJar()
handler = urllib2.HTTPCookieProcessor(cookie)
opener = urllib2.build_opener(handler)
# 记得使用urllib模块进行参数的encode
postdata = urllib.urlencode({
  # 哈哈,本宫不给你们我的账号?(?^?)?
  'zjh':'xxxxxxxxx',
  'mm':'XXXXXX'
})


# 登陆到教务系统的url
url = 'http://zhjw.dlut.edu.cn/loginAction.do'

# 开始进行模拟登陆,并把cookie保存到变量
response = opener.open(url,postdata)
cookie.save(filename,ignore_discard=True,ignore_expires=True)

# 打印一下获得的cookie信息吧
for item in cookie:
  item.name + ' = ' + item.value




# 利用cookie访问另一个网址  登陆到个人成绩的URL
course_url='http://zhjw.dlut.edu.cn/xkAction.do?actionType=6'
course_header={
  'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586',
  'referer':'http://zhjw.dlut.edu.cn/menu/s_main.jsp'
}

result = opener.open(course_url)
print result.read()

运行结果

Python模拟登陆实现代码

总结

其实对于模拟登陆而言,第一次的登陆就是为了获取那个cookie数据。然后通过我们创建的opener来完成接下来我们要进行的关键的进一步的操作。我们需要理解的就只是那个cookie的使用的流程就行了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的闭包实例详解
Aug 29 Python
python通过pil将图片转换成黑白效果的方法
Mar 16 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
Jul 27 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
Python中元组,列表,字典的区别
May 21 Python
利用python模拟sql语句对员工表格进行增删改查
Jul 05 Python
基于python OpenCV实现动态人脸检测
May 25 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
python实现统计文本中单词出现的频率详解
May 20 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
Python求两个字符串最长公共子序列代码实例
Mar 05 Python
Python tornado上传文件的功能
Mar 26 Python
Python 自动刷博客浏览量实例代码
Jun 14 #Python
python简单线程和协程学习心得(分享)
Jun 14 #Python
Python字符串处理实现单词反转
Jun 14 #Python
python3实现UDP协议的服务器和客户端
Jun 14 #Python
老生常谈Python基础之字符编码
Jun 14 #Python
python3实现TCP协议的简单服务器和客户端案例(分享)
Jun 14 #Python
Python之re操作方法(详解)
Jun 14 #Python
You might like
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
2015/10/21 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
js操作css属性实现div层展开关闭效果的方法
2015/05/11 Javascript
百度地图api如何使用
2015/08/03 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
微信小程序之数据双向绑定与数据操作
2017/05/12 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
JavaScript实现简单的图片切换功能(实例代码)
2020/04/10 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
Python数据类型之List列表实例详解
2019/05/08 Python
Django框架验证码用法实例分析
2019/05/10 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
2014新生大学四年计划书
2014/09/21 职场文书
六查六看剖析材料
2014/10/06 职场文书
社区活动总结
2015/02/04 职场文书
Python实现的扫码工具居然这么好用!
2021/06/07 Python
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
Python OpenCV实现图像模板匹配详解
2022/04/07 Python