博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cookie——小甜品
阅读量:7033 次
发布时间:2019-06-28

本文共 4230 字,大约阅读时间需要 14 分钟。

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, urllib2req = 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, urllib2req = 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 urimport urllib.parse as up#import http.cookiejar as cj#coding:gbkcharset='utf8'#组件信息#cookiejar = cj.CookieJar()#urlopener = ur.build_opener(ur.HTTPCookieProcessor(cookiejar))urlopener = ur.build_opener(ur.HTTPCookieProcessor())#jiayuan配置信息name='Yatere'uid='22017518'#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'}#用户登入datavalues = {
'password':'198398','name':'yin_kai@163.com'}#搜索datasearchdata={ 'sex':'f', 'work_location':'42', 'work_sublocation':'4201', 'min_age':'22', 'max_age':'26', 'min_height':'160', 'max_height':'180', 'education':'20', 'edu_more_than':'on', 'astro':'0', 'animal':'', 'bloodtype':'0', 'income':'0', 'house':'0', 'auto':'0', 'marriage':'1', 'children':'0', 'level':'0', 'industry':'0', 'company':'0', 'home_location':'42', 'home_sublocation':'4201', 'nation':'0', 'belief':'0', 'ques_love':'0', '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

转载地址:http://ytyal.baihongyu.com/

你可能感兴趣的文章
echats 饼状图
查看>>
简单的layui laydate时间控件的最大值最小值
查看>>
linux 系统下删除大文件
查看>>
Element-ui框架Tree树形控件切换高亮显示选中效果
查看>>
jse之一——认识java
查看>>
tomcat中的server.xml元素详解(转)
查看>>
垮系统对接数据处理日志
查看>>
ldconfig ldd
查看>>
内联元素及其特性 &块元素
查看>>
【洛谷P1104】生日
查看>>
八叶一刀流·七之型·无项目需求分析
查看>>
same-tree
查看>>
Memcached的安装与简单使用
查看>>
pythonchallenge--4
查看>>
〖Windows〗三星(SAMSUNG)905S3G-K07 安装Windows 7 过程分享
查看>>
git 忽略文件
查看>>
Android 开发之深入分析布局文件&又是“Hello World!”
查看>>
一道有趣的javascript小题
查看>>
《APUE》读书笔记-第十九章伪终端
查看>>
LeetCode - One Edit Distance
查看>>