Python+django网页设计入门(9):自定义反爬虫功能

技术要点:

1)识别请求来自浏览器还是来自爬虫程序,根据不同的访问方式给出不同的响应。

2)获取客户端IP地址并限制其访问时间间隔,如果来自爬虫程序,则多次访问之间的间隔会很短,判断这种情况并给出相应的响应。

3)使用自定义修饰器实现代码复用。

===================

1、修改questions应用的views.py文件,导入time标准库中的time()函数,并定义修饰器函数isCraw()。

2、把定义的修饰器作用到相应的视图函数上,以登录界面为例。

3、执行命令,运行网站,使用浏览器打开登录界面,一切正常。

4、使用Python模块urllib编写简单爬虫程序,尝试读取登录界面信息,失败。

5、修改程序,伪装浏览器访问登录页面,成功。

6、进一步修改爬虫程序,连续多次读取登录页面,第一次成功,后面失败。

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2018-11-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java成神之路

Struts框架搭建时所遇到的问题

        解决方案:将以下7个jar拷贝到项目工程中_(workspace_项目名_webRoot_WEB-INF_lib下),其他用到的包再慢慢添加: ...

8650
来自专栏菩提树下的杨过

dubbox升级spring到4.x及添加log4j2支持

今天花了点时间,把dubbox依赖的spring从3.x升级成最新版的4.x了,其它一些依赖的组件也顺带升级了,同时dubbo支持的第三方日志组件居然没有log...

205100
来自专栏我的博客

zendframework中render,forward,redirect区别

1.render $this->render(‘my’);//注意没有.phtml 这样会在当前控制器下的my.phtml(也就是views/scripts...

37950
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(二十) ——Redis命令在redis服务器执行过程

《Redis设计与实现》读书笔记(二十) ——Redis命令在redis服务器执行过程 (原创内容,转载请注明来源,谢谢) 序:redis服务器是redis一切...

36840
来自专栏IT笔记

hibernate3事务不起作用

如果没有如果,也许永远都发现不了这个问题,除非数据出现问题没有回滚。 由于一同事测试事务问题,发现数据不对,事务没有回滚。项目采用shiro+struts2+s...

36980
来自专栏web前端教室

第六节,mock数据&axios-《vue+vant+node+mongoDB+koa2》电商项目实战连载

当后台的数据还没有准备好时候,我们可以使用mock来创建一些假数据,用来进行get、post的操作,很方便的。

12530
来自专栏恒思考

实现app配置服务

我们要做一个app首先要实现后端,打算做个app叫恒思考。这个app后台由leancode,firebase,自建parse服务器。防止某个服务器不可用以后导致...

30030
来自专栏用户画像

使用Maven管理Jar包

②点击Maven project,在右侧会出现下图的菜单栏,点击刷新,即可pom文件所有的jar包到本地仓库

9920
来自专栏流柯技术学院

修改windows系统文件权限

修改windows系统文件总是提示没有权限,虽然已是administrator也不管用。

11710
来自专栏自由而无用的灵魂的碎碎念

让IE的地址栏在弹出窗口也显示

相信web开发人员经常使用到浏览器的地址栏,通过跟踪页面的地址来查看页面的源代码。

9830

扫码关注云+社区

领取腾讯云代金券