使用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 01 Python
pytorch + visdom 处理简单分类问题的示例
Jun 04 Python
Django 连接sql server数据库的方法
Jun 30 Python
对Python中内置异常层次结构详解
Oct 18 Python
python 生成图形验证码的方法示例
Nov 11 Python
python根据url地址下载小文件的实例
Dec 18 Python
pyinstaller还原python代码过程图解
Jan 08 Python
python实现图像外边界跟踪操作
Jul 13 Python
关于python scrapy中添加cookie踩坑记录
Nov 17 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 Python
python 下划线的多种应用场景总结
May 12 Python
python中pandas对多列进行分组统计的实现
Jun 18 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 和 XML: 使用expat函数(一)
2006/10/09 PHP
php日历[测试通过]
2008/03/27 PHP
JavaScript框架(iframe)操作总结
2014/04/16 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
javascript 判断一个对象为数组的方法
2017/05/03 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
vue实现搜索功能
2019/05/28 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
一百行python代码将图片转成字符画
2021/02/19 Python
python制作抖音代码舞
2019/04/07 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
Python实现FTP文件传输的实例
2019/07/07 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
No7 Beauty美国官网:英国国民护肤品牌
2019/10/31 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
员工保密承诺书
2014/05/28 职场文书
大型公益活动策划方案
2014/08/20 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android