Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明。Cookie英文意指饼干,不过在电脑术语中它可不像饼干那么简单。简单的说,Cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机。当你在浏览网站的时候,Web服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都记录下来。当下次你再光临同一个网站,Web服务器会先看看有没有它上次留下的Cookie资料,有的话,就会依据Cookie里的内容来判断使用者,送出特定的网页内容给你。

Cookie的使用很普遍,许多提供个人化服务的网站,都是利用Cookie来辨认使用者,以方便送出使用者量身定做的内容。Cookie中记载的资料相有限,Cookie一般认为是安全的。网站不可能经由Cookie获得你的E-mail地址或是其它私人资料,更没有办法透过Cookie来存取你的计算机。但是如果你实在不喜欢Web服务器乱丢饼干(Cookie)到你家,当然可以让浏览器拒绝网站存放Cookie到你的计算机。只要在IE的“工具”菜单下选择“Intertnet选项”的“安全”,按自定义级别,将Cookie部分设为关闭,按确定,关闭浏览器,再重新启动浏览器即可。当你关闭Cookie之后,很多网站的个人化服务功能很可能也不能再使用了。

Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。

尽管cookie没有病毒那么危险,但它仍包含了一些敏感信息:用户名,计算机名,使用的浏览器和曾经访问的网站。用户不希望这些内容泄漏出去,尤其是当其中还包含有私人信息的时候。Cookie中的内容大多数经过了加密处理,因此在我们看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。

使用已有的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(os.path.join(’C:\Documents and Settings\tom\Application Data\Mozilla\Firefox\Profiles\h5m61j1i.default’, ‘cookies.txt’))
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(ckjar) ) f = opener.open(req)
htm = f.read()
f.close()

访问网站获得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)

使用指定的参数生成cookie,并用这个cookie访问网站

import urllib.request as ur
import urllib.parse as up
#import http.cookiejar as cj
#coding:gbk charset='utf8' #组件信息
#cookiejar = cj.CookieJar()
#urlopener = ur.build_opener(ur.HTTPCookieProcessor(cookiejar))
urlopener = ur.build_opener(ur.HTTPCookieProcessor()) #jiayuan配置信息
name='Yatere'
uid='' #http头
headers={'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)'}
seachhead={'User-Agent':'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)',
'Referer':'http://search.jiayuan.com/',
'Origin':'http://search.jiayuan.com'} #用户登入data
values = {'password':'','name':'yin_kai@163.com'} #搜索data
searchdata={
'sex':'f',
'work_location':'',
'work_sublocation':'',
'min_age':'',
'max_age':'',
'min_height':'',
'max_height':'',
'education':'',
'edu_more_than':'on',
'astro':'',
'animal':'',
'bloodtype':'',
'income':'',
'house':'',
'auto':'',
'marriage':'',
'children':'',
'level':'',
'industry':'',
'company':'',
'home_location':'',
'home_sublocation':'',
'nation':'',
'belief':'',
'ques_love':'',
'avatar':'on',
'save_name':''} #post数据转换程序
def data(values):
data=up.urlencode(values).encode()
return data #访问指定页面
def geturlcon(url,data=None,headers=headers):
request = ur.Request(url,data,headers)
url = urlopener.open(request)
page=url.read().decode('utf8','ignore')
return page #检测是否登入成功
def checklogin(page):
if page.find(name)>0:
return True
elif page.find(uid)>0:
return True
else:
return False #访问登陆页面(获得cookie)
url1='http://login.jiayuan.com/dologin.php'
geturlcon(url1,data(values),headers) #登入后访问其他页面
url2='http://www.jiayuan.com/usercp/'
page=geturlcon(url2)
if checklogin(page):
print ('登入成功')
else:
print ('登入失败') url3='http://profile.jiayuan.com/14214171'
page=geturlcon(url3) if checklogin(page):
print (url3,'登入成功')
else:
print ('登入失败') #查看搜索结果
url3='http://search.jiayuan.com/result.php?t=10&m=1'
page=geturlcon(url3,data(searchdata),seachhead) if checklogin(page):
print (url3,'登入成功')
else:
print ('登入失败')

cookielib用于读取、保存cookie;URLlib2中的HTTPcookieProcessor()建立cookie处理器,urllib2中的build_opener()根据cookie处理器建立网页打开器,urllib2中Request()构建请求,open()打开器执行请求。另外,urllib2中installopener()可以把打开器加载到urllib2中,在Python3.0后,urllib2整合到了urllib中即:urllib.request

cookie——小甜品的更多相关文章

  1. Cookie小案例-----记住浏览过的商品记录

    Cookie小案例------记住浏览过的商品记录 我们知道,这个功能在电商项目中非经常见.这里处理请求和页面显示都是由servlet实现,主要是为了体现cookie的作用, 实现功能例如以下: 1, ...

  2. cookie小栗子-实现简单的身份验证

    关于Cookie Cookie是一种能够让网站Web服务器把少量数据储存到客户端的硬盘或内存里,或是从客户端的硬盘里读取数据的一种技术. 用来保存客户浏览器请求服务器页面的请求信息,可以在HTTP返回 ...

  3. 左手Cookie“小甜饼”,右手Web Storage

    目录 1. Web Storage 2. Cookie机制 3. 二者的联系与区别 1.Web Storage 1.1 概述 Web Storage是HTML5提供的一种新的浏览器端数据储存机制,它提 ...

  4. cookie小析

    cookie用于存储数据,当用户访问了某个网站(网页)时,我们就可以通过cookie来向访问者电脑上存储数据1.不同的浏览器存放的cookie位置不同,也不能通用2.cookie的存储是以域名的形式进 ...

  5. 20160328 javaweb Cookie 小练习

    利用cookie实现历史记录浏览: 由于是简单演示,所以直接用javabean 取代数据库了 数据存储类: package com.dzq.dao; import java.util.*; impor ...

  6. Javascript Cookie小插件

    var ManagerCookie = function(){ //添加cookie function addCookie(key,value,time,path){ key = encodeURI( ...

  7. 31、cookie小test

    请尽量使用JQuery进行代码编写,需求如下: 1.  页面初始化样式如图 2. 顶部input框中输入内容,按下回车enter键后,“正在进行” 列表中加入该条内容.   3. 顶部input框中输 ...

  8. Session & Cookie小知识~

    Cookie 一个HTTP cookie的(也称为网络Cookie,互联网的cookie,浏览器cookie,或者干脆饼干)是一小块从发送的数据的网站用户的并存储在用户的计算机上的网页浏览器,而用户浏 ...

  9. cookie小细节

    设置cookie时,不像设置session,可以马上生效,它的生效时间是下一次请求页面.

随机推荐

  1. jQuery之ajax实现篇

    jQuery的ajax方法非常好用,这么好的东西,你想拥有一个属于自己的ajax么?接下来,我们来自己做一个简单的ajax吧. 实现功能 由于jq中的ajax方法是用了内置的deferred模块,是P ...

  2. 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  3. $.extend()的实现源码 --(源码学习1)

    目标: $.extend({         add:function(a,b){             return a + b;         }     }) console.log($.a ...

  4. mybatis_基础篇

    一.认识mybatis: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改 ...

  5. 几个有趣的WEB设备API 前端提高B格必备(一)——电池状态&震动api

    受到同事启发,突然发现了几个有趣又实用的web api,没想到前端还有这么多有趣的东西可以玩~~简直过分. 1.电池状态API navigator.getBattery():这个api返回的是一个pr ...

  6. nodejs利用ajax实现网页无刷新上传图片

    nodejs利用ajax实现网页无刷新上传图片 标签(空格分隔): nodejs 通常情况下上传图片是要通过提交form表单来实现的,但是这又不可避免的产生了网页转. 利用ajax技术和FormDat ...

  7. iOS架构一个中型普通App的一些经验总结

    这一版比较完善的的App终于提交审核了.有时间写写自己的一些经验的总结了.自己主导的从0到比较成型的app到目前来说也只有两个,但是其中的很多东西都是大同小异.基本上是想到了什么就写什么,感觉写的不到 ...

  8. css样式之border-image

    border-image-source 属性设置边框的图片的路径[none | <image>] div { border: 20px solid #000; border-image-s ...

  9. Sass之坑Compass编译报错

    前段时间在使用Compass时遇到了其为难处理的一个坑,现记录到博客希望能帮助到各位. 一.问题: 利用Koala或者是gulp编译提示如下,截图为koala编译提示错误: 二.解决办法 从问题截图上 ...

  10. Spark-shell和Spark-Submit的使用

    Spark-shell有两种使用方式: 1:直接Spark-shell 会启动一个SparkSubmit进程来模拟Spark运行环境,是一个单机版的. 2:Spark-shell --master S ...