使用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中break语句的用法
May 14 Python
Python基于有道实现英汉字典功能
Jul 25 Python
深入理解Python中的内置常量
May 20 Python
python 中split 和 strip的实例详解
Jul 12 Python
解决python字典对值(值为列表)赋值出现重复的问题
Jan 20 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
解决python运行效率不高的问题
Jul 20 Python
django教程如何自学
Jul 31 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 Python
Python与C/C++的相互调用案例
Mar 04 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
php切割页面div内容的实现代码分享
2012/07/31 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
js利用与或运算符优先级实现if else条件判断表达式
2010/04/15 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
js选项卡的实现方法
2015/02/09 Javascript
浅谈EasyUI中编辑treegrid的方法
2015/03/01 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
js实现九宫格拼图小游戏
2017/02/13 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
elementUI select组件默认选中效果实现的方法
2019/03/25 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
Python的加密模块md5、sha、crypt使用实例
2014/09/28 Python
Python 26进制计算实现方法
2015/05/28 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
Python探索之SocketServer详解
2017/10/28 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
python 实现将list转成字符串,中间用空格隔开
2019/12/25 Python
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
自动化专业毕业生自荐信
2013/11/01 职场文书
机械电子工程专业推荐信范文
2013/11/20 职场文书
家佳咖啡店创业计划书
2013/12/27 职场文书
打架检讨书100字
2014/01/19 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
超市理货员岗位职责
2014/07/04 职场文书
个人四风问题原因分析及整改措施
2014/09/28 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python