美文网首页
其他的头部信息(6/7更新)

其他的头部信息(6/7更新)

作者: 温岭夹糕 | 来源:发表于2020-01-04 21:04 被阅读0次

概览

头部信息太多,长期更新吧,学到一点更新一点

解决问题1.在代理服务器中如何传递正确IP地址

解决问题2.如何告诉区分哪些资源需要高质量,优先级比较高,即不压缩或权重

解决问题3.乱码情况

解决问题4.如何解决curl的设置gzip后返回结果出现乱码

解决问题5.为什么用telnet模拟请求的时候经常返回400错误码

解决问题6.如何简单的利用User-Agent头部来区分爬虫(可利用此头部区分客户端)

解决问题7.如何获取对方代理服务器和版本

解决问题8.关于消息的转发

解决问题9.关于请求的上下文

解决问题10.关于响应的上下文

解决问题11.关于跨域


解决问题1.在代理服务器中如何传递正确IP地址

X-Forwarded-For

X-Real-IP

解决问题2.如何告诉区分哪些资源需要高质量,优先级比较高,即不压缩或权重

利用质量因子q

Accept头部表示可以接受的资源类型

质量因子跟在资源后面,默认q=1,*/*表示任意

当你有如下Accept头:                                                               ①Accept:text/html,application/xml,application/json                                                        将按照如下顺序进行produces的匹配 :①text/html ②application/xml ③application/json②Accept:application/xml;q=0.5,application/json;q=0.9,text/html                                    将按照如下顺序进行produces的匹配 ①text/html ②application/json ③application/xml      q参数为媒体类型的质量因子,越大则优先权越高(从0到1)③Accept:*/*,text/*,text/html将按照如下顺序进行produces的匹配 ①text/html ②text/* ③*/*

解决问题3.乱码情况

需要用到请求编码(gzip会导致curl返回结果出现乱码,在curl测试的时候可以不加)

对应的响应结果


解决问题4.如何解决curl的设置gzip后返回结果出现乱码

结尾加上--compressed

解决问题5.为什么用telnet模拟请求的时候经常返回400错误码

可能是地址错误也可能是忘记添加Host请求头部

HTTP1.1规范中明确指出

强制要求 Host 头,让互联网主机托管成为可能

所以一个正确的telnet模拟请求应为

GET    /   HTTP/1.1

HOST:www.xxxx.com

解决问题6.如何简单的利用User-Agent头部来区分爬虫

User-Agent是请求字段,只出现在请求头里。它使用一个字符串来描述发起 HTTP 请求的客户端,服务器可以依据它来返回最合适此浏览器显示的页面。

但由于历史的原因,User-Agent 非常混乱,每个浏览器都自称是“Mozilla”“Chrome”“Safari”,企图使用这个字段来互相“伪装”,导致 User-Agent 变得越来越长,最终变得毫无意义。

不过有的比较“诚实”的爬虫会在 User-Agent 里用“spider”标明自己是爬虫,所以可以利用这个字段实现简单的反爬虫策略。

解决问题7.如何获取对方代理服务器和版本

利用Server头部

服务端会在响应头部的Server注明自己的版本和工具

openresty是一个nginx的超集

但这个并不是必填字段

这相当于隐藏了

解决问题8.关于消息的转发

一条HTTP响应可能会经过多个代理服务器

其中可以通过Max-Forwards头部限制最大转发次数(但是仅对TRACE/OPTIONS)

Via头部记录了经过代理服务器的名称和版本

Cache-Control:no-transform可以禁止代理服务器修改响应包体

解决问题9.关于请求的上下文

1.User-Agent 指明了客户端类型的信息

2.Referer头部是浏览器对来自某一页面的请求自动添加的头部

其中当浏览器(或者模拟浏览器行为)向web 服务器发送请求的时候,头信息里有包含Referer 。比如我在www.xxxx.com 里有一个www.baidu.com 链接,那么点击这个www.baidu.com ,它的header 信息里就有:Referer=https://www.xxxx.com信息

可以利用referer做防盗链,每次访问图片资源判断referer

可以防止恶意请求 :

比如我的网站上,静态请求是*.html结尾的,动态请求是*.shtml,那么由此可以这么用,所有的*.shtml请求,必须 Referer  为我自己的网站。

3.From 用于网络爬虫,告诉服务器如何通过邮箱联系到爬虫负责人

解决问题10.关于响应的上下文

Allow告诉客户端该URI允许哪些方法执行

Accept-Ranges 告诉客户端雾浮起上该资源是否允许range请求 

解决问题11.关于跨域

简单请求至少需要配置

Access-Control-Allow-Origin '*'/域名  表名指定哪些域可以跨域访问

复杂请求基于跨域访问需要先进行options请求

Access-Control-Allow-Method

Access-Control-Allow-Headers

Access-Control-Max-Age  允许缓存的最长时间

Access-Control-Expose-Headers 告诉浏览器哪些头部可以供给使用

相关文章

网友评论

      本文标题:其他的头部信息(6/7更新)

      本文链接:https://www.haomeiwen.com/subject/rypfactx.html