使用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实现ANN
Dec 20 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
Python之文字转图片方法
May 10 Python
Python pyinotify模块实现对文档的实时监控功能方法
Oct 13 Python
Django 创建/删除用户的示例代码
Jul 24 Python
Python基于WordCloud制作词云图
Nov 29 Python
pytorch实现建立自己的数据集(以mnist为例)
Jan 18 Python
Python使用configparser库读取配置文件
Feb 22 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
call在Python中改进数列的实例讲解
Dec 09 Python
python基于openpyxl生成excel文件
Dec 23 Python
Python3的进程和线程你了解吗
Mar 16 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+mysql 实现身份验证代码
2010/03/24 PHP
php检测useragent版本示例
2014/03/24 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
怎样在JavaScript里写一个swing把数据插入数据库
2012/12/10 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
深入理解Antd-Select组件的用法
2020/02/25 Javascript
python中文乱码的解决方法
2013/11/04 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
python中set()函数简介及实例解析
2018/01/09 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
python使用numpy中的size()函数实例用法详解
2021/01/29 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
Linux文件系统类型
2012/02/15 面试题
应届生法律求职信
2013/10/22 职场文书
超级礼物观后感
2015/06/15 职场文书
白银帝国观后感
2015/06/17 职场文书
庭外和解协议书
2016/03/23 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
python基础之模块的导入
2021/10/24 Python
JavaScript组合继承详解
2021/11/07 Javascript
解决Git推送错误non-fast-forward的方法
2022/06/25 Servers