使用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使用心得之获得github代码库列表
Jun 25 Python
Python实现获取某天是某个月中的第几周
Feb 11 Python
Python实现运行其他程序的四种方式实例分析
Aug 17 Python
python 接口_从协议到抽象基类详解
Aug 24 Python
Python实现Logger打印功能的方法详解
Sep 01 Python
python http接口自动化脚本详解
Jan 02 Python
Python实现翻转数组功能示例
Jan 12 Python
谈谈python中GUI的选择
Mar 01 Python
python 实现二维列表转置
Dec 02 Python
python实现人脸签到系统
Apr 13 Python
python处理json数据文件
Apr 11 Python
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
Apr 14 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
中国第一家无线电行
2021/03/01 无线电
个人写的PHP验证码生成类分享
2014/08/21 PHP
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
js取得url地址参数实例
2013/02/22 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
JS清除选择内容的方法
2015/01/29 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
JAVA面试题 static关键字详解
2019/07/16 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
python字典基本操作实例分析
2015/07/11 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
Python正则抓取网易新闻的方法示例
2017/04/21 Python
解读python logging模块的使用方法
2018/04/17 Python
Python中求对数方法总结
2020/03/10 Python
keras K.function获取某层的输出操作
2020/06/29 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
美国Max仓库:Max Warehouse
2020/05/31 全球购物
高中毕业自我鉴定
2013/12/22 职场文书
挂科检讨书范文
2014/02/20 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
教师自荐信范文
2015/03/06 职场文书
企业文化学习心得体会
2016/01/21 职场文书
Python图像处理之图像拼接
2021/04/28 Python
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js