zoukankan      html  css  js  c++  java
  • cookie——小甜品

    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	omApplication DataMozillaFirefoxProfilesh5m61j1i.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='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'}
    
    #用户登入data
    values = {'password':'198398','name':'yin_kai@163.com'}
    
    
    #搜索data
    searchdata={
        '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

  • 相关阅读:
    小波变换的引入,通俗易懂
    Leetcode 437. Path Sum III
    Leetcode 113. Path Sum II
    Leetcode 112 Path Sum
    Leetcode 520 Detect Capital
    Leetcode 443 String Compression
    Leetcode 38 Count and Say
    python中的生成器(generator)总结
    python的random模块及加权随机算法的python实现
    leetcode 24. Swap Nodes in Pairs(链表)
  • 原文地址:https://www.cnblogs.com/houkai/p/3485986.html
Copyright © 2011-2022 走看看