爬虫入门(5)——反爬(1)

目录

1. User-Agent

2. Cookie校验

3. Referer校验


Header信息校验指的是当我们在使用客户端服务器发送请求的时候,会在请求头里携带一些信息,而服务端在接收我们的请求时,会先对这些信息进行完整性、合法性、唯一性等规则判断,以此来辨别我们是真人在访问还是程序在访问。

1. User-Agent

User-Agent是反爬策略中最基础也是最简单的一种反爬手段,服务器通过接收请求头中的User-Agent值来区分正常用户和爬虫程序。

我们以C站为例子:

F12键进入以下页面获取User-Agent:

爬虫入门(5)——反爬(1)_第1张图片

 

import requests
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36'
}#请求头,伪装
url = 'https://www.csdn.net/'
response = requests.get(url=url,headers=headers)
print(response.status_code)

运行结果如下:

200

2. Cookie校验

Cookie主要用于Web服务器存储用户信息或状态保持,其实除了这些用途外,它还可以用于反爬。因为大部分的爬虫程序在默认的情况下只请求HTML文本资源或直接请求通过抓包得到的某一个XHR接口,这意味着他们并不会主动去完成浏览器保存Cookie的操作。

以百度为例:

爬虫入门(5)——反爬(1)_第2张图片

 

import requests
headers = {
'Cookie': '__yjs_duid=1_6d587624bf6abfe99322f5c01938fb441632036910376; BAIDUID=97913DBB99CA0EE112594ED1359ED98F:FG=1;'
          ' BAIDUID_BFESS=97913DBB99CA0EE112594ED1359ED98F:FG=1; BAIDU_WISE_UID=wapp_1634116192620_213; BIDUPSID=97913DBB99CA0EE112594ED1359ED98F;'
          ' PSTM=1636589861; BD_UPN=12314753; channel=baidusearch; baikeVisitId=1a0f3c59-c902-4eea-95e2-fd192ee4d84d; '
          'COOKIE_SESSION=938_0_0_3_1_3_0_0_0_3_0_0_0_0_3_0_1653293361_0_1653293358%7C3%230_0_1653293358%7C1; '
          'sugstore=1; ZFY=blIG6sZPAv7:A94AcZSrxk6Vg78CaLEn7Y4ZFmizeScw:C; Hm_lvt_246a5e7d3670cfba258184e42d902b31=1653997716;'
          ' BA_HECTOR=018k85ak0h85ak25ah1h9dk9k15; BD_HOME=1; H_PS_PSSID=',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36'
}
url = 'https://www.baidu.com/'
response = requests.get(url=url,headers=headers)
print(response.status_code)

运行结果如下:

200

Cookie反爬的原理是,当客户端在第一次请求网站指定的首页或登录页进行登录后,服务端会返回一个指定的Cookie值给客户端,而客户端如果是浏览器的话,浏览器会自动将服务端返回的这个Cookie值存储下来,当再次访问该网站上其他页面的时候,自动将保持的Cookie值在请求头里面传递过去,服务端在接收到这个Cookie值之后,验证是否合法,如果合法,则处理这个请求,否则拒绝请求。

3. Referer校验

Referer的作用是记录在访问一个目标网站是,访问前的原网站地址,比如用Chrome浏览器从淘宝网的test板块跳转到另外一个data板块,那么在跳转之前所停留的test板块就是指本次访问的原网站。

例如,有一个网站,第一个页面是信息列表的页面,第二个页面是详情页面。当访问详情页面的时候,需要验证是不是从列表页面点击进去的,如果是,则返回正确结果,否则返回错误。

一般用不到。

你可能感兴趣的:(爬虫入门,python)