python爬虫常见面试题

一,tcp和udp的区别?
tcp(传输控制协议)是面向链接的协议,也就是说,在收发数据前,必须和对方建立可靠的链接。一个tcp链接必须经过‘3次对话’才能建立起来,其中的过程非常复杂,只简单描述下这3次对话的简单过程:主机A向主机B发出请求数据包:‘我想给你发数据,可以吗’,这是第一次对话;主机B向主机A发送同意连接和同步要求(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:‘可以,你什么时候发’,这是第二次对话;主机A再发送一个数据包确认主机B的要求同步:‘我现在就发,你接着吧’,这是第3次对话。三次‘对话’的目的是使数据包的发送和接收同步,经过三次‘对话’之后,主机A才向主机B正式发送数据。

tcp的三次握手:
1:主机A通过向主机B发送一个含有同步序列的标志位的数据段给主机B,向主机B请求连接,通过这个数据段,主机A告诉主机B两件事:我想要和你通信,你可以用哪个序列号作为起始数据段来回应我。
2:主机B收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了,你要用同步序列号作为数据段来回应我。
3:主机A收到这个数据段之后,再发一个确认应答,确认已经收到主机B 的数据段:‘我已经收到回复,我现在就要开始传输实际的数据了,这样3次握手就完成了,主机A和主机B就可以传输数据了’。
3次握手的特点:
没有应用层的数据,syn这个标志位只有在tcp建产链接时才会被置1,握手完成后syn标志被置0
名词解释:
ack tcp 报头的控制位之一,对数据进行确认,确认由目的端出发,用它来告诉发送端这个序列号之前的数据段都收到了,比如,确认号为x,则表示前x-1个数据段都收到了,只有当ack=1时,确认才有效,当ack=0时,确认无效,这是要求重传数据,保证数据的完整性。
syn 同步序列号,tcp建立连接时建这个置1
fin 发送端完成发送任务时,当tcp完成数据传输需要断开时,提出断开连接的一方将这个位置1

udp (用户数据报协议)
1.udp是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,udp传送数据的速度仅仅是受到应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,udp把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
2. 由于传输数据不建立连接,因此就不需要维护连接状态,包括收发状态等,因此一台服务机可以同时向多个客户机传输相同的消息。
3. udp信息包的标题很短,只有8个字节,相当于tcp的20个字节信息包的额外开销很小。
4. 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率,传输带宽,源端和终端主机性能的限制。
5. udp使用尽最大努力交付,既不保证可靠交付,因此主机不需要维持复杂的链接状态表。
6. udp是面向报文的,发送方的udp对应用程序交下来的报文,再添加首部后就向下交付给ip层。既不拆分也不合并,而是保留这些报文的边界,因此,应用程序需要选着合适的报文大小。
二:赋值,浅拷贝,深拷贝的区别

赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响另一个。
浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另一个也会修改改变){1.完全切片方法,2、工厂函数,如list(),3、copy模块的copy()函数}
深拷贝:创建一个新的对象,并且地柜的复制它所包含的对象(修改其中一个,另一个不会改变){copy模块的deep.deepcopy()函数}
三:http和https有什么区别
http协议是超文本传输协议,被用于web浏览器和网站服务器之间传递信息,http协议工作是以文明方式发送内容,不提供任何形式的数据加密,而这也是很容易被黑客利用的地方,如果何可截取了web浏览器和网站服务器之间的传输信息,就等一直接读懂其中的信息,因此http协议不符合传输一些重要的,敏感的信息,比如信用卡密码及支付验证码等。
安全套接字层https协议就是为了解决http协议的这一安全缺陷而生的,为了数据传输安全,https在http的基础上加入了ssl协议,ssl依靠证书来验证服务器的身份,为浏览器和服务器之间的通信加密,这样的话即使黑客借去了发送过程中的信息,也无法破解读懂它,网站急用和的信息得到了最大的安全保障。

https协议需要到ca申请证书,一般免费的证书很少,需要费用。
http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的, HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全

四:Python如何爬取 HTTPS 网站?
在使用 requests 前加入:requests.packages.urllib3.disable_warnings()。
为 requests 添加 verify=False 参数
导入ssl模块

import ssl
ssl._create_default_https_context = ssl._create_unverified_context
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值