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

  • 相关阅读:
    如何调用ActiveX网页中的JavaScript函数
    VC++开发的ActiveX如何加入安全机制,避免IE中提示“在此页上的ActiveX控件和本页上的其他部分的交互可能不安全,你想允许这种交互吗?”
    ActiveX多线程回调JavaScript
    JavaScript脚本如何访问VC++开发的ActiveX中的方法
    ActiveX异步回调JavaScript
    com/atl套间编程中如何实现定时invoke容器中的方法
    VC++开发的ActiveX如何通过JavaScript脚本和EOS应用交互
    thread wrapper
    最新Mysql中文帮助
    如何避免重复的http请求
  • 原文地址:https://www.cnblogs.com/houkai/p/3485986.html
Copyright © 2011-2022 走看看