使用Python中的cookielib模拟登录网站

yipeiwu_com7年前Python基础

前面简单提到了 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

相关文章

flask 实现token机制的示例代码

token 的生成 用token校验身份,是前后端交互的常用方式。 它有以下特性: 会失效 加密 可以根据它拿到用户的信息 生成方式( 内部配置的私钥+有效期+用户的...

详解Python数据分析--Pandas知识点

详解Python数据分析--Pandas知识点

本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘 1. 重复值的处理 利用drop_duplicates()函数删除数据表中重复多余的记录, 比如删除重复多余...

python实现bitmap数据结构详解

python实现bitmap数据结构详解

bitmap是很常用的数据结构,比如用于Bloom Filter中;用于无重复整数的排序等等。bitmap通常基于数组来实现,数组中每个元素可以看成是一系列二进制数,所有元素组成更大的二...

Python分析学校四六级过关情况

Python分析学校四六级过关情况

这段时间看了数据分析方面的内容,对Python中的numpy和pandas有了最基础的了解。我知道如果我不用这些技能做些什么的话,很快我就会忘记。想起之前群里发过一个学校的四六级成绩表,...

python每次处理固定个数的字符的方法总结

首先,来看每次处理一个字符的情况,可以有如下方法去实现:方法一:复制代码 代码如下:    >>> a='1234567' &n...