In [2]:
import requests

这里stream=True的好处是,它首先只下载headers,直到我们调用req.content才去下载网页的内容


In [71]:
url='https://www.propertyvalue.com.au/?op=myrp_widgets.freemiumInvestorSLAS.singleLineSearchHandler&subop=getSuggestionList&searchCategories=1%2C2%2C3%2C4&searchString=3%20taggerty%20street%20ngunnawal&maxSuggestionResults=5&_=1490747216388'

In [17]:
header={'Content-Type':'text/html','User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0'}

In [ ]:


In [73]:
req=requests.get(url,headers=header,stream=True)

In [74]:
print(req.headers)


{'Content-Type': 'text/html', 'Cache-Control': 'no-cache', 'Connection': 'close', 'Content-Length': '676', 'X-Iinfo': '9-10658135-0 0NNN RT(1490746256598 41) q(0 -1 -1 -1) r(0 -1) B12(4,316,0) U18', 'Set-Cookie': 'visid_incap_488260=OOiYXnFCRx+LnteyrLGHlJD72lgAAAAAQUIPAAAAAADjqK9hvXG/ADFWKqtdm+iI; expires=Wed, 28 Mar 2018 12:16:29 GMT; path=/; Domain=.propertyvalue.com.au, incap_ses_136_488260=QtdLTtTi03Uqy6hcNyzjAZD72lgAAAAA/vsx961mBF6DpUaN0I165Q==; path=/; Domain=.propertyvalue.com.au'}

In [75]:
print(req.content)


b'<html style="height:100%"><head><META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"><meta name="format-detection" content="telephone=no"><meta name="viewport" content="initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"></head><body style="margin:0px;height:100%"><iframe src="/_Incapsula_Resource?CWUDNSAI=24&xinfo=9-10658135-0 0NNN RT(1490746256598 41) q(0 -1 -1 -1) r(0 -1) B12(4,316,0) U18&incident_id=136001030040424314-105046898545002105&edet=12&cinfo=04000000" frameborder=0 width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 136001030040424314-105046898545002105</iframe></body></html>'

In [35]:
print(req.text)


<html style="height:100%"><head><META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW"><meta name="format-detection" content="telephone=no"><meta name="viewport" content="initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"></head><body style="margin:0px;height:100%"><iframe src="/_Incapsula_Resource?CWUDNSAI=24&xinfo=10-15051973-0 0NNN RT(1490744759371 44) q(0 -1 -1 -1) r(0 -1) B12(4,316,0) U18&incident_id=136001030040424314-150763015774930554&edet=12&cinfo=04000000" frameborder=0 width="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessful. Incapsula incident ID: 136001030040424314-150763015774930554</iframe></body></html>

In [2]:
url='http://baike.baidu.com/item/ssl'

In [10]:
req=requests.get(url,stream=True)

In [25]:
c=req.content

In [26]:
type(c)


Out[26]:
bytes

In [28]:
print(c.decode('utf-8'))


<!DOCTYPE html>
<!--STATUS OK-->
<html>



<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="referrer" content="always" />
<meta name="description" content="SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。...">
<title>ssl_百度百科</title>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="icon" sizes="any" mask href="//www.baidu.com/img/baidu.svg">

<meta name="keywords" content="ssl SSL协议 ssl解析 ssl提供服务 ssl服务器类型 ssl工作流程 sslSSL的体系结构 sslSSL纪录协议 sslSSL的会话状态 sslhttps介绍 ssl应用">
<meta name="image" content="http://baike.bdimg.com/cms/static/baike.png">
<script type="text/javascript">
  // 配置 PD 监控。
  window.alogObjectConfig = {
    product: '103',
    page: '103_1',
    speed: {
      sample: '0.008'
    },
    monkey: {
      sample: '1',
      hid: '1533'
    },
    exception: { 
      sample: '0.004'
    },
    feature: {
      sample: '0.004'
    },
    csp: {
      sample: '0.008',
      'default-src': [
        {match: '*.baidu.com,*.bdimg.com,localhost', target: 'Accept'},
        {match: '*', target: 'Accept,Warn'}
      ]
    }
  };

  void function(a,b,c,d,e,f,g){a.alogObjectName=e,a[e]=a[e]||function(){(a[e].q=a[e].q||[]).push(arguments)},a[e].l=a[e].l||+new Date,d="https:"===a.location.protocol?"https://fex.bdstatic.com"+d:"http://fex.bdstatic.com"+d;var h=!0;if(a.alogObjectConfig&&a.alogObjectConfig.sample){var i=Math.random();a.alogObjectConfig.rand=i,i>a.alogObjectConfig.sample&&(h=!1)}h&&(f=b.createElement(c),f.async=!0,f.src=d+"?v="+~(new Date/864e5)+~(new Date/864e5),g=b.getElementsByTagName(c)[0],g.parentNode.insertBefore(f,g))}(window,document,"script","/hunter/alog/alog.min.js","alog"),void function(){function a(){}window.PDC={mark:function(a,b){alog("speed.set",a,b||+new Date),alog.fire&&alog.fire("mark")},init:function(a){alog("speed.set","options",a)},view_start:a,tti:a,page_ready:a}}();
  void function(n){var o=!1;n.onerror=function(n,e,t,c){var i=!0;return!e&&/^script error/i.test(n)&&(o?i=!1:o=!0),i&&alog("exception.send","exception",{msg:n,js:e,ln:t,col:c}),!1},alog("exception.on","catch",function(n){alog("exception.send","exception",{msg:n.msg,js:n.path,ln:n.ln,method:n.method,flag:"catch"})})}(window);
</script>
<meta name="csrf-token" content="">

<!--[if lte IE 9]>
<script>
    (function() {
      var e = "abbr,article,aside,audio,canvas,datalist,details,dialog,eventsource,figure,footer,header,hgroup,mark,menu,meter,nav,output,progress,section,time,video".split(","),
        i = e.length;
      while (i--) {
        document.createElement(e[i]);
      }
    })();
  </script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/pkg/wiki-lemma_810727b.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-common/pkg/wiki-common-base_b4e62b7.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-common/widget/component/userbar/userbar_10e138c.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-common/widget/component/searchbar/searchbar_main_f9c7c20.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/pkg/wiki-lemma-module_1dc9f64.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-common/widget/component/navbar/navbar_0697c78.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/tools/announcement/announcement_b0d7681.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-common/widget/component/unameFiller/unameFiller_d631c34.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/tools/label/label_a444f79.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/tools/newSideShare/sideShare_8eb5f97.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/tools/video/pageMask/pageMask_ff9a193.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-common/widget/component/userCard/userCard_2402f1f.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/lemma_content/mainContent/mainContent_99d5277.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/lemma_content/mainContent/lemmaRelation/lemmaRelation_9f629f5.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/lemma_content/configModule/zhixin/zhixin_1c34583.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/lemma_content/configModule/sideAuth/sideAuth_6f2b031.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-common/widget/component/footer/footer_main_eb7bd79.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/tools/searchHeader/toolButtons/toolButtons-o_4e0bd59.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/tools/searchHeader/toolButtons/userInfo-o_1780f17.css"/><link rel="stylesheet" type="text/css" href="http://baike.bdimg.com/static/wiki-lemma/widget/tools/searchHeader/searchHeader-o_e786bfb.css"/></head>

<script type="text/javascript">
    alog('speed.set', 'ht', +new Date);
</script>

<body class="wiki-lemma normal">



<div class="header-wrapper">
<ul class="wgt-userbar">
<li>
<a href="http://www.baidu.com/">百度首页</a>
</li>
</ul>
<div class="header">
<div class="layout">
<div class="wgt-searchbar wgt-searchbar-main cmn-clearfix">
<div class="logo-container">
<a class="logo cmn-inline-block" title="到百科首页" href="/">
<span class="cmn-baike-logo">
<em class="cmn-icon cmn-icons cmn-icons_logo-bai"></em>
<em class="cmn-icon cmn-icons cmn-icons_logo-du"></em>
<em class="cmn-icon cmn-icons cmn-icons_logo-baike"></em>
</span>
</a>
</div>
<div class="search">
<div class="nav">
<a href="http://news.baidu.com/" nslog="normal" nslog-type="10080001" data-href="http://news.baidu.com/ns?tn=news&cl=2&rn=20&ct=1&fr=bks0000&ie=utf-8&word=">新闻</a>
<a href="http://www.baidu.com/" nslog="normal" nslog-type="10080001" data-href="http://www.baidu.com/s?ie=utf-8&fr=bks0000&wd=">网页</a>
<a href="http://tieba.baidu.com/" nslog="normal" nslog-type="10080001" data-href="http://tieba.baidu.com/f?ie=utf-8&fr=bks0000&kw=">贴吧</a>
<a href="http://zhidao.baidu.com/" nslog="normal" nslog-type="10080001" data-href="http://zhidao.baidu.com/search?pn=0&&rn=10&lm=0&fr=bks0000&word=">知道</a>
<a href="http://music.baidu.com/" nslog="normal" nslog-type="10080001" data-href="http://music.baidu.com/search?f=ms&ct=134217728&ie=utf-8&rn=&lm=-1&pn=30fr=bks0000&key=">音乐</a>
<a href="http://image.baidu.com/" nslog="normal" nslog-type="10080001" data-href="http://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=">图片</a>
<a href="http://v.baidu.com/" nslog="normal" nslog-type="10080001" data-href="http://v.baidu.com/v?ct=301989888&rn=20&pn=0&db=0&s=22&ie=utf-8&fr=bks0000&word=">视频</a>
<a href="http://map.baidu.com/" nslog="normal" nslog-type="10080001" data-href="http://map.baidu.com/m?ie=utf-8&fr=bks0000&word=">地图</a>
<a class="baike" nslog="normal" nslog-type="10080001" >百科</a>
<a href="http://wenku.baidu.com/" nslog="normal" nslog-type="10080001" data-href="http://wenku.baidu.com/search?lm=0&od=0&ie=utf-8&fr=bks0000&word=">文库</a>
</div>
<div class="form">
<form id="searchForm" action="/search/word" method="GET" target="_self">
<input id="query" nslog="normal" nslog-type="10080005" name="word" type="text" autocomplete="off" autocorrect="off" value="ssl" /><button id="search" nslog="normal" nslog-type="10080002" type="button">进入词条</button><button id="searchLemma" nslog="normal" nslog-type="10080003" type="button">搜索词条</button><a class="help" nslog="normal" nslog-type="10080004" href="/help" target="_blank">帮助</a>
</form>
<form id="searchEnterForm" action="/search/word" method="GET" target="_self">
<input id="searchEnterWord" name="word" type="hidden" />
<input name="sefr" type="hidden" value="cr" />
</form>
<form id="searchQueryForm" action="/search/word" method="GET" target="_self">
<input id="searchQueryWord" name="word" type="hidden" />
<input name="sefr" type="hidden" value="enterbtn" />
</form>
<form id="searchLemmaForm" action="/search" method="GET" target="_self">
<input id="searchLemmaQuery" name="word" type="hidden" />
<input name="pn" type="hidden" value="0" />
<input name="rn" type="hidden" value="0" />
<input name="enc" type="hidden" value="utf8" />
<input name="sefr" type="hidden" value="sebtn" />
</form>
<ul id="suggestion" class="suggestion">
<div class="sug"></div>
<li class="extra">
<span id="close" nslog="normal" nslog-type="10080006" >关闭</span>
</li>
</ul>
</div>
</div>
</div>
<div class="declare-wrap" id="J-declare-wrap">
<div class="declare" id="J-declare">声明:百科词条人人可编辑,词条创建和修改均免费,绝不存在官方及代理商付费代编,请勿上当受骗。<a class="declare-details" target="_blank" href="/common/declaration">详情>></a>
<div class="close-btn" id="J-declare-close">
<em class="cmn-icon cmn-icons cmn-icons_close"></em>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="navbar-wrapper">
<div class="wgt-navbar">
<div class="navbar-bg">
<div class="navbar-bg-top">
<div class="navbar-content layout">
<div class="navbar-content-box">
<dl class="index ">
<dt><a href="/">首页</a></dt>
</dl>
<dl class="cat ">
<dt><a>分类</a></dt>
<dd>
<div><a href="/art" target="_blank" class="art">艺术</a></div>
<div><a href="/science" target="_blank" class="technology">科学</a></div>
<div><a href="/ziran" target="_blank">自然</a></div>
<div><a href="/wenhua" target="_blank">文化</a></div>
<div><a href="/dili" target="_blank">地理</a></div>
<div><a href="/shenghuo" target="_blank">生活</a></div>
<div><a href="/shehui" target="_blank">社会</a></div>
<div><a href="/renwu" target="_blank">人物</a></div>
<div><a href="/jingji" target="_blank">经济</a></div>
<div><a href="/tiyu" target="_blank">体育</a></div>
<div><a href="/lishi" target="_blank">历史</a></div>
</dd>
</dl>
<dl class="special ">
<dt><a>特色百科</a></dt>
<dd>
<div><a href="/calendar/" target="_blank">历史上的今天</a></div>
<div><a href="/museum/" target="_blank">数字博物馆</a></div>
<div><a href="/item/史记·2016?fr=navbar" target="_blank">史记·2016</a></div>
<div><a href="/city/" target="_blank">城市百科</a></div>
<div><a href="/operation/worldwar2" target="_blank">二战百科</a></div>
<div><a href="/feiyi?fr=dhlfeiyi" target="_blank">非遗百科</a></div>
</dd>
</dl>
<dl class="user" >
<dt><a>用户</a></dt>
<dd>
<div><a href="/kedou/" target="_blank">蝌蚪团</a></div>
<div><a href="/event/ranmeng/" target="_blank">燃梦计划</a></div>
<div><a href="/task/" target="_blank">百科任务</a></div>
<div><a href="/mall/" target="_blank">百科商城</a></div>
</dd>
</dl>
<dl class="cooperation" >
<dt><a>权威合作</a></dt>
<dd>
<div><a href="/operation/cooperation#joint" target="_blank">合作模式</a></div>
<div><a href="/operation/cooperation#issue" target="_blank">常见问题</a></div>
<div><a href="/operation/cooperation#connection" target="_blank">联系方式</a></div>
</dd>
</dl>
<dl class="mobile" >
<dt><a>手机百科</a></dt>
<dd>
<div><a href="/m#wap" target="_blank">网页版</a></div>
</dd>
</dl>
<div class="usercenter">
<div><a href="/usercenter" target="_blank"><em class="cmn-icon cmn-icons cmn-icons_navbar-usercenter"></em>个人中心</a></div>
</div></div>
</div>
</div>
</div>
</div>
</div>


<div class="body-wrapper">
<div class="before-content">
</div>
<div class="content-wrapper">
<div class="content">
<div class="personal-content">
</div>
<div class="main-content">
<a class="posterFlag expert-icon " href="javascript:;" title="权威专家认证词条"></a>
<div class="top-tool">
<a class="add-sub-icon" href="javascript:;" title="添加义项" nslog-type="50000101"></a>
<a href="/divideload/ssl" title="拆分词条" target="_blank" class="split-icon" style="display:none;" nslog-type="50000104"></a>
<div class="top-collect" nslog="area" nslog-type="50000102">
<span class="collect-text">收藏</span>
<div class="collect-tip">查看<a href="/uc/favolemma" target="_blank">我的收藏</a></div>
</div>
<a href="javascript:void(0);" id="j-top-vote" class="top-vote" nslog-type="10060801">
<span class="vote-count">0</span>
<span class="vote-tip">有用+1</span>
<span class="voted-tip">已投票</span>
</a><div class="bksharebuttonbox top-share">
<a class="top-share-icon" nslog-type="9067">
<span class="share-count" id="j-topShareCount">0</span>
</a>
<div class="new-top-share" id="top-share">
<ul class="top-share-list">
<li class="top-share-item">
<a class="share-link bds_qzone"  href="javascript:void(0);" nslog-type="10060501">
<em class="cmn-icon cmn-icons cmn-icons_logo-qzone"></em>
</a>
</li>
<li class="top-share-item">
<a class="share-link bds_tsina" href="javascript:void(0);" nslog-type="10060701">
<em class="cmn-icon cmn-icons cmn-icons_logo-sina-weibo"></em>
</a>
</li>
<li class="top-share-item">
<a class="bds_wechat"  href="javascript:void(0);" nslog-type="10060401">
<em class="cmn-icon cmn-icons cmn-icons_logo-wechat"></em>
</a>
</li>
<li class="top-share-item">
<a class="share-link bds_tqq"  href="javascript:void(0);" nslog-type="10060601">
<em class="cmn-icon cmn-icons cmn-icons_logo-qq"></em>
</a>
</li>
</ul>
</div>
</div>
</div>
<div style="width:0;height:0;clear:both"></div><dl class="lemmaWgt-lemmaTitle lemmaWgt-lemmaTitle-">
<dd class="lemmaWgt-lemmaTitle-title">
<h1 >ssl</h1>
<a href="javascript:;" class="edit-lemma cmn-btn-hover-blue cmn-btn-28 j-edit-link"><em class="cmn-icon wiki-lemma-icons wiki-lemma-icons_edit-lemma"></em>编辑</a>
<a class="lock-lemma" target="_blank" href="/view/10812319.htm" title="锁定"><em class="cmn-icon wiki-lemma-icons wiki-lemma-icons_lock-lemma"></em>锁定</a>
</dd>
</dl><div class="authorityListPrompt">
<div class="main-content-zj">
本词条由<a href="http://www.cast.org.cn" target="_blank" class="nslog:7175">“科普中国”百科科学词条编写与应用工作项目</a>
审核
。</div>
</div>
<div class="promotion-declaration">
</div><div class="lemma-summary" label-module="lemmaSummary">
<div class="para" label-module="para">SSL(Secure Sockets Layer <a target=_blank href="/view/525499.htm">安全套接层</a>),及其继任者<a target=_blank href="/view/831898.htm">传输层安全</a>(Transport Layer Security,TLS)是为<a target=_blank href="/view/538641.htm">网络通信</a>提供安全及<a target=_blank href="/view/702953.htm">数据完整性</a>的一种安全协议。TLS与SSL在<a target=_blank href="/view/239605.htm">传输层</a>对网络连接进行加密。</div>
</div>
<div class="configModuleBanner">
</div><div class="basic-info cmn-clearfix">
<dl class="basicInfo-block basicInfo-left">
<dt class="basicInfo-item name">中文名</dt>
<dd class="basicInfo-item value">
<a target=_blank href="/view/525499.htm">安全套接层</a>
</dd>
<dt class="basicInfo-item name">外文名</dt>
<dd class="basicInfo-item value">
Secure Sockets Layer
</dd>
</dl><dl class="basicInfo-block basicInfo-right">
<dt class="basicInfo-item name">缩&nbsp;&nbsp;&nbsp;&nbsp;写</dt>
<dd class="basicInfo-item value">
SSL
</dd>
<dt class="basicInfo-item name">应&nbsp;&nbsp;&nbsp;&nbsp;用</dt>
<dd class="basicInfo-item value">
在<a target=_blank href="/view/239605.htm">传输层</a>对网络连接进行加密
</dd>
</dl></div>
<div class="lemmaWgt-lemmaCatalog">
<div class="lemma-catalog">
<h2 class="block-title">目录</h2>
<div class="catalog-list column-3">
<ol>
<li class="level1">
<span class="index">1</span>
<span class="text"><a href="#1">解析</a></span>
</li>
<li class="level1">
<span class="index">2</span>
<span class="text"><a href="#2">提供服务</a></span>
</li>
<li class="level1">
<span class="index">3</span>
<span class="text"><a href="#3">服务器类型</a></span>
</li>
</ol><ol><li class="level1">
<span class="index">4</span>
<span class="text"><a href="#4">工作流程</a></span>
</li>
<li class="level1">
<span class="index">5</span>
<span class="text"><a href="#5">SSL的体系结构</a></span>
</li>
<li class="level1">
<span class="index">6</span>
<span class="text"><a href="#6">SSL纪录协议</a></span>
</li>
</ol><ol><li class="level1">
<span class="index">7</span>
<span class="text"><a href="#7">SSL的会话状态</a></span>
</li>
<li class="level1">
<span class="index">8</span>
<span class="text"><a href="#8">https介绍</a></span>
</li>
<li class="level1">
<span class="index">9</span>
<span class="text"><a href="#9">应用</a></span>
</li>
</ol>

</div>
</div>
</div>
<div class="anchor-list">
<a name="1" class="lemma-anchor para-title" ></a>
<a name="sub16147_1" class="lemma-anchor " ></a>
<a name="解析" class="lemma-anchor " ></a>
</div><div class="para-title level-2" label-module="para-title">
<h2 class="title-text"><span class="title-prefix">ssl</span>解析</h2>
</div>
<div class="para" label-module="para">Secure Socket Layer,为<a target=_blank href="/view/153922.htm">Netscape</a>所研发,用以保障在Internet上数据传输之安全,利用<a target=_blank href="/view/696431.htm">数据加密</a>(Encryption)技术,可确保数据在网络上之传输过程中不会被截取及窃听。一般通用之规格为40 bit之安全标准,<a target=_blank href="/view/2398.htm">美国</a>则已推出128 bit之更高安全标准,但限制出境。只要3.0版本以上之I.E.或Netscape<a target=_blank href="/view/7718.htm">浏览器</a>即可支持SSL。</div>
<div class="para" label-module="para">当前版本为3.0。它已被广泛地用于<a target=_blank href="/view/206703.htm">Web浏览器</a>与服务器之间的<a target=_blank href="/view/1014826.htm">身份认证</a>和加密数据传输。</div>
<div class="para" label-module="para">SSL协议位于<a target=_blank href="/view/7649.htm">TCP/IP协议</a>与各种<a target=_blank href="/view/239619.htm">应用层</a>协议之间,为<a target=_blank href="/view/1474554.htm">数据通讯</a>提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的<a target=_blank href="/view/441895.htm">传输协议</a>(如TCP)之上,为高层协议提供<a target=_blank href="/view/262940.htm">数据封装</a>、压缩、加密等基本功能的支持。 SSL<a target=_blank href="/view/1712962.htm">握手协议</a>(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行<a target=_blank href="/view/1014826.htm">身份认证</a>、协商<a target=_blank href="/view/155969.htm">加密算法</a>、交换加密<a target=_blank href="/view/934.htm">密钥</a>等。</div><div class="anchor-list">
<a name="2" class="lemma-anchor para-title" ></a>
<a name="sub16147_2" class="lemma-anchor " ></a>
<a name="提供服务" class="lemma-anchor " ></a>
</div><div class="para-title level-2" label-module="para-title">
<h2 class="title-text"><span class="title-prefix">ssl</span>提供服务</h2>
</div>
<div class="para" label-module="para">1)认证用户和服务器,确保数据发送到正确的<a target=_blank href="/view/285153.htm">客户机</a>和<a target=_blank href="/view/899.htm">服务器</a>;</div>
<div class="para" label-module="para">2)加密数据以防止数据中途被窃取;</div>
<div class="para" label-module="para">3)维护数据的完整性,确保数据在传输过程中不被改变。</div><div class="anchor-list">
<a name="3" class="lemma-anchor para-title" ></a>
<a name="sub16147_3" class="lemma-anchor " ></a>
<a name="服务器类型" class="lemma-anchor " ></a>
</div><div class="para-title level-2" label-module="para-title">
<h2 class="title-text"><span class="title-prefix">ssl</span>服务器类型</h2>
</div>
<div class="para" label-module="para">1. Tomcat 5.x</div>
<div class="para" label-module="para">2. Nginx</div>
<div class="para" label-module="para">3. IIS</div>
<div class="para" label-module="para">4. Apache 2.x</div>
<div class="para" label-module="para">5. IBM HTTP SERVER 6.0<sup>[1]</sup><a class="sup-anchor" name="ref_[1]_16147">&nbsp;</a>
</div><div class="anchor-list">
<a name="4" class="lemma-anchor para-title" ></a>
<a name="sub16147_4" class="lemma-anchor " ></a>
<a name="工作流程" class="lemma-anchor " ></a>
</div><div class="para-title level-2" label-module="para-title">
<h2 class="title-text"><span class="title-prefix">ssl</span>工作流程</h2>
</div>
<div class="para" label-module="para">服务器认证阶段:1)<a target=_blank href="/view/930.htm">客户端</a>向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;2)服务器根据客户的信息确定是否需要生成新的主<a target=_blank href="/view/934.htm">密钥</a>,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;3)客户根据收到的服务器响应信息,产生一个主密钥,并用服务器的<a target=_blank href="/view/444169.htm">公开密钥加密</a>后传给服务器;4)服务器回复该主密钥,并返回给客户一个用主<a target=_blank href="/view/5481370.htm">密钥认证</a>的信息,以此让<a target=_blank href="/view/3032919.htm">客户认证</a>服务器。</div>
<div class="para" label-module="para"><a target=_blank href="/view/1223029.htm">用户认证</a>阶段:在此之前,服务器已经通过了<a target=_blank href="/view/3032919.htm">客户认证</a>,这一阶段主要完成对客户的认证。经认证的服务器发送一个提问给客户,客户则返回(数字)签名后的提问和其<a target=_blank href="/view/1145160.htm">公开密钥</a>,从而向服务器提供认证。</div>
<div class="para" label-module="para">SSL协议提供的安全通道有以下三个特性:</div>
<div class="para" label-module="para">机密性:SSL协议使用密钥加密通信数据。</div>
<div class="para" label-module="para">可靠性:服务器和客户都会被认证,客户的认证是可选的。</div>
<div class="para" label-module="para">完整性:SSL协议会对传送的数据进行完整性检查。</div>
<div class="para" label-module="para">从SSL 协议所提供的服务及其工作流程可以看出,SSL协议运行的基础是商家对消费者信息保密的承诺,这就有利于商家而不利于消费者。在电子商务初级阶段,由于运作电子商务的企业大多是信誉较高的大公司,因此这问题还没有充分暴露出来。但随着电子商务的发展,各中小型公司也参与进来,这样在电子支付过程中的单一认证问题就越来越突出。虽然在SSL3.0中通过<a target=_blank href="/view/7626.htm">数字签名</a>和<a target=_blank href="/view/16501.htm">数字证书</a>可实现<a target=_blank href="/view/7718.htm">浏览器</a>和Web服务器双方的<a target=_blank href="/view/121510.htm">身份验证</a>,但是SSL协议仍存在一些问题,比如,只能提供交易中客户与服务器间的双方认证,在涉及多方的电子交易中,SSL协议并不能协调各方间的安全传输和信任关系。在这种情况下,Visa和 MasterCard两大信用卡公组织制定了SET协议,为网上信用卡支付提供了全球性的标准。</div><div class="anchor-list">
<a name="5" class="lemma-anchor para-title" ></a>
<a name="sub16147_5" class="lemma-anchor " ></a>
<a name="SSL的体系结构" class="lemma-anchor " ></a>
</div><div class="para-title level-2" label-module="para-title">
<h2 class="title-text"><span class="title-prefix">ssl</span>SSL的体系结构</h2>
</div>
<div class="para" label-module="para">SSL的体系结构中包含两个协议子层,其中底层是SSL纪录协议层(SSL Record Protocol Layer);高层是SSL握手协议层(SSL HandShake Protocol Layer)。SSL的协议栈如图所示,其中阴影部分即SSL协议。<sup>[2]</sup><a class="sup-anchor" name="ref_[2]_16147">&nbsp;</a>
</div>
<div class="para" label-module="para"><div class="lemma-picture text-pic layout-right" style="width:220px; float: right;">
<a class="image-link" nslog-type="9317" 
			href="/pic/ssl/320778/0/562c11dfa9ec8a139be14cc7f303918fa0ecc01a?fr=lemma&ct=single" target="_blank"
		title="" style="width:220px;height:118px;">
<img  class="lazy-img" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAMAAAAoyzS7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRF9fX1AAAA0VQI3QAAAAxJREFUeNpiYAAIMAAAAgABT21Z4QAAAABJRU5ErkJggg==" data-src="https://imgsa.baidu.com/baike/s%3D220/sign=570557260e55b31998f9857773a88286/562c11dfa9ec8a139be14cc7f303918fa0ecc01a.jpg"  alt="" style="width:220px;height:118px;"/>
</a>
</div></div>
<div class="para" label-module="para">SSL纪录协议层的作用是为高层协议提供基本的安全服务。SSL纪录协议针对HTTP协议进行了特别的设计,使得超文本的传输协议HTTP能够在SSL运行。纪录封装各种高层协议,具体实施压缩解压缩、加密解密、计算和校验MAC等与安全有关的操作。</div>
<div class="para" label-module="para">SSL握手协议层包括SSL握手协议(SSL HandShake Protocol)、SSL密码参数修改协议(SSL Change Cipher Spec Protocol)、应用数据协议(Application Data Protocol)和SSL告警协议(SSL Alert Protocol)。握手层的这些协议用于SSL管理信息的交换,允许应用协议传送数据之间相互验证,协商加密算法和生成密钥等。SSL握手协议的作用是协调客户和服务器的状态,使双方能够达到状态的同步。</div><div class="anchor-list">
<a name="6" class="lemma-anchor para-title" ></a>
<a name="sub16147_6" class="lemma-anchor " ></a>
<a name="SSL纪录协议" class="lemma-anchor " ></a>
</div><div class="para-title level-2" label-module="para-title">
<h2 class="title-text"><span class="title-prefix">ssl</span>SSL纪录协议</h2>
</div>
<div class="para" label-module="para">SSL纪录协议(Record Protocol)为SSL连提供两种服务。<sup>[2]</sup><a class="sup-anchor" name="ref_[2]_16147">&nbsp;</a>
</div>
<div class="para" label-module="para">(1)保密性:利用握手协议所定义的共享密钥对SSL净荷(Payload)加密。</div>
<div class="para" label-module="para">(2)完整性:利用握手协议所定义的共享的MAC密钥来生成报文的鉴别码(MAC)。</div>
<div class="para" label-module="para">SSL的工作过程如下。</div>
<div class="para" label-module="para">(1)发送方的工作过程为:</div>
<div class="para" label-module="para">从上次接受要发送的数据(包括各种消息和数据);</div>
<div class="para" label-module="para">对信息进行分段,分成若干纪录;</div>
<div class="para" label-module="para">使用指定的压缩算法进行数据压缩(可选);</div>
<div class="para" label-module="para">使用指定的MAC算法生成MAC;</div>
<div class="para" label-module="para">使用指定的加密算法进行数据加密;</div>
<div class="para" label-module="para">添加SSL纪录协议的头,发送数据。</div>
<div class="para" label-module="para">(2)接收方的工作过程为:</div>
<div class="para" label-module="para">接收数据,从SSL纪录协议的头中获取相关信息;</div>
<div class="para" label-module="para">使用指定的解密算法解密数据;</div>
<div class="para" label-module="para">使用指定的MAC算法校验MAC;</div>
<div class="para" label-module="para">使用压缩算法对数据解压缩(在需要进行);</div>
<div class="para" label-module="para">将纪录进行数据重组;</div>
<div class="para" label-module="para">将数据发送给高层。</div>
<div class="para" label-module="para">SSL纪录协议处理的最后一个步骤是附加一个SSL纪录协议的头,以便构成一个SSL纪录。SSL纪录协议头中包含了SSL纪录协议的若干控制信息。</div><div class="anchor-list">
<a name="7" class="lemma-anchor para-title" ></a>
<a name="sub16147_7" class="lemma-anchor " ></a>
<a name="SSL的会话状态" class="lemma-anchor " ></a>
</div><div class="para-title level-2" label-module="para-title">
<h2 class="title-text"><span class="title-prefix">ssl</span>SSL的会话状态</h2>
</div>
<div class="para" label-module="para">会话(Session)和连接(Connection)是SSL中两个重要的概念,在规范中定义如下。<sup>[3]</sup><a class="sup-anchor" name="ref_[3]_16147">&nbsp;</a>
</div>
<div class="para" label-module="para">(1)SSL连接:用于提供某种类型的服务数据的传输,是一种点对点的关系。一般来说,连接的维持时间比较短暂,并且每个连接一定与某一个会话相关联。</div>
<div class="para" label-module="para">(2)SSL会话:是指客户和服务器之间的一个关联关系。会话通过握手协议来创建。它定义了一组安全参数。</div>
<div class="para" label-module="para">一次会话过程通常会发起多个SSL连接来完成任务,例如一次网站的访问可能需要多个HTTP/SSL/TCP连接来下载其中的多个页面,这些连接共享会话定义的安全参数。这种共享方式可以避免为每个SSL连接单独进行安全参数的协商,而只需在会话建立时进行一次协商,提高了效率。</div>
<div class="para" label-module="para">每一个会话(或连接)都存在一组与之想对应的状态,会话(或连接)的状态表现为一组与其相关的参数集合,最主要的内容是与会话(或连接)相关的安全参数的集合,用会话(或连接)中的加密解密、认证等安全功能的实现。在SSL通信过程中,通信算法的状态通过SSL握手协议实现同步。</div>
<div class="para" label-module="para">根据SSL协议的约定,会话状态由以下参数来定义:</div>
<div class="para" label-module="para">(1)会话标识符:是由服务器选择的任意字节序列,用于标识活动的会话或可恢复的会话状态。</div>
<div class="para" label-module="para">(2)对方的证书:会话对方的X.509v3证书。该参数可为空。</div>
<div class="para" label-module="para">(3)压缩算法:在加密之前用来压缩数据的算法。</div>
<div class="para" label-module="para">(4)加密规约(Cipher Spec):用于说明对大块数据进行加密采用的算法,以及计算MAC所采用的散列算法。</div>
<div class="para" label-module="para">(5)主密值:一个48字节长的秘密值,由客户和服务器共享。</div>
<div class="para" label-module="para">(6)可重新开始的标识:用于指示会话是否可以用于初始化新的连接。</div>
<div class="para" label-module="para">连接状态可以一下参数来定义:</div>
<div class="para" label-module="para">(1)服务器和客户器的随机数:是服务器和客户为每个连接选择的用于标识连接的字节序列。</div>
<div class="para" label-module="para">(2)服务器写MAC密值:服务器发送数据时,生成MAC</div>
<div class="para" label-module="para">(3)使用的密钥,长度为128 bit。</div>
<div class="para" label-module="para">(4)客户写MAC密值,服务器发送数据时,用于数据加密的密钥,长度为128 bit 。</div>
<div class="para" label-module="para">(5)客户写密钥:客户发送数据时,用于数据加密的密钥,长度为128 bit。</div>
<div class="para" label-module="para">(6)初始化向量:当使用CBC模式的分组密文算法是=时,需要为每个密钥维护初始化向量。</div>
<div class="para" label-module="para">(7)序列号:通信的每一端都为每个连接中的发送和接收报文维持着一个序列号。</div><div class="anchor-list">
<a name="8" class="lemma-anchor para-title" ></a>
<a name="sub16147_8" class="lemma-anchor " ></a>
<a name="https介绍" class="lemma-anchor " ></a>
</div><div class="para-title level-2" label-module="para-title">
<h2 class="title-text"><span class="title-prefix">ssl</span>https介绍</h2>
</div>
<div class="para" label-module="para">HTTPS(<b>Hypertext Transfer Protocol Secure</b>)<a target=_blank href="/view/831896.htm">安全超文本传输协议</a></div>
<div class="para" label-module="para">它是由Netscape开发并内置于其<a target=_blank href="/view/7718.htm">浏览器</a>中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的完全<a target=_blank href="/view/538713.htm">套接字</a>层(SSL)作为HTTP<a target=_blank href="/view/239619.htm">应用层</a>的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使用40 位关键字作为RC4流<a target=_blank href="/view/155969.htm">加密算法</a>,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509<a target=_blank href="/view/2120092.htm">数字认证</a>,如果需要的话用户可以确认发送者是谁。。</div>
<div class="para" label-module="para">https是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,https的安全基础是SSL,因此加密的详细内容请看SSL。</div>
<div class="para" label-module="para">它是一个URI scheme(抽象<a target=_blank href="/view/390932.htm">标识符</a>体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/<a target=_blank href="/view/121510.htm">身份验证</a>层(在HTTP与TCP之间)。这个系统的最初研发由<a target=_blank href="/view/478896.htm">网景</a>公司进行,提供了<a target=_blank href="/view/121510.htm">身份验证</a>与加密通讯方法,它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。</div>
<div class="para" label-module="para">限制</div>
<div class="para" label-module="para">它的安全保护依赖<a target=_blank href="/view/7718.htm">浏览器</a>的正确实现以及<a target=_blank href="/view/4438667.htm">服务器软件</a>、实际<a target=_blank href="/view/155969.htm">加密算法</a>的支持.</div>
<div class="para" label-module="para">一种常见的误解是“银行用户在线使用https:就能充分彻底保障他们的银行卡号不被偷窃。”实际上,与服务器的加密连接中能保护银行卡号的部分,只有用户到服务器之间的连接及服务器自身。并不能绝对确保服务器自己是安全的,这点甚至已被攻击者利用,常见例子是模仿银行域名的钓鱼攻击。少数罕见攻击在网站传输客户数据时发生,攻击者尝试窃听数据于传输中。</div>
<div class="para" label-module="para">商业网站被人们期望迅速尽早引入新的特殊处理程序到金融<a target=_blank href="/view/807.htm">网关</a>,仅保留传输码(transaction number)。不过他们常常存储银行卡号在同一个数据库里。那些数据库和服务器少数情况有可能被未授权用户攻击和损害。<sup>[4]</sup><a class="sup-anchor" name="ref_[4]_16147">&nbsp;</a>
</div><div class="anchor-list">
<a name="9" class="lemma-anchor para-title" ></a>
<a name="sub16147_9" class="lemma-anchor " ></a>
<a name="应用" class="lemma-anchor " ></a>
</div><div class="para-title level-2" label-module="para-title">
<h2 class="title-text"><span class="title-prefix">ssl</span>应用</h2>
</div>
<div class="para" label-module="para">extended validation ssl certificates翻译为中文即扩展验证(EV)SSL证书,该证书经过最彻底的身份验证,确保证书持有组织的真实性。独有的绿色地址栏技术将循环显示组织名称和作为CA的<a target=_blank href="/view/1545671.htm">GlobalSign</a>名称,从而最大限度上确保网站的安全性,树立网站可信形象,不给欺诈钓鱼网站以可乘之机。</div>
<div class="para" label-module="para">对线上购物者来说,绿色地址栏是验证网站身份及安全性的最简便可靠的方式。在IE7.0、FireFox3.0、Opera 9.5等新一代高安全浏览器下,使用扩展验证(EV)<a target=_blank href="/view/1009264.htm">SSL证书</a>的网站的<a target=_blank href="/view/7718.htm">浏览器</a><a target=_blank href="/view/538681.htm">地址栏</a>会自动呈现绿色,从而清晰地告诉用户正在访问的网站是经过严格认证的。此外绿色地址栏临近的区域还会显示网站所有者的名称和颁发证书CA机构名称,这些均向客户传递同一信息,该网站身份可信,信息传递安全可靠,而非<a target=_blank href="/view/64418.htm">钓鱼网站</a>。</div>
<dl class="lemma-reference collapse nslog-area log-set-param" data-nslog-type="2" log-set-param="ext_reference">
<dt class="reference-title">参考资料<em class="toggle"></em></dt>
<dd class="reference-list-wrap">
<ul class="reference-list">
<li class="reference-item " id="reference-[1]-16147-wrap">
<span class="index">1.</span>
<a class="gotop anchor"  name="refIndex_1_16147" id="refIndex_1_16147" title="向上跳转" href="#ref_[1]_16147">&nbsp;&nbsp;</a>
<a rel="nofollow" href="http://baike.baidu.com/redirect/adbe4nprCWWAG4nqDGvNrDB0LMXqW5TOorujUMmEqAHwwq9MBxpzfBsCRn9e8MM4-H5vuh1mSMMRpwIKdO2oHwDxcThn_ORv9oEra196AqLalQ" target="_blank" class="text">SSL 数字证书支持哪些服务器类型?<span class="linkout">&nbsp;</span></a>
<span class="site">.GlobalSign</span><span>&#91;引用日期2013-05-7&#93;</span></li><li class="reference-item " id="reference-[2]-16147-wrap">
<span class="index">2.</span>
<a class="gotop anchor"  name="refIndex_2_16147" id="refIndex_2_16147" title="向上跳转" href="#ref_[2]_16147">&nbsp;&nbsp;</a>
<a rel="nofollow" href="http://baike.baidu.com/redirect/ddabApghLfVQu-AZIEp0YwCIvpr-D0so9f37QmegN5L_I8q5NI2MLsGfSOQEXrqObpjv5i7EubAIC_3VVS6lBCzz_b_W6tVDT7wxBNxWKWO_hpi1hCumW8ZMAc4QQkVpArJF6XB4M6QbVKRYK_vuhJEURdd6SB3QnNz4b_TQ4F0T4vCiac-ItuMWMhe7w7pVObIP2gpEDiZ9RNY6GPdQL4H1rLfnQDk_scFj4BBziz3j-vMzQRl0n-YbFxFyoouXa1pUeiBCPW2GRwAVRFezVi6rr5d97mfwVIg26xWb7ryqtyygkP9V380YmqbeqR5HcGjJ-i8CEPbdMdIU3qDg" target="_blank" class="text">网络安全协议SSL原理及应用<span class="linkout">&nbsp;</span></a>
<span class="site">.中国知网</span><span>&#91;引用日期2015-02-6&#93;</span></li><li class="reference-item " id="reference-[3]-16147-wrap">
<span class="index">3.</span>
<a class="gotop anchor"  name="refIndex_3_16147" id="refIndex_3_16147" title="向上跳转" href="#ref_[3]_16147">&nbsp;&nbsp;</a>
<span>龚向阳等</span><span class="text">.宽带通信网原理</span><span>:北京邮电大学出版社</span><span>,2006年</span></li><li class="reference-item " id="reference-[4]-16147-wrap">
<span class="index">4.</span>
<a class="gotop anchor"  name="refIndex_4_16147" id="refIndex_4_16147" title="向上跳转" href="#ref_[4]_16147">&nbsp;&nbsp;</a>
<a rel="nofollow" href="http://baike.baidu.com/redirect/20a2ctZZazBB0E77Ew6RE9M_jWPoN51BM6GxySlCPq1nbWsvYO_GxO8vYX_QZ5BucnoVBTULRkL46k-h6uiV-AL79j9tCNfhdJqFlAcdr3L-_NxHHivp" target="_blank" class="text">用网络访问控制来强化SSL VPN网络安全<span class="linkout">&nbsp;</span></a>
</li></ul>
</dd>
</dl>
<div id="open-tag">
<div class="open-tag-title">词条标签:</div>
<dd id="open-tag-item">
<span class="taglist">
<a target="_blank" href="/wikitag/taglist?tagId=68031">中国电子学会</a>
</span>
,<span class="taglist">
通信技术
</span>
,<span class="taglist">
技术
</span>
</dd>
<div class="open-tag-collapse" id="open-tag-collapse"></div>
</div>
<div class="clear"></div>
</div>
<div class="side-content">
<div class="summary-pic" >
<a href="/pic/ssl/320778/0/203fb80e7bec54e748732f3bbb389b504fc26a73?fr=lemma&amp;ct=single" target="_blank" nslog-type="10002401">
<img src="http://g.hiphotos.baidu.com/baike/w%3D268%3Bg%3D0/sign=7ded78e5f536afc30e0c38638b228cf9/203fb80e7bec54e748732f3bbb389b504fc26a73.jpg" />
<button class="picAlbumBtn"><em></em><span>图集</span></button>
<div>ssl图册</div>
</a>
</div>
<div id="promotion_xunke"></div>
<div class="lemmaWgt-promotion-vbaike">
<div class="promotion_title">V百科<a href="/vbaike#gallary" target="_blank">往期回顾</a></div>
<div class="promotion_viewport">
<dl>
</dl>
<div class="promotion_viewport_pager"></div>
</div>
</div><div class="lemmaWgt-promotion-rightPreciseAd" data-lemmaId="320778" data-lemmaTitle="ssl"></div><div class="lemmaWgt-sideRecommend">
<a name="zhixinWrap" class="qnAnchor"></a>
<div class="zhixin-box" id="zhixinWrap" data-source="" data-newLemmaId="320778">
</div>
<form id="zhixinErrorForm" class="hidden" action="http://f3.baidu.com/index.php/feedback/zx/baikeJC" target="zhixinSubErr" method="post">
<input class="js-url" name="fb_html_url" type="hidden" />
<input class="js-query" name="fb_query" type="hidden" />
<input class="js-title" name="fb_card_title" type="hidden" />
<input class="js-content" name="fb_content" type="hidden" />
<input class="js-souceId" name="fb_source_id" type="hidden" />
</form>
<iframe id="zhixinSubErr" name="zhixinSubErr" style="display:none" frameborder="0"></iframe>
</div><div class="lemmaWgt-promotion-slide">
<div class="promotion_viewport">
<dl>
</dl>
<div class="promotion_viewport_pager"></div>
</div>
</div><div class="lemmaWgt-promotion-rightBigAd">
</div><div id="side-auth">
<div id="authEdit" class="side-box">
<dl>
<dt class="sidetitle">权威合作编辑</dt>
<dd class="side-auth-content">
<div class="side-auth-img">
<a href="http://www.cast.org.cn/" target="_blank" class="nslog:7075" id="authOrgRightEditPic">
<img style="display: none" onload="this.style.width = '50px';this.style.display='';" src="http://baike.baidu.com/cms/rc/QQ%E5%9B%BE%E7%89%8720141121003618.jpg" alt="权威编辑" title="权威编辑"/>
</a>
</div>
<div class="side-auth-info">
<p class="auth-info-name">
<a href="http://www.cast.org.cn/" nslog-type="7075" target="_blank" id="authOrgRightEdit">“科普中国”百科科学词条编写与应用工作项目</a>
</p>
<span id="authDetail">
“科普中国”是为我国科普信息化建设塑造的全...
</span>
</div>
<div class="clear"></div>
</dd>
<dd class="authVersion">
<span style="">
<a class="whatIs" align="absmiddle" href="javascript:void(0);"></a><a href=" http://baike.bdimg.com/cms/static/cooperation/content.pdf" target="_blank" nslog-type="36" class="link-toggle" id="whatIsAuthEdit">什么是权威编辑</a>
</span>
<span class="divisionLine"></span>
<a href="/history/ssl/74098878" class="nslog:37" target="_blank" id="authEditVersion">查看编辑版本</a>
</dd>
</dl>
</div>
<div id="authResource" class="side-box">
<dl>
<dt class="sidetitle">资源提供</dt>
<dd class="side-auth-content">
<div class="side-auth-img">
<a href="http://www.cie-info.org.cn/" target="_blank" nslog-type="7096">
<img style="display: none" onload="this.style.width = '50px';this.style.display='';" src="http://baike.bdimg.com/cms/static/cie-logo.jpg" alt="资源合作" title="资源合作"/>
</a>
</div>
<div class="side-auth-info">
<div class="auth-info-name">
<a href="http://www.cie-info.org.cn/" class="nslog:7096" target="_blank">中国电子学会</a>
</div>
<p>中国电子学会(Chinese Instit...</p>
<p>提供资源类型:<span style="color: #555555;">内容</span></p>
</div>
</dd>
<dd class="authVersion">
<span>
<a class="whatIs" align="absmiddle" href="javascript:void(0);"></a>
<a href=" http://baike.bdimg.com/cms/static/cooperation/content.pdf" target="_blank" nslog-type="3024" class="link-toggle">什么是资源合作</a>
</span>
</dd>
</dl>
</div>
</div><dl class="side-box lemma-statistics">
<dt class="title">词条统计</dt>
<dd class="description">
<ul>
<li>浏览次数:<span id="j-lemmaStatistics-pv"></span>次</li>
<li>编辑次数:23次<a href="/historylist/ssl/320778" class="nslog:1021" target="_blank">历史版本</a></li>
<li>最近更新:<span class="j-modified-time" style="display:none">2015-11-29</span></li>
<li>创建者:<a class="show-userCard" data-uid="6000496" title="查看此用户资料" target="_blank" href="http://www.baidu.com/p/talmud" nslog-type="1022">talmud</a></li>
</ul>
</dd>
</dl>
<div class="side-catalog" style="visibility:hidden">
<div class="side-bar">
<em class="circle start"></em>
<em class="circle end"></em>
</div>
<div class="catalog-scroller">
<dl class="catalog-list">
<dt class="catalog-title level1">
<em class="pointer"></em>
<a href="#1" class="title-link">
<span class="text">
<span class="title-index">1</span>
<span class="title-link" nslog-type="10002802">解析</span>
</span>
</a>
</dt>
<dt class="catalog-title level1">
<em class="pointer"></em>
<a href="#2" class="title-link">
<span class="text">
<span class="title-index">2</span>
<span class="title-link" nslog-type="10002802">提供服务</span>
</span>
</a>
</dt>
<dt class="catalog-title level1">
<em class="pointer"></em>
<a href="#3" class="title-link">
<span class="text">
<span class="title-index">3</span>
<span class="title-link" nslog-type="10002802">服务器类型</span>
</span>
</a>
</dt>
<dt class="catalog-title level1">
<em class="pointer"></em>
<a href="#4" class="title-link">
<span class="text">
<span class="title-index">4</span>
<span class="title-link" nslog-type="10002802">工作流程</span>
</span>
</a>
</dt>
<dt class="catalog-title level1">
<em class="pointer"></em>
<a href="#5" class="title-link">
<span class="text">
<span class="title-index">5</span>
<span class="title-link" nslog-type="10002802">SSL的体系结构</span>
</span>
</a>
</dt>
<dt class="catalog-title level1">
<em class="pointer"></em>
<a href="#6" class="title-link">
<span class="text">
<span class="title-index">6</span>
<span class="title-link" nslog-type="10002802">SSL纪录协议</span>
</span>
</a>
</dt>
<dt class="catalog-title level1">
<em class="pointer"></em>
<a href="#7" class="title-link">
<span class="text">
<span class="title-index">7</span>
<span class="title-link" nslog-type="10002802">SSL的会话状态</span>
</span>
</a>
</dt>
<dt class="catalog-title level1">
<em class="pointer"></em>
<a href="#8" class="title-link">
<span class="text">
<span class="title-index">8</span>
<span class="title-link" nslog-type="10002802">https介绍</span>
</span>
</a>
</dt>
<dt class="catalog-title level1">
<em class="pointer"></em>
<a href="#9" class="title-link">
<span class="text">
<span class="title-index">9</span>
<span class="title-link" nslog-type="10002802">应用</span>
</span>
</a>
</dt>
<a class="arrow" href="javascript:void(0);"></a>
</dl>
</div>
<div class="right-wrap">
<a class="go-up disable" href="javascript:void(0);"></a>
<a class="go-down" href="javascript:void(0);"></a>
</div>
<div class="bottom-wrap">
<a class="toggle-button" href="javascript:void(0);"></a>
<a class="gotop-button" href="javascript:void(0);"></a>
</div>
</div>
<div class="unionAd_fromPs side-box" id="unionAd_fromPs">
<script type="BAIDU_HH">
    {
        type : 'pageembed',
        di   : 'u2140330',
        rsi0 : 270,
        rsi1 : 175
    }
    </script>
</div>
<div id="side_box_fengchao" class="fengchao side-box" nslog="area" nslog-type="10000902">
</div>
<div id="side_box_unionAd" class="unionAd side-box">
<div class="union-content"></div>
</div>
</div>
</div>
</div>
<div class="after-content">
<div class="fc-guess-like new" id="fc_guess_like_new">
<span class="logo-du">
<em class="cmn-icon cmn-icons cmn-icons_logo-du"></em>
</span>
<h6>猜你喜欢</h6>
<ul class="cmn-clearfix">
</ul>
</div>
<div class="bottom-promotion" id="bottom-promotion">
<div id="BOTTOM_PRO_AD"></div>
</div></div>
</div>

<div class="wgt-footer-main">
<div class="content">
<dl class="fresh">
<dt><em class="cmn-icon cmn-icons cmn-icons_footer-fresh"></em>新手上路</dt>
<dd>
<div><a target="_blank" href="/usercenter/tasks#guide">成长任务</a></div>
<div><a target="_blank" href="/help#main01">编辑入门</a></div>
<div><a target="_blank" href="/help#main06">编辑规则</a></div>
<div><a target="_blank" href="/help#main05">百科术语</a></div>
</dd>
</dl>
<dl class="question">
<dt><em class="cmn-icon cmn-icons cmn-icons_footer-question"></em>我有疑问</dt>
<dd>
<div><a target="_blank" href="/wikiui/doubt?lemmaId=320778&fr=lemma"
            nslog-type="10070001">我要质疑</a></div>
<div><a target="_blank" href="http://ikefu.baidu.com/baidubaike/chat.html" nslog-type="10000003">我要提问</a></div>
<div><a target="_blank" href="http://tieba.baidu.com/f?ie=utf-8&fr=bks0000&kw=%E7%99%BE%E5%BA%A6%E7%99%BE%E7%A7%91">参加讨论</a></div>
<div><a target="_blank" href="/feedback">意见反馈</a></div>
</dd>
</dl>
<dl class="suggestion">
<dt><em class="cmn-icon cmn-icons cmn-icons_footer-suggestion"></em>投诉建议</dt>
<dd>
<div><a target="_blank" href="http://tousu.baidu.com/baike#1">举报不良信息</a></div>
<div><a target="_blank" href="http://tousu.baidu.com/baike#2">未通过词条申诉</a></div>
<div><a target="_blank" href="http://tousu.baidu.com/baike#4">投诉侵权信息</a></div>
<div><a target="_blank" href="http://tousu.baidu.com/baike#3">封禁查询与解封</a></div>
</dd>
</dl>
</div>
<div class="copyright">©2017&nbsp;Baidu&nbsp;<a href="http://www.baidu.com/duty/" target="_blank">使用百度前必读</a>&nbsp;|&nbsp;<a href="http://help.baidu.com/question?prod_en=baike&class=159&id=1047" target="_blank">百科协议</a>&nbsp;|&nbsp;<a href="/operation/cooperation" target="_blank">百度百科合作平台</a></div>
</div>

<div class="lemmaWgt-searchHeader">
<div class="layout">
<div class="logo-container">
<a class="logo cmn-inline-block" title="到百科首页" href="/">
<span class="cmn-baike-logo">
<em class="cmn-icon cmn-icons cmn-icons_logo-bai"></em>
<em class="cmn-icon cmn-icons cmn-icons_logo-du"></em>
<em class="cmn-icon cmn-icons cmn-icons_logo-baike"></em>
</span>
</a>
</div>
<div class="search">
<div class="form">
<form id="searchForm" action="/search/word" method="GET" target="_self">
<input id="query" name="word" type="text" autocomplete="off" autocorrect="off" value="ssl" /><a id="search" href="javascript:;"><em class="cmn-icon wiki-lemma-icons wiki-lemma-icons_search" nslog-type="10010004"></em></a>
</form>
<form id="searchEnterForm" action="/search/word" method="GET" target="_self">
<input id="searchEnterWord" name="word" type="hidden" />
<input name="sefr" type="hidden" value="cr" />
</form>
<form id="searchQueryForm" action="/search/word" method="GET" target="_self">
<input id="searchQueryWord" name="word" type="hidden" />
<input name="sefr" type="hidden" value="enterbtn" />
</form>
<ul id="suggestion" class="suggestion">
<div></div>
<li class="extra">
<span id="close">关闭</span>
</li>
</ul>
</div>
</div>
<div class="tool-buttons">
<a class="toolButtons-edit button j-edit-link" href="javascript:;" nslog-type="10010001"></a>
<a class="toolButtons-collect button" href="javascript:;" nslog-type="10010002"></a>
<a class="toolButtons-vote button top-vote" href="javascript:;" nslog-type="10010003"></a>
</div>
<div class="user-info">
<a class="user-link unlogin" href="javascript:;" nslog-type="10010005" target="_blank">登录</a>
</div>
</div></div>
<div class="new-bdsharebuttonbox new-side-share" id="side-share">
<span class="title">分享</span>
<div class="side-border">
<div class="triangle"></div>
<a class="share-link bds_qzone"  href="javascript:void(0);" nslog-type="10060101">
<em class="cmn-icon cmn-icons cmn-icons_logo-qzone"></em>
</a>
<a class="share-link bds_tsina" href="javascript:void(0);" nslog-type="10060301">
<em class="cmn-icon cmn-icons cmn-icons_logo-sina-weibo"></em>
</a>
<a class="bds_wechat"  href="javascript:void(0);" nslog-type="10060001">
<em class="cmn-icon cmn-icons cmn-icons_logo-wechat"></em>
</a>
<a class="share-link bds_tqq"  href="javascript:void(0);" nslog-type="10060201">
<em class="cmn-icon cmn-icons cmn-icons_logo-qq"></em>
</a>
</div>
</div>
<div class="qrcode-wrapper" id="layer" style="display: none">
<div class="bd_weixin_popup_header">
<em class="cmn-icon cmn-icons cmn-icons_close"></em>
<span>分享到微信朋友圈</span>
</div>
<div id="wechat-qrcode-img"></div>
<div class="bd_weixin_popup_footer">打开微信“扫一扫”即可将网页分享至朋友圈</div>
</div>
<div></div><div></div>
</body><script type="text/javascript" src="http://baike.bdimg.com/static/wiki-common/pkg/wiki-common_sync_js_0_6be349d.js"></script>
<script type="text/javascript">require.resourceMap({"res":{"wiki-lemma:widget/lemma_content/mainContent/lemmaRelation/lemmaInsert.js":{"url":"http://baike.bdimg.com/static/wiki-lemma/widget/lemma_content/mainContent/lemmaRelation/lemmaInsert_17d225d.js","pkg":"wiki-lemma:p5","deps":["wiki-common:widget/component/nslog/nslog.js"]},"wiki-lemma:widget/lemma_content/mainContent/lemmaRelation/tangram.js":{"url":"http://baike.bdimg.com/static/wiki-lemma/widget/lemma_content/mainContent/lemmaRelation/tangram_1e4b3aa.js","pkg":"wiki-lemma:p5"},"wiki-lemma:widget/lemma_content/mainContent/lemmaReference/lemmaReferenceTip/lemmaReferenceTip.js":{"url":"http://baike.bdimg.com/static/wiki-lemma/widget/lemma_content/mainContent/lemmaReference/lemmaReferenceTip/lemmaReferenceTip_d50e02d.js","deps":["wiki-common:widget/lib/jquery/jquery.js","wiki-common:widget/util/string.js"]}},"pkg":{"wiki-lemma:p5":{"url":"http://baike.bdimg.com/static/wiki-lemma/pkg/wiki-lemma-module-lemmaRelation_782158b.js"}}});</script><script type="text/javascript" src="http://baike.bdimg.com/static/wiki-common/widget/lib/jsmart/PHPJS_3347e0a.js"></script>
<script type="text/javascript" src="http://baike.bdimg.com/static/wiki-common/pkg/wiki-common_sync_js_1_f0a981d.js"></script>
<script type="text/javascript" src="http://baike.bdimg.com/static/wiki-common/pkg/wiki-common_sync_js_2_7a24e62.js"></script>
<script type="text/javascript" src="http://baike.bdimg.com/static/wiki-common/pkg/wiki-common_sync_js_5_62d9343.js"></script>
<script type="text/javascript" src="http://baike.bdimg.com/static/wiki-lemma/pkg/wiki-lemma_5c6109a.js"></script>
<script type="text/javascript" src="http://baike.bdimg.com/static/wiki-lemma/widget/lemma_content/configModule/zhixin/zhixin_587af69.js"></script>
<script type="text/javascript">!function(){  var $ = require('wiki-common:widget/lib/jquery/jquery.js'),
    userbar = require('wiki-common:widget/component/userbar/userbar.js');
    
  $(function() {
    userbar.buildUserbar($('.wgt-userbar'), null);
  });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js'),
      initSearchbar = require('wiki-common:widget/component/searchbar/searchbar.js');  
    initSearchbar($('.wgt-searchbar-main'));
  }();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var cookie = require('wiki-common:widget/util/cookie.js');
    if (!cookie.get('baikedeclare')) {
        $('#J-declare-wrap').css('display', 'block');
    }
    $('#J-declare-close').on('click', function () {
        // 用户关闭后,不再显示,这里暂设过期时间为1年
        cookie.set('baikedeclare', 'showed', {
            expires: 365 * 60 * 60 * 24 * 1000
        });
        $('#J-declare-wrap').css('display', 'none');
    });
}();
!function(){  var $ = require('wiki-common:widget/lib/jquery/jquery.js');

  var timer = '';

  $('.wgt-navbar').on('mouseenter', 'dl', function() {
  clearTimeout(timer);
  timer = setTimeout(function() {
  $('.wgt-navbar').addClass('wgt-navbar-hover');
}, 300);
}).on('mouseleave', function() {
clearTimeout(timer);
$('.wgt-navbar').removeClass('wgt-navbar-hover');
}).on('click', 'a', function() {
clearTimeout(timer);
$('.wgt-navbar').removeClass('wgt-navbar-hover');
});
}();
!function(){                var $ = require('wiki-common:widget/lib/jquery/jquery.js');
                var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

                // 展现策略
                rightCheck.editView('320778', function(res) {
                    if (!res.errno) {
                        if (res.data.edit) {
                            $('.lemmaWgt-lemmaTitle .add-subLemma').css('display', 'inline-block');
                            $('.top-tool .add-sub-icon').css('display', 'inline-block');
                        }
                    } else {
                        if ('') {
                            $('.lemmaWgt-lemmaTitle .add-subLemma').css('display', 'inline-block');
                            $('.top-tool .add-sub-icon').css('display', 'inline-block');
                        }
                    }
                });
                require('wiki-lemma:widget/basicElement/addSub/addSub.js')({                    lemmaId: '320778',                    lemmaTitle: 'ssl',                    lemmaDesc: '',                    versionId: '94886125',                    subLemmaId: '16147'                });
            }();
!function(){        var $ = require('wiki-common:widget/lib/jquery/jquery.js');
        var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

        // 展现策略
        rightCheck.editView('320778', function(res) {
            if (!res.errno) {
                if (res.data.divide) {
                    $('.top-tool .split-icon').css('display', 'block');
                }
            }
        });
    }();
!function(){    var nslog = require('wiki-common:widget/component/nslog/nslog.js');
	require.async("wiki-lemma:widget/basicElement/collect/collect.js",function(collect){
		collect({
            newLemmaId:"320778",
			lemmaId:"16147",
			subLemmaId:"16147"
		});
	});
}();
!function(){    require.async("wiki-lemma:widget/basicElement/topShare/topShare.js",function(topShare){
        topShare({
            newLemmaId: '320778'
        });
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

    // 展现策略
    rightCheck.editView('320778', function(res) {
        if (!res.errno) {
            if (res.data.edit) {
                $('.lemmaWgt-lemmaTitle .edit-lemma').css('display', 'inline-block');
            } else {
                $('.lemmaWgt-lemmaTitle .lock-lemma').show();
            }
        } else {
            if ('') {
                $('.lemmaWgt-lemmaTitle .edit-lemma').css('display', 'inline-block');
            } else {
                $('.lemmaWgt-lemmaTitle .lock-lemma').show();
            }
        }
    });
}();
!function(){	require('wiki-lemma:widget/lemma_content/mainContent/basicInfo/basicInfo.js')();
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var nslog = require('wiki-common:widget/component/nslog/nslog.js');
    nslog(10002701);
    $('.lemmaWgt-lemmaCatalog a').on('click', function () {
           nslog(10002702);
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

    // 展现策略
    rightCheck.editView('320778', function(res) {
        if (!res.errno) {
            if (res.data.edit) {
                $('.para-title .edit-icon').css('display', 'block');
            }
        } else {
            if ('') {
                $('.para-title .edit-icon').css('display', 'block');
            }
        }
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

    // 展现策略
    rightCheck.editView('320778', function(res) {
        if (!res.errno) {
            if (res.data.edit) {
                $('.para-title .edit-icon').css('display', 'block');
            }
        } else {
            if ('') {
                $('.para-title .edit-icon').css('display', 'block');
            }
        }
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

    // 展现策略
    rightCheck.editView('320778', function(res) {
        if (!res.errno) {
            if (res.data.edit) {
                $('.para-title .edit-icon').css('display', 'block');
            }
        } else {
            if ('') {
                $('.para-title .edit-icon').css('display', 'block');
            }
        }
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

    // 展现策略
    rightCheck.editView('320778', function(res) {
        if (!res.errno) {
            if (res.data.edit) {
                $('.para-title .edit-icon').css('display', 'block');
            }
        } else {
            if ('') {
                $('.para-title .edit-icon').css('display', 'block');
            }
        }
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

    // 展现策略
    rightCheck.editView('320778', function(res) {
        if (!res.errno) {
            if (res.data.edit) {
                $('.para-title .edit-icon').css('display', 'block');
            }
        } else {
            if ('') {
                $('.para-title .edit-icon').css('display', 'block');
            }
        }
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

    // 展现策略
    rightCheck.editView('320778', function(res) {
        if (!res.errno) {
            if (res.data.edit) {
                $('.para-title .edit-icon').css('display', 'block');
            }
        } else {
            if ('') {
                $('.para-title .edit-icon').css('display', 'block');
            }
        }
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

    // 展现策略
    rightCheck.editView('320778', function(res) {
        if (!res.errno) {
            if (res.data.edit) {
                $('.para-title .edit-icon').css('display', 'block');
            }
        } else {
            if ('') {
                $('.para-title .edit-icon').css('display', 'block');
            }
        }
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

    // 展现策略
    rightCheck.editView('320778', function(res) {
        if (!res.errno) {
            if (res.data.edit) {
                $('.para-title .edit-icon').css('display', 'block');
            }
        } else {
            if ('') {
                $('.para-title .edit-icon').css('display', 'block');
            }
        }
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

    // 展现策略
    rightCheck.editView('320778', function(res) {
        if (!res.errno) {
            if (res.data.edit) {
                $('.para-title .edit-icon').css('display', 'block');
            }
        } else {
            if ('') {
                $('.para-title .edit-icon').css('display', 'block');
            }
        }
    });
}();
!function(){		require.async(["wiki-lemma:widget/lemma_content/mainContent/lemmaReference/lemmaReference.js", "wiki-lemma:widget/lemma_content/mainContent/lemmaReference/lemmaReferenceTip/lemmaReferenceTip.js"],function(Reference,ReferenceTip){
			new Reference({
				subLemmaId:"16147"
			});
			new ReferenceTip({
				subLemmaId:"16147"
			});
		});
	}();
!function(){        require.async("wiki-common:widget/lib/jquery/jquery.js",function($){
            function openTagToggle(node) {
                if ($(node).hasClass("collapse")) {
                    $(node).removeClass("collapse");
                    $("#open-tag").css("height", '22px');
                } else {
                    $(node).addClass("collapse");
                    $("#open-tag").css("height", $("#open-tag-item").css("height"));
                }
            }
            if (parseInt($("#open-tag-item").css("height")) <= 30) {
                $('#open-tag-collapse').hide();
            }
            $("#open-tag-collapse").on("click", function () {
                openTagToggle($("#open-tag")[0]);
            });
        });
    }();
!function(){    require.async('wiki-lemma:widget/promotion/xunke/xunke.js', function (app) {
        app.init({
            lemmaTitle: 'ssl',
            adManager: {"wapRelatedBusiness":1}
        });
    });
}();
!function(){        require('wiki-lemma:widget/lemma_content/configModule/zhixin/zhixin.js')(
            320778,
            'ssl'
        );
    }();
!function(){    require.async("wiki-lemma:widget/lemma_content/mainContent/lemmaStatistics/lemmaStatistics.js",function(init){
        init({
            newLemmaIdEnc:"222bebc5dfeb5f24b1bd5e42"
        });
    });
}();
!function(){	require.async("wiki-lemma:widget/lemma_content/mainContent/sideCatalog/sideCatalog.js",function(SideCatalog){
		new SideCatalog();
	});
}();
!function(){        require.async(['wiki-lemma:widget/promotion/unionAdFromPs/unionAdFromPs.js'], function (init) {
            init({
                adManager: {"wapRelatedBusiness":1}
            });
        });
    }();
!function(){    require.async(["wiki-lemma:widget/promotion/fengchao/fengchao.js", "wiki-lemma:widget/promotion/unionAd/unionAd.js"], function (init, unionAd) {
        init({
            newLemmaId: "320778",
            lemmaTitle: "ssl",
            encodeLemmaTitle: "ssl",
            adManager: {"wapRelatedBusiness":1}
        }, {
            errFn: unionAd,
            dom: $('#side_box_unionAd')
        });
    });
}();
!function(){    require.async('wiki-lemma:widget/promotion/guessLike/guessLike.js', function (app) {
        app.init({
            lemmaTitle: 'ssl',
            adManager: {"wapRelatedBusiness":1}
        });
    });
}();
!function(){        require.async('wiki-lemma:widget/promotion/bottomAd/bottomAd.js', function (init) {
            init({
                sId: 'BOTTOM_PRO_AD',
                adManager: {"wapRelatedBusiness":1}
            });
        });
    }();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var Dialog = require("wiki-common:widget/ui/dialog/dialog.js");
    var userLogin = require('wiki-common:widget/component/userLogin/userLogin.js');
    var unameFiller = require('wiki-common:widget/component/unameFiller/unameFiller.js');
    var rightCheck = require('wiki-lemma:widget/tools/rightCheck/rightCheck.js');

            var isEnterprise = false;
        var enterpriseOwnerUserId = 0;
    
    var userId = 0;
    var editUrl = '/edit/' + encodeURIComponent('ssl') + '/' + '320778';
    var pgcUrl = '/enterprise/editpgc?lemmaId=320778';

    userLogin.regist({
        onLogin: function(user) {
            userId = user ? user.uid : 0;
        }
    });

    function gotoEdit(url, isMidNight) {
        if (isMidNight) {
            Dialog.alert({
                title: '编辑提示',
                subMsg: '晚23:00至次日8:00,因审核系统例行维护,您提交的版本可能需要较长时间才能通过,望您谅解。',
                onConfirm: function() {
                    window.location.href = url;
                }
            });
        } else {
            window.location.href = url;
        }    
    }

    function showChoseEditDialog(pgcCallback, ugcCallback) {
        new Dialog({
            title: '编辑提示',
            subMsg: '<p>您已开通企业百科服务,推荐您直接编辑“官方资料”,官方资料仅限企业百科绑定的百科账号修改,其他用户账号不可修改。</p><p>如果您想修改其他网友编辑的普通词条内容,请注意遵守百科百科编辑规则。<p>',
            btns: [{
            key: 'pgc',
            text: '编辑官方资料'
            }, {
            style: 'white',
            text: '修改普通词条',
            key: 'ugc'
            }],
            onBtnClick: function(btnKey){
                if (btnKey === 'pgc') {
                    pgcCallback && pgcCallback();
                } else if (btnKey === 'ugc') {
                    ugcCallback && ugcCallback();
                }
            }
        }).show();
    }

    function checkUserLegal(res) {
        var legal = false;
        switch (res.errno) {
            case 100001:
                userLogin.showLoginPop();
                break;
            case 100006:
                unameFiller.show();
                break;
            default:
                legal = true;
        }
        return true;
    }

    function checkUgc(res, url) {
        if (res.errno) {
            switch (res.errno) {
                case 100005:
                    alert('对不起,您目前被封禁');
                    break;
                case 110001:
                    alert('对不起,该词条被锁定');
                    break;
                case 110007:
                    alert('对不起,消歧页无法编辑');
                    break;
                case 110005:
                    Dialog.alert({
                    title: '编辑提示',
                    mainMsg: '对不起,您暂时没有权限编辑该词条。',
                    subMsg: '<p>您好,该词条内容已较丰富,现仅对百科等级达到<b>四级</b>且通过率达到<b>85%</b>的科友开放编辑。</p><p>当您通过努力达到以上要求,就可以参与编辑该词条了。</p><p><img src="http://img.baidu.com/img/baike/usercenter/growuptask/star.gif" class="star" />参加<a target="_blank" href="/usercenter#guide">成长任务</a>,更快掌握百科编辑技巧,加速升级!</p>'
                    });
                    break;
                case 110008:
                    Dialog.alert({
                    title: '编辑提示',
                    mainMsg: '对不起,您暂时没有权限编辑该词条。',
                    subMsg: '<p>您好,该词条内容已较丰富,现仅对百科等级达到<b>六级</b>且通过率达到<b>85%</b>的科友开放编辑。</p><p>当您通过努力达到以上要求,就可以参与编辑该词条了。</p><p><img src="http://img.baidu.com/img/baike/usercenter/growuptask/star.gif" class="star" />参加<a target="_blank" href="/usercenter#guide">成长任务</a>,更快掌握百科编辑技巧,加速升级!</p>'
                    });
                    break;
                case 470001:
                    alert('系统错误,请刷新重试');
                    break;
            }
        } else {
            if (!res.data.right.noAudit) {
                Dialog.alert({
                    title: '编辑提示',
                    subMsg: '很抱歉,该词条有其他用户编辑的版本正在提交,您暂时无法编辑。<br/>百科建议您晚些时候再编辑该词条,或者尝试编辑其他的词条。'
                });
                return;
            }
            gotoEdit(url, res.data.notice.isMidNight);
        }
    }

    $(document.body).on('click', '.j-edit-link', function() {
        var dl = $(this).attr('data-edit-dl');
        if (dl) {
            var url = editUrl + '?dl=' + dl;
        } else {
            var url = editUrl;
        }

        rightCheck.preeditCheck('320778', 'ssl', 'ssl', '94886125', function(res) {
            if (!checkUserLegal(res)) {
                return;
            }
            if (isEnterprise && enterpriseOwnerUserId === userId) {
                showChoseEditDialog(function() {
                    location.href = pgcUrl;
                }, function() {
                    checkUgc(res, url);
                });
            } else {
                checkUgc(res, url);
            }
        });
    });
}();
!function(){    require.async("wiki-lemma:widget/tools/searchHeader/toolButtons/toolButtons.js",function(init){
        init({
            lemmaId:"16147",
            subLemmaId:"16147",
            newLemmaId:"320778"
        });
    });
}();
!function(){    require('wiki-lemma:widget/tools/searchHeader/toolButtons/userInfo.js')();
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js'),
      animation = require('wiki-common:widget/util/animation.js'),
      nslog = require('wiki-common:widget/component/nslog/nslog.js'),
      initSearchbar = require('wiki-common:widget/component/searchbar/searchbar.js');

    var isFadeIn = false,
        isFadeOut = false;

    var fadeInAni, fadeOutAni;

    $(window).on('scroll', function(e) {
        var scrollTop = $(this).scrollTop();

        if (scrollTop > 200 && !isFadeIn && $('.lemmaWgt-searchHeader').css('display') == 'none') {
            fadeOutAni && fadeOutAni.stop();
            fadeInAni = animation({
                duration: 200,
                easing: 'linear',
                onStart: function() {
                    isFadeOut = false;
                    isFadeIn = true;
                    $('.lemmaWgt-searchHeader').css('display', 'block');
                },
                onStep: function(progress) {
                    $('.lemmaWgt-searchHeader').css('opacity', progress)
                },
                onComplete: function(progress) {
                    isFadeIn = false;
                    nslog(10010006);
                }
            });
        } else if (scrollTop <= 200 && !isFadeOut && $('.lemmaWgt-searchHeader').css('display') == 'block') {
            fadeInAni && fadeInAni.stop();
            fadeOutAni = animation({
                duration: 300,
                easing: 'linear',
                onStart: function() {
                    $('.lemmaWgt-searchHeader #suggestion').hide();
                    isFadeIn = false;
                    isFadeOut = true;
                },
                onStep: function(progress) {
                    $('.lemmaWgt-searchHeader').css('opacity', 1 - progress);
                },
                onComplete: function(progress) {
                    isFadeOut = false;
                    $('.lemmaWgt-searchHeader').css('display', 'none');
                }
            });
        }
    });

    initSearchbar($('.lemmaWgt-searchHeader'));
}();
!function(){    require('wiki-lemma:widget/tools/newSideShare/qzopensl.js');
    require.async("wiki-lemma:widget/tools/newSideShare/taskSideShare.js",function(taskShare){
        taskShare.init({
            title: 'ssl',
            desc: "SSL(Secure Sockets Layer \u5b89\u5168\u5957\u63a5\u5c42),\u53ca\u5176\u7ee7\u4efb\u8005\u4f20\u8f93\u5c42\u5b89\u5168\uff08Transport Layer Security\uff0cTLS\uff09\u662f\u4e3a\u7f51\u7edc\u901a\u4fe1\u63d0\u4f9b\u5b89\u5168\u53ca\u6570\u636e\u5b8c\u6574\u6027\u7684\u4e00\u79cd\u5b89\u5168\u534f\u8bae\u3002TLS\u4e0eSSL\u5728\u4f20\u8f93\u5c42\u5bf9\u7f51\u7edc\u8fde\u63a5\u8fdb\u884c\u52a0\u5bc6\u3002",
            pic: 'https:\/\/imgsa.baidu.com\/baike\/w%3D268\/sign=ab9bb61538f33a879e6d071cfe5d1018\/203fb80e7bec54e748732f3bbb389b504fc26a73.jpg',
            url: '',
            qqPic: 'http:\/\/g.hiphotos.baidu.com\/baike\/whfpf%3D349%2C349%2C50\/sign=70561bc0af6eddc426b2e7bb5fe685c9\/203fb80e7bec54e748732f3bbb389b504fc26a73.jpg'
        });
    });
}();
!function(){    var $ = require('wiki-common:widget/lib/jquery/jquery.js');
    var nslog = require("wiki-common:widget/component/nslog/nslog.js");
    var testElem = require('wiki-common:widget/component/testElem/testElem.js');
    var cmsModuleLoader = require('wiki-common:widget/component/cmsModuleLoader/cmsModuleLoader.js');

    function requireAsync() {
        require.async('wiki-lemma:widget/tools/announcement/announcement.js');
    }

    cmsModuleLoader('/cms/global/lemma_config.json', [{
        name: 'announcement',
        script: 'wiki-lemma:widget/tools/announcement/announcement.js'
    }]);

    require.async("wiki-lemma:widget/tools/lazyLoad/lazyLoad.js", function(LazyLoad) {
        new LazyLoad();
    });

    require.async(['wiki-common:widget/component/nslog/nslog.js', 'wiki-common:widget/lib/jquery/jquery.js'], function(nslog, $) {
        nslog().setGlobal({
            lemmaId: "16147",
            newLemmaId: "320778",
            subLemmaId: "16147",
            lemmaTitle: "ssl"
        });

        // 词条页 pv
        nslog(9322);

        // 新版头部pv(小流量)
        if ($('.pc-header-new').length > 0) {
            nslog(9069);
        }

        // 链接点击 pv
        var lemmaPageRegExp = new RegExp(/\/subview\/\d+|\/view\/\d+|\/item\//i);
        $('body').on('mousedown', 'a', function() {
            var href = $(this).attr('href');
            if (href && href.indexOf('/') >= 0 && href.indexOf('#') !== 0) {
                // 链接点击 pv
                nslog(10000001);
                if (lemmaPageRegExp.test(href)) {
                    // 词条页链接点击 pv
                    nslog(10000002, window.location.href, {
                        targetTitle: $(this).text()
                    });
                }
            }
        });

        /****** 词条页站内流转需求统计 start ******/
        (function () {
            // 各种统计配置
            var circulationLinkCfg = {
                innerLink: [ // 内链
                    '.para',
                    '.lemmaWgt-baseInfo-simple-largeMovie',
                    '.lemmaWgt-baseInfo-simple-largeStar',
                    '.basic-info .basicInfo-block',
                    '.lemma-summary',
                    '.lemmaWgt-lemmaSummary',
                    '.view-tip-panel',
                    '.horizontal-module',
                    '.lemmaWgt-roleIntroduction',
                    '.dramaSeries .dramaSerialList',
                    '.module-music',
                    '.table-view',
                    '[log-set-param="table_view"]',
                    '.list-module',
                    '.cell-module',
                    '.baseBox .dl-baseinfo', // 配置后台字段
                    '.pvBtn-box .leadPVBtnWrapper',
                    '.drama-actor',
                    '#staffList',
                    '.starMovieAndTvplay',
                    '.main_tab:not(.main_tab-defaultTab)' // 除去词条tab外的tab
                ],
                relationTable: '.rs-container-foot', // 关系表
                peopleRelation: '.star-info-block.relations, .lemmaWgt-focusAndRelation', // 人物关系(明星+普通)
                moduleActors: '.featureBaseInfo .actors, .lemmaWgt-majorActors', // 主要演员、嘉宾、主持人
                moduleWorks: '.featureBaseInfo .works, .large-feature .works', // 代表作品
                moduleQuarterly: '.featureBaseInfo .po_quarterly, .mian_quarterly', // 分季介绍
                rankStar: '.rank-list.stars-rank', // 明星榜
                rankDrama: '.drama-rank-list', // 电视剧榜
                specialTopic: '.special-topic', // 专题模块
                modDetailTable: '#modDetailTable', // 关系表出图
                chuizhitu: '.chuizhitu', // 垂直化模块
                polysemantList: '.polysemantList-wrapper' // 义项切换
            };
            /****** 连接统计 ******/
            function clickNslogFn() {
                for (var k in circulationLinkCfg) {
                    if (k === 'innerLink') {
                        // 词条内链到词条页
                        var tempArr = circulationLinkCfg[k];
                        for (var i = 0, l = tempArr.length; i < l; i++) {
                            tempArr[i] += ' a';
                        }
                        var sSelector = tempArr.join(', ');

                        $('body').on('mousedown', sSelector, {key: k},function(e) {
                            var key = e.data.key;
                            var href = $(this).attr('href');
                            var tar = $(this).attr('target') || '';
                            if (href && href.indexOf('/') >= 0 && href.indexOf('#') !== 0
                            && tar === '_blank' && lemmaPageRegExp.test(href)) {
                                // 词条页普通内链点击 pv
                                nslog(10000004, null ,{division: key});
                            }
                        });
                    } else {
                        // 模块到词条页链接
                        $(circulationLinkCfg[k]).on('mousedown', 'a', {key: k}, function (e) {
                            var key = e.data.key;
                            var href = $(this).attr('href');
                            if (href && href.indexOf('#') !== 0 && lemmaPageRegExp.test(href)) {
                                // 词条页配置模块链接点击 pv
                                nslog(10000004, null, {division: key});
                            }
                        });
                    }
                }
            }
            // 发起统计请求
            clickNslogFn();

            /****** 各模块展现量pv ******/
            function checkModuleIsShow() {
                var result = [];
                for (var k in circulationLinkCfg) {
                    if (k !== 'innerLink' && k !== 'relationTable') {
                        !!$(circulationLinkCfg[k]).html() && result.push(k);
                    }
                }
                if (result.length > 0) {
                    nslog(10000005, null, {showModules: result.join(',')});
                }
            }
            checkModuleIsShow();

        })();
        /****** 词条页站内流转需求统计 end ******/

    });

    // 广告接入 wikiad 统一加载
    // log 词条页广告被拦截情况(此处 log 请求行为)
    nslog(70000101, window.location.href, {
        api: 'lemma-ad',
        action: 'request'
    });
    $.ajax({
        type: 'GET',
        url: '/api/wikiad/getsquirrels',
        data: {
            lemmaId: 320778
        },
        cache: false,
        dataType: 'JSON',
        success: function (res) {
            // log 词条页广告被拦截情况(此处 log 请求成功)
            nslog(70000101, window.location.href, {
                api: 'lemma-ad',
                action: 'success'
            });

            if (!res.errno) {
                if (res.data[5]) {
                    require.async(['wiki-lemma:widget/promotion/rightPreciseAd/rightPreciseAd.js'], function(rightPreciseAd) {
                        rightPreciseAd(res.data[5]);
                        nslog(10002201, location.href, {
                            adId: res.data[5][0].adId,
                            adTitle: res.data[5][0].name,
                            adPos: 5
                        });
                    });
                } else if (res.data[1]) {
                    require.async(['wiki-lemma:widget/promotion/vbaike/vbaike.js'], function(vbaike) {
                        vbaike(res.data[1]);
                        for(var i in res.data[1]) {
                            nslog(10002201, location.href, {
                                adId: res.data[1][i].adId,
                                adTitle: res.data[1][i].name,
                                adPos: 1
                            });
                        }
                    });
                }
                if (res.data[9]) {
                    require.async(['wiki-lemma:widget/promotion/rightBigAd/rightBigAd.js'], function(rightBigAd) {
                        rightBigAd(res.data[9]);
                            nslog(10002201, location.href, {
                                adId: res.data[9][0].adId,
                                adTitle: res.data[9][0].name,
                                adPos: 9
                            });
                    });
                } else if(res.data[2]) {
                    require.async(['wiki-lemma:widget/promotion/slide/slide.js'], function(slide) {
                        slide(res.data[2]);
                        for(var i in res.data[2]) {
                            nslog(10002201, location.href, {
                                adId: res.data[2][i].adId,
                                adTitle: res.data[2][i].name,
                                adPos: 2
                            });
                        }
                    });
                }
                if (res.data[3]) {
                    require.async(['wiki-lemma:widget/promotion/topAd/topAd.js'], function(topAd) {
                        topAd(res.data[3]);
                        nslog(10002201, location.href, {
                            adId: res.data[3][0].adId,
                            adTitle: res.data[3][0].name,
                            adPos: 3
                        });
                    });
                }
                if (res.data[4]) {
                    require.async(['wiki-lemma:widget/promotion/rightAd/rightAd.js'], function(rightAd) {
                        rightAd(res.data[4]);
                        nslog(10002201, location.href, {
                            adId: res.data[4][0].adId,
                            adTitle: res.data[4][0].name,
                            adPos: 4
                        });
                    });
                }
                if (res.data[15]) {
                    require.async(['wiki-lemma:widget/promotion/banner/banner.js'], function(banner) {
                        banner(res.data[15]);
                        nslog(10002201, location.href, {
                            adId: res.data[15][0].adId,
                            adTitle: res.data[15][0].name,
                            adPos: 15
                        });
                    });
                }
                if (res.data[16]) {
                    require.async(['wiki-lemma:widget/promotion/declaration/declaration.js'], function(declaration) {
                        declaration(res.data[16]);
                        nslog(10002201, location.href, {
                            adId: res.data[16][0].adId,
                            adTitle: res.data[16][0].name,
                            adPos: 16
                        });
                    })
                }
            } else {
                return;
            }

            setTimeout(function () {
                var elemArr = {};
                res.data[1] && res.data[1].length > 0 && (elemArr['lemma-vbaike-ad'] = $('.lemmaWgt-promotion-vbaike .promotion_viewport a:eq(0) img').get(0));
                res.data[2] && res.data[2].length > 0 && (elemArr['lemma-slide-ad'] = $('.lemmaWgt-promotion-slide .promotion_viewport a:eq(0) img').get(0));
                res.data[3] && res.data[3].length > 0 && (elemArr['lemma-navbar-ad'] = {
                    node: $('.header [nslog-type="10002202"]').get(0),
                    validations: {
                        'noBackgroundImage': function() {
                            return $('.header [nslog-type="10002202"]').css('background-image').indexOf(res.data[3][0].picUrl) < 0
                        }
                    }
                });
                res.data[4] && res.data[4].length > 0 && (elemArr['lemma-side-ad'] = {
                    node: $('.right-ad img').get(0),
                    validations: {
                        'noBackgroundImage': function() {
                            return $('.right-ad img').attr('src').indexOf(res.data[4][0].picUrl) < 0
                        }
                    }
                });
                res.data[15] && res.data[15].length > 0 && (elemArr['lemma-configModule-banner'] = $('.configModuleBanner').get(0));
                res.data[16] && res.data[16].length > 0 && (elemArr['lemma-configModule-declaration'] = $('.lemmaWgt-declaration').get(0));

                testElem.log(elemArr, 70000102);
            }, 1000);
        },
        error: function () {
            // log 词条页广告被拦截情况(此处 log 请求失败)
            nslog(70000101, window.location.href, {
                api: 'lemma-ad',
                action: 'error'
            });
        }
    });

    // 设置分享内容
    window.BKShare.setCommon({
        bdText: "\u3010ssl_\u767e\u5ea6\u767e\u79d1\u3011SSL(Secure Sockets Layer \u5b89\u5168\u5957\u63a5\u5c42),\u53ca\u5176\u7ee7\u4efb\u8005\u4f20\u8f93\u5c42\u5b89\u5168\uff08Transport Layer Security\uff0cTLS\uff09\u662f\u4e3a\u7f51\u7edc\u901a\u4fe1\u63d0\u4f9b\u5b89\u5168\u53ca\u6570\u636e\u5b8c\u6574\u6027\u7684\u4e00\u79cd\u5b89\u5168\u534f\u8bae\u3002TLS\u4e0eSSL\u5728\u4f20\u8f93\u5c42\u5bf9\u7f51\u7edc\u8fde\u63a5\u8fdb\u884c\u52a0\u5bc6\u3002.....\uff08\u5206\u4eab\u81ea@\u767e\u5ea6\u767e\u79d1\uff09",
        bdDesc: '',
        bdUrl: 'http:\/\/baike.baidu.com\/subview\/16147\/16147.htm',
        bdPic: '',
        onBeforeClick: function (){
            $('.bdshare_dialog_box').hide();
        }
    });

    // 底部投诉带入当前页面 url
    var map = [1, 2, 4, 3];
    $('.wgt-footer-main .suggestion').find('a').each(function(i) {
        $(this).attr('href', 'http://tousu.baidu.com/baike/add?word=ssl' + '&&submit_link=' + encodeURIComponent(window.location.href) + '#' + map[i]);
    });

    // 为超出预设内容的表格添加table-responsive控制
    $('.main-content').find('table').each(function(index) {
        var $that = $(this);
        if ($that.width() > 790) {
            $that.wrap('<div class="table-responsive"></div>');
        }
    });
}();
!function(){      require('wiki-common:widget/component/psLink/psLink.js');
    }();</script>
<script type="text/javascript">
  var Hunter = window.Hunter || {};
  Hunter.userConfig = Hunter.userConfig || [];
  </script>
<script type="text/javascript" src="https://gss0.baidu.com/70cFsjip0QIZ8tyhnq/hunter/baike.js?st=17241" defer></script><script type="text/javascript">
  // DOM Ready时,统计用户可操作时间。
  alog('speed.set', 'drt', +new Date);

  void function(a,b,c,d,e,f){function g(b){a.attachEvent?a.attachEvent("onload",b,!1):a.addEventListener&&a.addEventListener("load",b)}function h(a,c,d){d=d||15;var e=new Date;e.setTime((new Date).getTime()+1e3*d),b.cookie=a+"="+escape(c)+";path=/;expires="+e.toGMTString()}function i(a){var c=b.cookie.match(new RegExp("(^| )"+a+"=([^;]*)(;|$)"));return null!=c?unescape(c[2]):null}function j(){var a=i("PMS_JT");if(a){h("PMS_JT","",-1);try{a=a.match(/{["']s["']:(\d+),["']r["']:["']([\s\S]+)["']}/),a=a&&a[1]&&a[2]?{s:parseInt(a[1]),r:a[2]}:{}}catch(c){a={}}a.r&&b.referrer.replace(/#.*/,"")!=a.r||alog("speed.set","wt",a.s)}}if(a.alogObjectConfig){var k=a.alogObjectConfig.sample,l=a.alogObjectConfig.rand;d="https:"===a.location.protocol?"https://fex.bdstatic.com"+d:"http://fex.bdstatic.com"+d,k&&l&&l>k||(g(function(){alog("speed.set","lt",+new Date),e=b.createElement(c),e.async=!0,e.src=d+"?v="+~(new Date/864e5)+~(new Date/864e5),f=b.getElementsByTagName(c)[0],f.parentNode.insertBefore(e,f)}),j())}}(window,document,"script","/hunter/alog/dp.min.js");
</script>
</html>

A file-like object which is of massive size can be streamed and uploaded using the Requests library. All we need to do is to supply the contents of the stream as a value to the data attribute in the request call as shown in the following lines.


In [ ]:
with open('massive-body', 'rb') as file:    
    requests.post('http://example.com/some/stream/url',data=file)

看不出任何用处


In [47]:
def generator():
    yield '1st data'.encode('utf-8')
    yield '2nd data'.encode('utf-8')
    yield '3rd data'.encode('utf-8')
    yield '4th data'.encode('utf-8')
    yield 'last data'.encode('utf-8')

In [48]:
url='http://httpbin.org'

In [49]:
req=requests.post(url+'/post',data=generator())

In [53]:
print(req.content)


b'{\n  "args": {}, \n  "data": "", \n  "files": {}, \n  "form": {}, \n  "headers": {\n    "Accept": "*/*", \n    "Accept-Encoding": "gzip, deflate", \n    "Connection": "close", \n    "Host": "httpbin.org", \n    "Transfer-Encoding": "chunked", \n    "User-Agent": "python-requests/2.12.4"\n  }, \n  "json": null, \n  "origin": "130.56.224.144", \n  "url": "http://httpbin.org/post"\n}\n'

In [55]:
req=requests.post(url+'/post',data='1st data'.encode('utf-8'))

In [56]:
print(req.text)


{
  "args": {}, 
  "data": "1st data", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Connection": "close", 
    "Content-Length": "8", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.12.4"
  }, 
  "json": null, 
  "origin": "130.56.224.144", 
  "url": "http://httpbin.org/post"
}


In [57]:
import json

In [58]:
req=requests.get(url+'/stream/4',stream=True)

In [60]:
print(req.headers)


{'Connection': 'keep-alive', 'Via': '1.1 vegur', 'Transfer-Encoding': 'chunked', 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json', 'Server': 'gunicorn/19.7.1', 'Access-Control-Allow-Credentials': 'true', 'Date': 'Fri, 24 Mar 2017 05:11:56 GMT'}

In [62]:
c=req.content

In [63]:
type(c)


Out[63]:
bytes

In [66]:
d=c.decode('utf-8')

In [78]:
data=json.load(c)


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-78-01b2a8c7657f> in <module>()
----> 1 data=json.load(c)

/home/jun_gentoo/anaconda3/lib/python3.5/json/__init__.py in load(fp, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    263 
    264     """
--> 265     return loads(fp.read(),
    266         cls=cls, object_hook=object_hook,
    267         parse_float=parse_float, parse_int=parse_int,

AttributeError: 'bytes' object has no attribute 'read'

In [73]:
e={'1':1,'2':2}

In [74]:
e_j=json.dumps(e)

In [75]:
print(e_j)


{"2": 2, "1": 1}

In [76]:
e_d=json.loads(e_j)

In [77]:
print(e_d)


{'2': 2, '1': 1}

In [5]:
url='http://www.chnaus.com/forum-house-5.html'

In [18]:
req=requests.head(url=url,headers=header)

In [19]:
print(req.headers)


{'Connection': 'Keep-Alive', 'Date': 'Thu, 06 Apr 2017 00:53:13 GMT', 'Vary': 'Accept-Encoding', 'Keep-Alive': 'timeout=10, max=9999', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html; charset=gbk', 'Content-Length': '20', 'Server': 'Apache', 'Set-Cookie': 'i03K_2132_saltkey=Mrn0uE2l; expires=Sat, 06-May-2017 00:53:13 GMT; Max-Age=2592000; path=/; httponly, i03K_2132_lastvisit=1491436393; expires=Sat, 06-May-2017 00:53:13 GMT; Max-Age=2592000; path=/, i03K_2132_sid=e8Um1N; expires=Fri, 07-Apr-2017 00:53:13 GMT; Max-Age=86400; path=/, i03K_2132_lastact=1491439993%09forum.php%09forumdisplay; expires=Fri, 07-Apr-2017 00:53:13 GMT; Max-Age=86400; path=/, i03K_2132_st_t=0%7C1491439993%7C77d5599666b38e11116cd6160808a82b; path=/, i03K_2132_forum_lastvisit=D_178_1491439993; expires=Thu, 13-Apr-2017 00:53:13 GMT; Max-Age=604800; path=/, i03K_2132_visitedfid=178; expires=Sat, 06-May-2017 00:53:13 GMT; Max-Age=2592000; path=/, i03K_2132_sid=e8Um1N; expires=Fri, 07-Apr-2017 00:53:13 GMT; Max-Age=86400; path=/', 'X-Powered-By': 'PHP/5.5.30'}

In [20]:
h=req.headers

In [16]:
print(h.keys)


<bound method Mapping.keys of {'Connection': 'Keep-Alive', 'Date': 'Thu, 06 Apr 2017 00:50:19 GMT', 'Vary': 'Accept-Encoding', 'Keep-Alive': 'timeout=10, max=9999', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html; charset=gbk', 'Content-Length': '20', 'Server': 'Apache', 'Set-Cookie': 'i03K_2132_saltkey=iBzq2dmp; expires=Sat, 06-May-2017 00:50:19 GMT; Max-Age=2592000; path=/; httponly, i03K_2132_lastvisit=1491436219; expires=Sat, 06-May-2017 00:50:19 GMT; Max-Age=2592000; path=/, i03K_2132_sid=A134Fv; expires=Fri, 07-Apr-2017 00:50:19 GMT; Max-Age=86400; path=/, i03K_2132_lastact=1491439819%09forum.php%09forumdisplay; expires=Fri, 07-Apr-2017 00:50:19 GMT; Max-Age=86400; path=/, i03K_2132_st_t=0%7C1491439819%7C43af91b9cd54a6a42747ad88aa5ed14f; path=/, i03K_2132_forum_lastvisit=D_178_1491439819; expires=Thu, 13-Apr-2017 00:50:19 GMT; Max-Age=604800; path=/, i03K_2132_visitedfid=178; expires=Sat, 06-May-2017 00:50:19 GMT; Max-Age=2592000; path=/, i03K_2132_sid=A134Fv; expires=Fri, 07-Apr-2017 00:50:19 GMT; Max-Age=86400; path=/', 'X-Powered-By': 'PHP/5.5.30'}>

It is possible to extract link attribute from head's response. But in Chnaus this doesn't happen.