使用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中的输入和输出功能进行读取和写入的教程
Apr 14 Python
python fabric实现远程部署
Jan 05 Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 Python
Python实现确认字符串是否包含指定字符串的实例
May 02 Python
Python中 map()函数的用法详解
Jul 10 Python
Windows下PyCharm安装图文教程
Aug 27 Python
python实现嵌套列表平铺的两种方法
Nov 08 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
python字典key不能是可以是啥类型
Aug 04 Python
Python超简单容易上手的画图工具库推荐
May 10 Python
Python代码风格与编程习惯重要吗?
Jun 03 Python
Python必备技巧之函数的使用详解
Apr 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
linux php mysql数据库备份实现代码
2009/03/10 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
2015/02/12 PHP
Zend Framework教程之MVC框架的Controller用法分析
2016/03/07 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
js中的eventType事件及其浏览器支持性介绍
2013/11/29 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
2016/08/25 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
ES6新特性三: Generator(生成器)函数详解
2017/04/21 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
Python标准库defaultdict模块使用示例
2015/04/28 Python
Python实现栈的方法
2015/05/26 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
美国糖果店:Sugarfina
2019/02/21 全球购物
Java面试题及答案
2012/09/08 面试题
银行介绍信范文
2014/01/10 职场文书
食品安全责任书
2014/04/15 职场文书
求职信内容怎么写
2014/05/26 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python