使用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 24 Python
简介Django框架中可使用的各类缓存
Jul 23 Python
python简单实现刷新智联简历
Mar 30 Python
opencv python 2D直方图的示例代码
Jul 20 Python
python中的decimal类型转换实例详解
Jun 26 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
Jul 31 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 Python
Python txt文件如何转换成字典
Nov 03 Python
如何基于Python按行合并两个txt
Nov 03 Python
django中ImageField的使用详解
Dec 21 Python
对Pytorch 中的contiguous理解说明
Mar 03 Python
Python Pandas知识点之缺失值处理详解
May 11 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
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
jquery数据验证插件(自制,简单,练手)实例代码
2013/10/24 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
小程序开发基础之view视图容器
2018/08/21 Javascript
对angular 监控数据模型变化的事件方法$watch详解
2018/10/09 Javascript
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
python实现汽车管理系统
2018/11/30 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
纺织工程专业个人求职信范文
2014/01/27 职场文书
公司司机岗位职责
2014/02/07 职场文书
英语教师求职信
2014/06/16 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
单位同意报考证明
2015/06/17 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
Flask搭建一个API服务器的步骤
2021/05/28 Python
Redis基本数据类型Set常用操作命令
2022/06/01 Redis