不止是Cookie反爬虫

Cookie反爬虫

     cookie反爬虫指的是服务器端通过校验请求头中的cookie值来区分正常用户和爬虫程序的手段,这种手段被广泛应用在web应用中。
在这里插入图片描述

Cookie反爬虫绕过实战

"""
Cookie 反爬虫绕过实战
示例2:旅游网公告详情页
网站:http://www.porters.vip/verify/cookie/content.html
任务:爬取旅游网公告详情页中地公告标题
"""


import requests
from lxml import etree

url = 'http://www.porters.vip/verify/cookie/content.html'
headers = {'Cookie': 'isfirst=789kq7uc1pp4c'}
#向目标网站发起请求
resp = requests.get(url,headers=headers)
#打印输出状态码
print(resp.status_code)
#如果本次请求地状态码是200,则继续,否则提示失败
if resp.status_code == 200:
    html = etree.HTML(resp.text)
    #根据HTML标签和签名从文档中去除标题
    res = html.cssselect('.page-header h1')[0].text
    print(res)
else:
    print('This request is fial !')



Cookie反爬虫原理和实现

     大部分的爬虫程序在默认情况下只请求HTML文本资源,这意味着它们并不会主动完成浏览器保存Cookie的操作,这次的反爬虫正是利用了这个特点。那浏览器又是如何完成Cookie的获取和设置呢?
在这里插入图片描述

     浏览器会自动检测响应头中是否存在Set-Cookie头域,如果存在,则将值保存在本地,而且往后的每次请求都会自动携带对应的Cookie值,这时候只要服务器端对请求头中的Cookie值进行校验即可。服务器会校验每隔请求的Cookie值是否符合规则,如果通过校验,则返回正常资源,否则将请求重定向到首页,同时在响应头中添加Set-Cookie头域和Cookie值。

     nginx中的add_header指令可以将头域添加到响应头中,结合条件判断,就可以实现反爬虫。

Cookie与JavaScript结合

     除了反爬虫之外,重定向和Cookie常常被用来指定网站的入口或提高访问门槛,有些需要在登陆后才能访问的网页就是使用这个方法,但这种方法需要满足一定的需求或场景才能使用。而且以上的代码使用Cookie太简单了,每次使用的Cookie值都是相同的,只要爬虫工程师将Cookie值从浏览器得的请求头中复制,就可以一致使用。Cookie反爬虫这么简单嘛?岂不是很轻易就被绕过了?
在这里插入图片描述

     其实,利用Cookie实现反爬虫的方法不止一种,接下来我们思考如何将Cookie和JavaScript结合起来实现爬虫。JavaScript中location对象可以将浏览器重定向到其他页面,那么是不是可以利用这一点,在HTML代码中引入一个可以将浏览器重定向到目标页面的JavaScript文件,并且在这个文件中实现随机字符串生成和Cookie设置的功能,那么服务器端只需要校验Cookie值的规则即可。

在这里插入图片描述

用户过滤

     Cookie被广泛用于Web应用,它的主要作用时记录用户的身份,例如区分用户是否登录,进而判断用户是否为网站VIP等。Cookie的这个特点也可以用在反爬虫中,有些网站页面需要登录后才能查看,这一般是为了记录用户信息或者过滤掉未注册的用户。从网站运营的角度来看,这种做法对用户增长有一定的帮助。
在这里插入图片描述

小结

     User-Agent和Cookie都是请求头的默认头域,在值的设定方面有一定的局限性,但是与JavaScript结合后,就会变得很灵活。

     相对服务器软件来说,后端程序的校验更为灵活和准确,但使用后端程序进行校验所需的步骤较多,在实际应用时可以根据需求选择合适的校验方式。

关注不迷路哦

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

成都—大数据开发工程师—杨洋

你的打赏是我创作的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值