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之画圈还不简单吗?
Sep 20 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
Python实现以时间换空间的缓存替换算法
Feb 19 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
python做接口测试的必要性
Nov 20 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
python文件操作seek()偏移量,读取指正到指定位置操作
Jul 05 Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 Python
Python 实现一个简单的web服务器
Jan 03 Python
python中的unittest框架实例详解
Feb 05 Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 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 中文和编码判断代码
2010/05/16 PHP
PHP5中使用PDO连接数据库的方法
2010/08/01 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
2013/09/26 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
Laravel 5框架学习之用户认证
2015/04/09 PHP
百度地图API使用方法详解
2015/08/25 PHP
JS 实现图片直接下载示例代码
2013/07/22 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
jQuery将多条数据插入模态框的示例代码
2014/09/25 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
javascript生成大小写字母
2015/07/03 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
bootstrap中的 form表单属性role="form"的作用详解
2017/01/20 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
Vue.js用法详解
2017/11/13 Javascript
Angularjs中的$apply及优化使用详解
2018/07/02 Javascript
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
关于layui表单中按钮自动提交的解决方法
2019/09/09 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
《乌塔》教学反思
2014/02/17 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
导游词开场白
2015/01/31 职场文书
小学班级管理心得体会
2016/01/07 职场文书
三下乡活动心得体会
2016/01/23 职场文书
超级实用的公文标题大全!
2019/07/19 职场文书
Java9新特性对HTTP2协议支持与非阻塞HTTP API
2022/03/16 Java/Android