Django利用Cookie实现反爬虫的例子

我们知道,Diango 接收的 HTTP 请求信息里带有 Cookie 信息。Cookie的作用是为了识别当前用户的身份,通过以下例子来说明Cookie的作用。例:

浏览器向服务器(Diango)发送请求,服务器做出响应之后,二者便会断开连接(会话结束),下次用户再来请求服务器,服务器没有办法识别此用户是谁,比如用户登录功能,如果没有 Cookie 机制支持,那么只能通过查询数据库实现,并且每次刷新页面都要重新操作一次用户登录才可以识别用户,这会给开发人员带来大量的冗余工作,简单的用户登录功能会给服务器带来巨大的负载压力。

Cookie 是从浏览器向服务器传递数据,让服务器能够识别当前用户,而服务器对 Cookie 的别机制是通过 Session 实现的,Session 存储了当前用户的基本信息,如姓名,年龄和性别等,由于Cookie 存储在浏览器里面,而且Cookie 的数据是由服务器提供的,如果服务器将用户信息直接保存在浏览器中,就很容易泄露用户信息,并且Cookie大小不能超过4KB,不能支持中文,因此要一种机制在服务器的某个域中存储用户数据,这个域就是Session。

总而言之,Cookie 和 Session 是为了解决HTTP协议无状态的弊端、为了让浏览器和服务端建立长久联系的会话而出现的。

Cookie除了解决 HTTP 协议无状态的弊端之外,还可以利用 Cookie 实现反爬虫机制。随着大数据和人工智能的发展,爬虫技术日益完善,网站为了保护自身数据的安全性和负载能力,都会在网站里设置反爬虫机制。

由于 Cookie 是通过 HTTP 协议从浏览器传递到服务器的,因此从视图函数的请求对象 request 可以获取 Cookie 对象,而Diango提供以下方法来操作Cookie对象:

# 获取 Cookie 与 Python 的字典读取方法一致
request。COOKIES['uuid']
request。COOKIES。get('uuid')

# 在响应内容中添加 Cookie, 将 Cookie 返回给浏览器
return HttpResponse('Hello world')
response。set_cookie('key', 'value')
return response

# 在响应内容中删除Cookie
return HttpResponse('Hello world')
response。delete_cookie('key')
return response

操作 Cookie 对象无非就是对 Cookie 进行获取、添加和删除处理。添加Cookie 信息是使用 set_cookie 方法实现的,该方法是由响应类 HttpResponseBase 定义的

  • key:设ECookie的key,类似字典的key。
  • value:设 Cookie的value,类似字典的value。
  • max age:设置Cookie的有效时间,以秒为单位。
  • expires:设置Cookie的有效时间,以日期格式为单位。
  • path:设置Cookie的生效路径,默认值为根目录(网站首页)
  • domain:设置Cookie生效的域名。
  • secure:设置传输方式,若为False,则使用HTTP,否则使用HTTPS。
  • httponly:设置是否只能使用HTTP协议传输。
  • samesite:设置强制模式,可选值为 lax 或 strict,主要防止CSRF攻击。

常见的反爬虫主要是设置参数max_age,expires 和 path。参数 max_age或 expires 用于设置 Cookie 的有效性,使爬程序无法长时间爬取网站数据;参数 path 用于将 Cookie 的生成过程隐藏起来,不容易让爬虫开发者找到并破解。

希望各位读者对Cookie实现反爬虫有一定认识。

到此这篇关于Django利用Cookie实现反爬虫的文章就介绍到这了,更多相关Django反爬虫内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Django框架设置cookies与获取cookies操作详解

    本文实例讲述了Django框架设置cookies与获取cookies操作.分享给大家供大家参考,具体如下: 在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是request.COOKIES[XXX]和request.session[XXX],其中XXX是您想要取得的东西的key, 很久以前,写过一篇 django怎么处理session 的文章:django 自定义session 处理, 今天对cookies 进行了同样的操作: from django.temp

  • python基于爬虫+django,打造个性化API接口

    简述 今天也是同事在做微信小程序的开发,需要音乐接口的测试,可是用网易云的开放接口比较麻烦,也不能进行测试,这里也是和我说了一下,所以就用爬虫写了个简单网易云歌曲URL的爬虫,把数据存入mysql数据库,再利用django封装装了一个简单的API接口,给同事测试使用. 原理 创建django项目,做好基础的配置,在views里写两个方法,一个是从mysql数据库中查数据然后封装成API,一个是爬虫方法,数据扒下来以后,通过django的ORM把数据插入到mysql数据库中. 这里的路由也是对应两

  • 详解Python的Django框架中的Cookie相关处理

    浏览器的开发者在很早的时候就已经意识到, HTTP's 的无状态会对Web开发者带来很大的问题,于是(cookies)应运而生. cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies 来看看它是怎么工作的. 当你打开浏览器并访问 google.com ,你的浏览器会给Google发送一个HTTP请求,起始部分就象这样: GET / HTTP/1.1 Host: google.com ... 当 Google响应时,

  • Django中cookie的基本使用方法示例

    前言 基于 Internet的各种服务系统应运而生,建立商业站点或者功能比较完善的个人站点,常常需要记录访问者的一些信息:论坛作为 Internet发展的产物之一,在 Internet 中发挥着越来越重要的作用,是用户获取.交流.传递信息的主要场所之一,论坛常常也需要记录访问者的一些基本信息(如身份识别号码.密码.用户在 Web 站点购物的方式或用户访问该站点的次数).目前公认的是,通过 Cookie 和 Session 技术来实现记录访问者的一些基本信息. 下面就来一起看看Django中coo

  • Django利用Cookie实现反爬虫的例子

    我们知道,Diango 接收的 HTTP 请求信息里带有 Cookie 信息.Cookie的作用是为了识别当前用户的身份,通过以下例子来说明Cookie的作用.例: 浏览器向服务器(Diango)发送请求,服务器做出响应之后,二者便会断开连接(会话结束),下次用户再来请求服务器,服务器没有办法识别此用户是谁,比如用户登录功能,如果没有 Cookie 机制支持,那么只能通过查询数据库实现,并且每次刷新页面都要重新操作一次用户登录才可以识别用户,这会给开发人员带来大量的冗余工作,简单的用户登录功能会

  • Django利用cookie保存用户登录信息的简单实现方法

    本文实例讲述了Django利用cookie保存用户登录信息的方法.分享给大家供大家参考,具体如下: 设置cookie response对象.set_cookie('key','value',多少秒后过期) 获取cookie request对象.COOKIES.get('key') 我们继续前一篇的代码 def hi(request): msg = {'result':''} loginSuccess = False # 是否登录成功标识 if user.userLogin(request.POS

  • Python爬虫利用cookie实现模拟登陆实例详解

    Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). 举个例子,某些网站是需要登录后才能得到你想要的信息的,不登陆只能是游客模式,那么我们可以利用Urllib2库保存我们以前登录过的Cookie,之后载入cookie获取我们想要的页面,然后再进行抓取.理解cookie主要是为我们快捷模拟登录抓取目标网页做出准备. 我之前的帖子中使用过urlopen()这个函数来打开网页进行抓取,这仅仅只是一个简单的Python网页打开器,其参数也仅有ur

  • python反反爬虫技术限制连续请求时间处理

    目录 前言 用勾子函数根据缓存行为设置访问时间 爬虫相关库 1. 爬虫常用的测试网站:httpbin.org 2. requests-cache 为原有代码微创式添加缓存功能 缓存的清空和识别 自定义设置缓存的形式 自定义设置缓存的例子1:设置缓存文件类型 自定义设置缓存的例子2:设置缓存保存内容 前言 一般的反爬措施是在多次请求之间增加随机的间隔时间,即设置一定的延时.但如果请求后存在缓存,就可以省略设置延迟,这样一定程度地缩短了爬虫程序的耗时. 下面利用requests_cache实现模拟浏

  • 网站反爬虫策略

    今天来谈谈关于反爬虫的东西. 随着大数据时代的来临,无论是个人还是企业,对于数据的需求都越来越大.这种需求也催生了如今异常热门的数据产业,也催生了日益完善的网络数据采集技术. 这种需求的扩大, 同时让网络爬虫日益猖獗,猖獗到甚至影响到了网站和APP的正常运行. 高频的网络爬虫行为无异于DDOS(分布式拒绝服务)攻击,虽然法律可以治它,但是其过程之繁琐,还是不如先让网站自身充分地强大起来. 为了便于基础薄弱的同学理解,我们先看一个基本的网站访问链路图: 这其中包含了我们从个人电脑的浏览器上访问一个

  • Python爬虫突破反爬虫机制知识点总结

    1.构建合理的HTTP请求标头. HTTP的请求头是一组属性和配置信息,当您发送一个请求到网络服务器时.因为浏览器和Python爬虫发送的请求头不同,反爬行器很可能会被检测到. 2.建立学习cookie. Cookie是一把双刃剑,有它不行,没有它更不行.站点将通过cookie来追踪你的访问情况,如果发现你有爬虫行为,将立即中断您的访问,例如,填写表格时速度过快,或在短时间内浏览大量网页.而且对cookies的正确处理,也可以避免许多采集问题,建议在收集网站的过程中,检查一下这些网站生成的coo

  • 常见的反爬虫urllib技术分享

    目录 通过robots.txt来限制爬虫: 通过User-Agent来控制访问: 验证码: IP限制: cookie: JS渲染: 爬虫和反爬的对抗一直在进行着…为了帮助更好的进行爬虫行为以及反爬,今天就来介绍一下网页开发者常用的反爬手段. 通过robots.txt来限制爬虫: 爬虫都遵守着一个协议:robots.txt robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获

  • 用python3 urllib破解有道翻译反爬虫机制详解

    前言 最近在学习python 爬虫方面的知识,网上有一博客专栏专门写爬虫方面的,看到用urllib请求有道翻译接口获取翻译结果.发现接口变化很大,用md5加了密,于是自己开始破解.加上网上的其他文章找源码方式并不是通用的,所有重新写一篇记录下. 爬取条件 要实现爬取的目标,首先要知道它的地址,请求参数,请求头,响应结果. 进行抓包分析 打开有道翻译的链接:http://fanyi.youdao.com/.然后在按f12 点击Network项.这时候就来到了网络监听窗口,在这个页面中发送的所有网络

  • 关于爬虫和反爬虫的简略方案分享

    前言 爬虫和反爬虫日益成为每家公司的标配系统. 爬虫在情报获取.虚假流量.动态定价.恶意攻击.薅羊毛等方面都能起到很关键的作用,所以每家公司都或多或少的需要开发一些爬虫程序,业界在这方面的成熟的方案也非常多. 有矛就有盾,每家公司也相应的需要反爬虫系统来达到数据保护.系统稳定性保障.竞争优势保持的目的. 像安全与黑客从来都是相辅相成一样. 爬虫与反爬虫也是在双方程序员的斗智斗勇的过程不断发展和成长的. 抓包 抓包的目的: 分析出协议请求使用的数据,请求接口,参数等等. 常用的抓包分析工具: Fi

  • 浅谈Scrapy框架普通反爬虫机制的应对策略

    简单低级的爬虫速度快,伪装度低,如果没有反爬机制,它们可以很快的抓取大量数据,甚至因为请求过多,造成服务器不能正常工作.而伪装度高的爬虫爬取速度慢,对服务器造成的负担也相对较小. 爬虫与反爬虫,这相爱相杀的一对,简直可以写出一部壮观的斗争史.而在大数据时代,数据就是金钱,很多企业都为自己的网站运用了反爬虫机制,防止网页上的数据被爬虫爬走.然而,如果反爬机制过于严格,可能会误伤到真正的用户请求;如果既要和爬虫死磕,又要保证很低的误伤率,那么又会加大研发的成本. 简单低级的爬虫速度快,伪装度低,如果

随机推荐