使用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查询sqlite数据表的方法
May 08 Python
python提取页面内url列表的方法
May 25 Python
使用httplib模块来制作Python下HTTP客户端的方法
Jun 19 Python
Python解决八皇后问题示例
Apr 22 Python
Python工厂函数用法实例分析
May 14 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
Python实现微信消息防撤回功能的实例代码
Apr 29 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
Apr 27 Python
python实现图像高斯金字塔的示例代码
Dec 11 Python
基于tensorflow __init__、build 和call的使用小结
Feb 26 Python
opencv实现图像平移效果
Mar 24 Python
python可视化大屏库big_screen示例详解
Nov 23 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上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
PHP 第三节 变量介绍
2012/04/28 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
js 取时间差去掉周六周日实现代码
2012/12/25 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
vue.js的提示组件
2017/03/02 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
[02:11]完美世界DOTA2联赛10月28日赛事精彩集锦:来吧展示实力强劲
2020/10/29 DOTA
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
python3中dict(字典)的使用方法示例
2017/03/22 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
python学生信息管理系统(初级版)
2018/10/17 Python
python将字符串以utf-8格式保存在txt文件中的方法
2018/10/30 Python
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
Python logging模块handlers用法详解
2020/08/14 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
2020/12/01 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
大学生旷课检讨书
2014/01/22 职场文书
厨房管理计划书
2014/04/27 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
Java由浅入深通关抽象类与接口(上篇)
2022/04/26 Java/Android
nginx静态资源的服务器配置方法
2022/07/07 Servers