Python面试题之爬虫(http协议)

爬虫

知识点:
  • 整理 爬虫面试题

  • 添加 爬虫的代码

  • 加深 爬虫的理解

  • 版本 python3.6


1. http以及https的概念和区别

HTTPS比HTTP更安全,但是性能更低

  • HTTP:超文本传输协议,默认端口号是:80
    • 超文本:是指超过文本,不仅限于文本;还包括图片、音频、视频等文件
    • 传输协议:是指使用共用约定的固定格式来传递转换成字符串的超文本内容
  • HTTPS:HTTP + SSL(安全套接字层),即带有安全套接字层的超本文传输协,默认端口号:443
    • SSL对传输的内容(超文本,也就是请求体或响应体)进行加密

可以打开浏览器访问一个url,右键检查,点击net work,点选一个url,查看http协议的形式


2. 请列出常见的HTTP请求头

  • Accept:告诉服务器,客户端支持的数据类型。
  • Accept-Charset:告诉服务器,客户端采用的编码。
  • Accept-Encoding:告诉服务器,客户机支持的数据压缩格式。
  • Accept-Language:告诉服务器,客户机的语言环境。
  • Host:客户机通过这个头告诉服务器,想访问的主机名。
  • If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间。
  • Referer:客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的。(一般用于防盗链)
  • User-Agent:客户机通过这个头告诉服务器,客户机的软件环境。
  • Cookie:客户机通过这个头告诉服务器,可以向服务器带数据。
  • Connection:客户机通过这个头告诉服务器,请求完后是关闭还是保持链接。
  • Date:客户机通过这个头告诉服务器,客户机当前请求时间。

加粗的请求头为爬虫常用请求头,在服务器被用来进行爬虫识别的频率最高,相较于其余的请求头更为重要,但是这里需要注意的是并不意味这其余的不重要,因为有的网站的运维或者开发人员可能剑走偏锋,会使用一些比较不常见的请求头来进行爬虫的甄别


3. 请列出常见的HTTP响应头

  • Location:这个头配合302状态码使用,告诉用户端找谁。
  • Server:服务器通过这个头,告诉浏览器服务器的类型
  • Content-Encoding:服务器通过这个头,告诉浏览器数据采用的压缩格式。
  • Content-Length:服务器通过这个头,告诉浏览器回送数据的长度。
  • Content-Language:服务器通过这个头,告诉服务器的语言环境。
  • Content-Type:服务器通过这个头,回送数据的类型
  • Last-Modified:服务器通过这个头,告诉浏览器当前资源的缓存时间。
  • Refresh:服务器通过这个头,告诉浏览器隔多长时间刷新一次。
  • ETag:与缓存相关的头。
  • Expires:服务器通过这个头,告诉浏览器把回送的数据缓存多长时间。-1或0不缓存。
  • Cache-Control和Pragma:服务器通过这个头,也可以控制浏览器不缓存数据。
  • Connection:服务器通过这个头,响应完是保持链接还是关闭链接。
  • Date:告诉客户机,返回响应的时间。

加粗的请求头为爬虫常用请求头,在服务器被用来进行爬虫识别的频率最高,相较于其余的请求头更为重要,但是这里需要注意的是并不意味这其余的不重要,因为有的网站的运维或者开发人员可能剑走偏锋,会使用一些比较不常见的请求头来进行爬虫的甄别


4. 常见的响应状态码

  • 200:成功
  • 302:跳转,新的url在响应的Location头中给出
  • 303:浏览器对于POST的响应进行重定向至新的url
  • 307:浏览器对于GET的响应重定向至新的url
  • 403:资源不可用;服务器理解客户的请求,但拒绝处理它(没有权限)
  • 404:找不到该页面
  • 500:服务器内部错误
  • 503:服务器由于维护或者负载过重未能应答,在响应中可能可能会携带Retry-After响应头;有可能是因为爬虫频繁访问url,使服务器忽视爬虫的请求,最终返回503响应状态码

大体分为200成功,300重定向,400请求错误,500服务器错误


5. 简述一次完整的HTTP的通信过程

  • 建立TCP连接
    • 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。
  • Web浏览器向Web服务器发送请求命令
    • 一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET/sample/hello.jsp HTTP/1.1。
  • Web浏览器发送请求头信息l
    • 浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
  • Web服务器应答
    • 客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。
  • Web服务器发送应答头信息
    • 正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
  • Web服务器向浏览器发送数据
    • Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
  • Web服务器关闭TCP连接
    • 般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

http的无状态性是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。


6. HTTP请求方法都有什么?

  • GET:请求指定的页面信息,并返回实体主体。
  • HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  • PUT:从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE:请求服务器删除指定的页面。
  • CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  • OPTIONS:允许客户端查看服务器的性能。
  • TRACE:回显服务器收到的请求,主要用于测试或诊断。

如果被问到后面两个,基本都是公司要求掌握网络编程,下一篇讲爬虫面试的数据库选择,未完待续…
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭郭郭二蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值