客户端服务器

Python爬虫番外篇之Cookie和Session

三世轮回 提交于 2020-01-24 14:55:22
转自: Python爬虫番外篇之Cookie和Session python修行路 关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么是Cookie 其实简单的说就是当用户通过http协议访问一个服务器的时候,这个服务器会将一些Name/Value键值对返回给客户端浏览器,并将这些数据加上一些限制条件。在条件符合时,这个用户下次再访问服务器的时候,数据又被完整的带给服务器。 因为http是一种无状态协议,用户首次访问web站点的时候,服务器对用户一无所知。而Cookie就像是服务器给每个来访问的用户贴的标签,而这些标签就是对来访问的客户端的独有的身份的一个标识,这里就如同每个人的身份证一样,带着你的个人信息。而当一个客户端第一次连接过来的时候,服务端就会给他打一个标签,这里就如同给你发了一个身份证,当你下载带着这个身份证来的时候,服务器就知道你是谁了。所以Cookie是存在客户端的,这里其实就是在你的浏览器中。 Cookie中包含了一个由名字=值(name = value)这样的信息构成的任意列表,通过Set-Cookie或Set-Cookie2 HTTP响应(扩展)首部将其贴到客户端身上。如下图例子所示: 其实这里有一个非常典型的应用

[转帖]3 分钟带你深入了解 Cookie、Session、Token

大憨熊 提交于 2020-01-23 19:32:33
3 分钟带你深入了解 Cookie、Session、Token https://segmentfault.com/a/1190000021543693 经常会有用户咨询,CDN 是否会传递 Cookie 信息,是否会对源站 Session 有影响,Token 的防盗链配置为什么总是配置失败?为此,我们就针对 Cookie、Session 和 Token,来谈谈它们的用处是什么。 Cookie Cookie 虽然听起来不是技术名词,但却为互联网提供一项至关重要的功能:“记录访问过的网站或正在访问的网站。” HTTP 协议是无状态的,服务器不知道浏览器上一次访问做了什么,也无法对用户会话进行跟踪连接。为此就引入 Cookie 技术,Cookie 是由服务器发送到客户端浏览器的一小段文本文件,包含了网站访问活动信息。例如首选项语言或其它一些设置。浏览器会保存这些数据,并在客户端下次访问该网站时调用它们,提供更方便和个性化的访问体验。 举个简单的例子:我们在浏览购物网站时,会将选购商品添加到购物车。如果没有 Cookie 技术,因为 HTTP 是无状态协议,它不会知道之前添加选购哪些商品,放在哪个用户的购物车中。而应用 Cookie 技术后,Cookie 才会将这些信息在会话中发送给服务器,服务器读取 Cookie 信息就知道是哪些用户购物车中添加的商品信息。 Cookie 的属性

简单理解Socket

女生的网名这么多〃 提交于 2020-01-23 13:22:58
感谢:http://www.cnblogs.com/dolphinX/p/3460545.html 转自百度经验:http://jingyan.baidu.com/article/08b6a591e07ecc14a80922f1.html 网络由下往上分为   物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。   通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,   三者从本质上来说没有可比性,   socket则是对TCP/IP协议的封装和应用(程序员层面上)。   也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,   而HTTP是应用层协议,主要解决如何包装数据。   关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:   “我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容。   如果想要使传输的数据有意义,则必须使用到应用层协议。   应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。   WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”   而我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装

Cookie,Session,Token

大兔子大兔子 提交于 2020-01-23 03:54:28
我们知道 HTTP 是一种无状态的协议,为了分辨链接是谁发起的,需自己去解决这个问题。而且一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。导致有些情况下即使是同一个网站每打开一个页面也都要登录一下。而 Session 和 Cookie 就是为解决这个问题而提出来的两个机制。 同样的 Token 也能解决这个问题,它们之间只是一个说法的差别,其实做的事情都是一样的。 Cookie 实际上是一小段的文本信息是访问某些网站后在本地存储的一些网站相关信息,下次访问时减少一些步骤。更准确的说法是: Cookie 是服务器在本地机器上存储的小段文本信息并随每一个请求发送至同一服务器,是在客户端保持状态的方案。主要包括:名字,值,过期时间,路径和域。路径与域一起构成 Cookie 的作用范围。 会话Cookie和持久Cookie 若不设置过期时间,则表示这个 cookie 的生命期为浏览器会话期间,关闭浏览器窗口, cookie 就消失。这种生命期为浏览器会话期的 cookie 被称为会话 cookie 。会话 cookie 一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把 cookie 保存到硬盘上,关闭后再次打开浏览器,这些 cookie 仍然有效直到超过设定的过期时间

网络编程——TCP和UDP编程模型(TCP/UDP服务器和客户端-实现代码)

天大地大妈咪最大 提交于 2020-01-23 00:37:14
网络编程及其编程环境 : 通信连接: 局域网拓扑图: 广域网拓扑图: 编程环境:vim,linux,..... TCP和UDP编程模型 1,传输层TCP和UDP 1)OSI七层模型 2)TCP协议 :传输控制协议,向用户进程提供可靠的全双工字节流 3)UDP协议:用户数据报协议,是一种无连接的协议,不可靠传输 2,TCP编程模型 1)客户端 2)服务器 例子1:socket()实现进程间通信,AF_UNIX (1)服务器端;server.c #include<stdlib.h> #include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<sys/socket.h> #include<sys/un.h> int main() { int serverfd,clientfd; struct sockaddr_un server,client; int client_len=sizeof(client); //initial server.sun_family = AF_UNIX; strcpy(server.sun_path,"mysocketunix"); //socket serverfd=socket(AF_UNIX,SOCK_STREAM,0); if(serverfd ==-1) { printf(

使用Wireshark分析TLS1.2

流过昼夜 提交于 2020-01-22 18:08:02
概念扫盲 首先,先说下TLS是什么? TLS是SSL协议的具体实现,SSL是一个规范,TLS是安装SSL规范实现的。后面都说SSL/TLS SSL/TLS位于应用层和传输层之间,应用层还是可以用http、telnet等应用层协议,只是应用层的数据不是直接交给tcp,而是由tls管理,tls在头部增加安全数据然后交给tcp。 (图来自 https://www.cnblogs.com/lv6965/p/7859925.html ) 详细过程 1. 浏览器/客户端给出协议版本号、客户端生成的随机数(Client random),以及客户端支持的加密方法。 2. 服务端确认双方使用的加密方法,使用的tls版本号没有问题,生产一个随机数发给客户端。 3. 数字证书、以及一个服务器运行Diffie-Hellman算法生成的公钥pubkey。 4. 浏览器/客户端获取服务器发来的pubkey,计算出另一个pubkey,发给服务器。 5. 服务器发给浏览器一个session ticket。 使用Wireshark抓包上面的过程 第一步, 看最后的Transport Layer Security,tls协议,可以看到有生成的随机数,协议版本,支持的加密算法,Cipher 展开如下 第二步, 服务端发生server hello给客户端,信息有版本信息,随机数,服务端采用的加密算法。 第三步,

Socket——NAT穿透解决方案:UDP打洞

守給你的承諾、 提交于 2020-01-22 16:03:25
目标 路由穿透,实现广域网P2P通讯。 4种典型NAT类型 按照NAT设备在进行地址映射时行为的不同,NAT可以分为以下四种: Full Cone Restricted Cone Port Restricted Cone Symmentric 目前主要的NAT类型有如下几种: 1)Full-cone NAT, also known as one-to-one NAT 一旦一个内网地址 (iAddr:iPort) 被映射到一个外部地址 (eAddr:ePort), 来自 iAddr:iPort 的任何数据包将通过 eAddr:ePort 发送. 任何外部主机能够通过eAddr:ePort这个地址发送数据包到iAddr:iPort. 2)Address-restricted-cone NAT 一旦一个内网地址 (iAddr:iPort) 被映射到一个外部地址 (eAddr:ePort), 来自 iAddr:iPort 的任何数据包将通过 eAddr:ePort 发送. 仅只有接收到主机(iAddr:iPort)通过eAddr:ePort发送的数据包的外部主机通过该主机的任何端口发送到eAddr:ePort的数据包才能够被正确的转发到iAddr:iPort.也就是说主机有关端口无关. 3)Port-restricted cone NAT 类似于address restricted

Java 程序员面试笔试宝典 第 5 章 Java Web: 5.1 Servlet 与 JSP(13-17题)

北战南征 提交于 2020-01-22 15:30:28
5.1.13 JSP 中 include 指令和 include 动作有什么区别 include 的主要作用是用来在当前文件中引入另外一个文件,以便在当前文件中使用,例如,当应用程序中的所有页面的某些部分(例如标题、页脚、导航栏等)都一模一样时,就可以考虑把相同的部分提取出来写入一个单独的文件中,然后通过 include 方式引入。 include 有两种使用方法:include 指令和 include 动作。其中,include 指令的使用方法为:<%@include file="test.jsp"%>,include 动作的使用方法为:<jsp:include page="test.jsp"flush="true"><jsp:param name="name"value="value"/></jsp:include>。 include 指令与 include 动作之间的根本性差异在于二者被调用的时间。include 指令是编译阶段的指令,即在编译时,编译器会把指令所指向目标文件的内容复制到指令所在的位置,替换指令,最终形成一个文件,在运行时只有一个文件。也就是说,include 指令所包含文件的内容是在编译时插入到 JSP 文件中的,当文件内容有变化时就需要重写编译,因此适合于包含静态页面的情况,例如可以包含一个 Servlet。 而 include 动作是运行时的语法

HTTP长连接与短连接

流过昼夜 提交于 2020-01-22 13:23:48
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。 2. 如何理解HTTP协议是无状态的 HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。 3. 什么是长连接、短连接? 在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。 但从 HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码: Connection:keep-alive

HTTP长连接和短连接

喜夏-厌秋 提交于 2020-01-22 13:23:20
1. HTTP协议与TCP/IP协议的关系   HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。 2. 如何理解HTTP协议是无状态的   HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。 3. 什么是长连接、短连接?    在HTTP/1.0中,默认使用的是短连接 。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。 但从 HTTP/1.1起,默认使用长连接 ,用以保持连接特性。使用长连接的HTTP协议,会在响应头有加入这行代码: Connection