使用Python中的cookielib模拟登录网站


Posted in Python onApril 09, 2015

前面简单提到了 Python 模拟登录的程序,但是没写清楚,这里再补上一个带注释的 Python 模拟登录的示例程序。简单说一下流程:先用cookielib获取cookie,再用获取到的cookie,进入需要登录的网站。

# -*- coding: utf-8 -*-

 # !/usr/bin/python
 
 import urllib2
 import urllib
 import cookielib
 import re 
 auth_url = 'http://www.nowamagic.net/'
 home_url = 'http://www.nowamagic.net/';
 # 登陆用户名和密码
 data={
   "username":"nowamagic",
   "password":"pass"
 }
 # urllib进行编码
 post_data=urllib.urlencode(data)
 # 发送头信息

 headers ={

   "Host":"www.nowamagic.net",
 "Referer": "http://www.nowamagic.net"
 }
 # 初始化一个CookieJar来处理Cookie

 cookieJar=cookielib.CookieJar()
 # 实例化一个全局opener

 opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))

 # 获取cookie
 req=urllib2.Request(auth_url,post_data,headers)
 result = opener.open(req)
 # 访问主页 自动带着cookie信息
 result = opener.open(home_url)
 # 显示结果
 print result.read()

再附带几个示例程序:

1. 使用已有的cookie访问网站

import cookielib, urllib2
 
 ckjar = cookielib.MozillaCookieJar(os.path.join('C:\Documents and Settings\tom\Application Data\Mozilla\Firefox\Profiles\h5m61j1i.default', 'cookies.txt')) 
 req = urllib2.Request(url, postdata, header)
 
 req.add_header('User-Agent', \
   'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')
 
 opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(ckjar) )
 
 f = opener.open(req)
 htm = f.read()
 f.close()

2. 访问网站获得cookie,并把获得的cookie保存在cookie文件中

import cookielib, urllib2
 
 req = urllib2.Request(url, postdata, header)
 req.add_header('User-Agent', \
   'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')
 
 ckjar = cookielib.MozillaCookieJar(filename)
 ckproc = urllib2.HTTPCookieProcessor(ckjar)
 
 opener = urllib2.build_opener(ckproc)
 
 f = opener.open(req)
 htm = f.read()
 f.close()
 
 ckjar.save(ignore_discard=True, ignore_expires=True)

3. 使用指定的参数生成cookie,并用这个cookie访问网站

import cookielib, urllib2
 
 cookiejar = cookielib.CookieJar()
 urlOpener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
 values = {'redirect':", 'email':'abc@abc.com',
      'password':'password', 'rememberme':", 'submit':'OK, Let Me In!'}
 data = urllib.urlencode(values)
 
 request = urllib2.Request(url, data)
 url = urlOpener.open(request)
 print url.info()
 page = url.read()
 
 request = urllib2.Request(url)
 url = urlOpener.open(request)
 page = url.read()
 print page
Python 相关文章推荐
Python中Collection的使用小技巧
Aug 18 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
Apr 01 Python
python实现爬取千万淘宝商品的方法
Jun 30 Python
Python使用pymysql小技巧
Jun 04 Python
Python内置模块logging用法实例分析
Feb 12 Python
pandas获取groupby分组里最大值所在的行方法
Apr 20 Python
python-str,list,set间的转换实例
Jun 27 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
对pandas的算术运算和数据对齐实例详解
Dec 22 Python
python 多线程对post请求服务器测试并发的方法
Jun 13 Python
Python数据分析pandas模块用法实例详解
Nov 20 Python
python画蝴蝶曲线图的实例
Nov 21 Python
列举Python中吸引人的一些特性
Apr 09 #Python
Python的Bottle框架的一些使用技巧介绍
Apr 08 #Python
在Python的框架中为MySQL实现restful接口的教程
Apr 08 #Python
简单介绍Python的轻便web框架Bottle
Apr 08 #Python
常见的在Python中实现单例模式的三种方法
Apr 08 #Python
分析Python的Django框架的运行方式及处理流程
Apr 08 #Python
给Python的Django框架下搭建的BLOG添加RSS功能的教程
Apr 08 #Python
You might like
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
Vue.js计算属性computed与watch(5)
2016/12/09 Javascript
vue配置多代理服务接口地址操作
2020/09/08 Javascript
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
python写的ARP攻击代码实例
2014/06/04 Python
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
解决uWSGI的编码问题详解
2017/03/24 Python
hmac模块生成加入了密钥的消息摘要详解
2018/01/11 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
pandas的排序和排名的具体使用
2019/07/31 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
全球最大最受欢迎的旅游社区:Tripadvisor
2017/11/03 全球购物
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
信息专业本科生个人的自我评价
2013/10/28 职场文书
餐厅执行经理岗位职责范本
2014/02/26 职场文书
化工操作工岗位职责
2014/04/29 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书
详解JavaScript的计时器和按钮效果设置
2022/02/18 Javascript