python-40: 哪一个cookies才是咱们须要的

咱们已经获取了cookies,原本按照剧情发展,咱们下一步应该是使用这个cookies模拟登陆了,可是恰恰我是一个比较欠的人,我想要弄清楚咱们前面三种方法获取到的cookies是否是同样的,哦,不。其实应该是四种方法,那么咱们如今就来看看这四个cookies有什么区别吧

1. 从本地文件获取的cookies
    咱们前面说过,咱们找到的存放cookies的文件是一个叫 cookies.sqlite 的文件,这是一个数据库文件,我使用的linux系统要查看这个文件还须要安装别的程序,可是我想,既然这个是浏览器生成的文件,那么为了安全起见,它很 可能会对数据进行各类处理,等到调用的时候,再按照本身的规则来进行解码,若是是这样的话,我以为咱们没有必要去深刻的研究这个文件,并且它相对于其余两 种方法来讲也不是那么好用,因此对这种状况不予讨论
    
2. 使用浏览器的调试工具
    这里其实能够获取到的有两个cookies,这也就是我前面为何说一共有4个cookies的缘由
    我使用的是火狐浏览器,在爬虫的学习或者linux系统中,我以为这款浏览器相对好用一些,其余的浏览器或许也有这样的功能可是我不是很熟悉,因此这里 就以火狐浏览器来讲明,为了便于对比,我这里用百度首页做为例子,好了,首先登陆百度首页,而后按F12调出控制台,你会看到这样的界面
python

     咱们发现这里的cookies有不少的名称和内容,咱们暂且不考虑这里的cookies是否所有都要使用到,咱们先来看看另外一种获取cookies的方法,就在Cookies左边的网络选项卡里面
linux

 我 们能够看到这里有个响应头信息,也有请求头信息,咱们前面在讨论浏览网页的流程这个问题时提到,客户端向服务器端发送请求,而后服务器端响应请求并发回数据,咱们在网络选项卡这里看到有不少的 GET+xxxxxxxx之类的东西,可见,在咱们打开一个网站的时候,全部的网页内容并非一会儿所有显示出来的, 而是一部分一部份内容的请求响应而后发送接收数据,而后再把整个网页慢慢的显示出来。在请求头信息这里咱们也看到有一个cookies,那么这跟前面的cookies是否是同样的呢?
我对比了不少网站,发现有的是同样的有的是不同的,若是感兴趣的话能够本身去尝试一下sql

3. 经过代码获取的cookies
数据库

咱们运行上一节获取cookies的代码试试看有什么效果浏览器

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'

'''
 获取coolies
'''

import urllib2
import cookielib
#声明一个CookieJar对象实例来保存cookie
cookie = cookielib.CookieJar()
#利用urllib2库的HTTPCookieProcessor对象来建立cookie处理器
handler=urllib2.HTTPCookieProcessor(cookie)
#经过handler来构建opener
opener = urllib2.build_opener(handler)
#此处的open方法同urllib2的urlopen方法,也能够传入request
response = opener.open('http://www.baidu.com')
for item in cookie:
    print item.name+'='+item.value

咱们看看程序运行的结果安全


这个得出来的cookies值又更少了服务器

那么,除去咱们不讨论的第一种状况以外,一共还有三个cookies,那咱们须要使用的是哪一个呢,首先说使用代码获取的cookies,咱们编写爬虫确定是但愿网站作得越简单越好,可是做为网站的管理者来讲他们并不但愿这样,恶意的访问网站可能会形成服务器的卡顿甚至崩溃,或者是用户的隐私数据被窃取,因此网站的机制也在不断变化进步,而咱们使用源码获取cookies就会受到这些限制,我在使用一样的代码获取360doc网上图书馆的cookies的时候,就看到了urllib2.HTTPError: HTTP Error 403: Forbidden 这样的提示,因此说使用源码获取的cookies是有必定的条件的cookie

那就只剩下两个了,我没法解释为何浏览器能够看到两个cookies,因此我一个一个的去试验了,结果发现,使用网络选项卡请求头信息里面的cookies能够访问网站而另外一个则不能,其中或许涉及到浏览器的设计我如今还不能理解,只能使用一个比较笨的方法,若是后面有时间,我会将这个内容补上
网络

相关文章
相关标签/搜索