前面都是常规解法:换User-Agent头,换X-Forwarded-For,换Referer头,本篇主要想介绍一种操作

出现这样的添加If-Unmodified-Since头

一、If-Modified-Since
If-Modified-Since会告知服务器若If-Modifed-Since字段值早于资源的更新时间,则希望服务端能处理该请求;
若If-Modifed-Since字段值晚于资源的更新时间,则返回状态码304 Not Modified的响应
作用:用于确定代理或客户端拥有的本地资源的有效性。

二 If-Unmodified-Since
他正好与 If-Modified-Since 相反
HTTP协议中的 If-Unmodified-Since
消息头用于请求之中,使得当前请求成为条件式请求:只有当资源在指定的时间之后没有进行过修改的情况下,服务器才会返回请求的资源,或是接受 POST
或其他 non-safe 方法的请求。如果所请求的资源在指定的时间之后发生了修改,那么会返回 412
(Precondition Failed) 错误。
具体参考 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/If-Unmodified-Since
三、Last-Modified
在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是客户端请求的资源,同时有一个Last-Modified的属性标记此文件在服务器端最后被修改的时间。 Last-Modified格式类似这样: Last-Modified : Fri , 12 May 2006 18:53:33 GMT 客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间之后文件是否有被修改过: If-Modified-Since : Fri , 12 May 2006 18:53:33 GMT 如果服务器端的资源没有变化,则自动返回 HTTP 304(Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。
因为服务端最后一次修改的时间是 Fri, 01 Jan 2077 00:00:00 GMT
所以只要我们将请求的时间设置得比其大,就满足 If-Unmodified-Since 的条件,Tue, 7 Oct 2077 00:00:00 GMT,在其之后服务端的数据不可能再进行过修改,所以返回请求的数据