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使用循环实现批量创建文件夹示例
Mar 25 Python
Django自定义分页效果
Jun 27 Python
Python3中的json模块使用详解
May 05 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
Dec 14 Python
Python中使用遍历在列表中添加字典遇到的坑
Feb 27 Python
python根据txt文本批量创建文件夹
Dec 08 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
Python 实现一个手机号码获取妹子名字的功能
Sep 25 Python
python Pillow图像处理方法汇总
Oct 16 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 Python
用Python可视化新冠疫情数据
Jan 18 Python
如何Python使用re模块实现okenizer
Apr 30 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程序中的常见漏洞进行攻击
2006/10/09 PHP
获取远程文件大小的php函数
2010/01/11 PHP
PHP的博客ping服务代码
2012/02/04 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
2019/10/21 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
javascript使用递归算法求两个数字组合功能示例
2017/01/03 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
vue登录注册实例详解
2019/09/14 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
[01:14:35]DOTA2上海特级锦标赛B组资格赛#1 Alliance VS Fnatic第一局
2016/02/26 DOTA
自己编程中遇到的Python错误和解决方法汇总整理
2015/06/03 Python
Python基础篇之初识Python必看攻略
2016/06/23 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
python生成随机红包的实例写法
2019/09/02 Python
python绘图模块之利用turtle画图
2021/02/12 Python
SKECHERS斯凯奇中国官网:来自美国的运动休闲品牌
2018/11/14 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
应届生幼儿园求职信
2013/11/12 职场文书
大学生找工作推荐信范文
2013/11/28 职场文书
经济贸易专业自荐信
2014/06/11 职场文书
云冈石窟导游词
2015/02/04 职场文书
黄河绝恋观后感
2015/06/08 职场文书
小学数学教学反思范文
2016/02/16 职场文书
Python实现位图分割的效果
2021/11/20 Python
Win11快速关闭所有广告推荐
2022/04/19 数码科技