使用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 相关文章推荐
zbar解码二维码和条形码示例
Feb 07 Python
Python单元测试框架unittest简明使用实例
Apr 13 Python
Python基础教程之正则表达式基本语法以及re模块
Mar 25 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 Python
Python类继承和多态原理解析
Feb 05 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
python用tkinter实现一个gui的翻译工具
Oct 26 Python
Python OpenCV快速入门教程
Apr 17 Python
Python绘制分类图的方法
Apr 20 Python
python如何读取.mtx文件
Apr 22 Python
python控制台打印log输出重复的解决方法
May 14 Python
Pycharm 如何设置HTML文件自动补全代码或标签
May 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
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
php array_walk_recursive 使用自定的函数处理数组中的每一个元素
2016/11/16 PHP
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
jQuery中:empty选择器用法实例
2014/12/30 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
JavaScript使用表单元素验证表单的示例代码
2019/08/20 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
Python实现的检测网站挂马程序
2014/11/30 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
python负载均衡的简单实现方法
2018/02/04 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
手工制作的音乐盒:Music Box Attic
2019/09/05 全球购物
幼师自荐信范文
2013/10/06 职场文书
如何写好自荐信
2014/04/07 职场文书
党支部综合考察材料
2014/05/19 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
新农村建设典型材料
2014/05/31 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
趣味运动会赞词
2015/07/22 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android