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获取当前时间的方法
Jan 14 Python
python统计日志ip访问数的方法
Jul 06 Python
Python的条件语句与运算符优先级详解
Oct 13 Python
python中文件变化监控示例(watchdog)
Oct 16 Python
Python定义二叉树及4种遍历方法实例详解
Jul 05 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
Python values()与itervalues()的用法详解
Nov 27 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
利用Vscode进行Python开发环境配置的步骤
Jun 22 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 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将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
PHP操作MongoDB GridFS 存储文件的详解
2013/06/20 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
php实现查询功能(数据访问)
2017/05/23 PHP
javascript学习随笔(使用window和frame)的技巧
2007/03/08 Javascript
Prototype使用指南之selector.js说明
2008/10/26 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
左侧是表头的JS表格控件(自写,网上没有的)
2013/06/04 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
微信JSAPI支付操作需要注意的细节
2017/01/10 Javascript
获取url中用&隔开的参数实例(分享)
2017/05/28 Javascript
Javascript之高级数组API的使用实例
2019/03/08 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
JavaScript enum枚举类型定义及使用方法
2020/05/15 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
python list删除元素时要注意的坑点分享
2018/04/18 Python
基于pandas将类别属性转化为数值属性的方法
2018/07/25 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
Python list与NumPy array 区分详解
2019/11/06 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
Python如何实现邮件功能
2020/05/27 Python
python中re模块知识点总结
2021/01/17 Python
基于ccs3的timeline时间线实现方法
2020/04/30 HTML / CSS
应届生护士求职信
2013/11/01 职场文书
规划编制实施方案
2014/03/15 职场文书
合作协议书模板2014
2014/09/26 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
大学生毕业评语
2014/12/31 职场文书
七年级英语教学反思
2016/02/15 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers