使用scrapy做爬虫遇到的一些坑:网站常用的反爬虫策略,如何机智的躲过反爬虫Crawled (403)

news/2024/5/20 23:53:47/文章来源:https://blog.csdn.net/weixin_41931602/article/details/80679623

在这幅图中我们可以很清晰地看到爬虫与反爬虫是如何进行斗智斗勇的。

在学习使用爬虫时,我们制作出来的爬虫往往是在“裸奔”,非常的简单。

简单低级的爬虫有一个很大的优点:速度快,伪装度低。如果你爬取的网站没有反爬机制,爬虫们可以非常简单粗暴地快速抓取大量数据,但是这样往往就导致一个问题,因为请求过多,很容易造成服务器过载,不能正常工作。

于是许多网站为了保护自己的服务器,往往会采用反爬虫技术来“狙击”爬虫,让爬虫无法正常工作。


网站一般是如何进行识别爬虫呢?总的来说有以下几种:

一.检查header信息,一般有User-Agent,Referer、Cookies等等

1.User-Agent是检查用户所用客户端的种类和版本,在Scrapy中,通常是在下载器中间件中进行处理。
2.Referer是检查此请求由哪里来,通常可以做图片的盗链判断。在Scrapy中,如果某个页面url是通过之前爬取的页面提取到,Scrapy会自动把之前爬取的页面url作为Referfer。也可以通过上面的方式自己定义Referfer字段。
3.网站可能会检测Cookie中session_id的使用次数,如果超过限制,就触发反爬策略。

二. 网站常常会针对IP访问频率统计,设置一个阈值,当超过这个阈值时,网站就会判断这个IP访问太过频繁,会短时间甚至永久性地禁止该IP地址的访问 。

三.网站往往会给一个浏览器隐藏的连接,正常的浏览网页的人看不见,也更加不会去点击。加入来访者点击了改连接,就会被网站认定是爬虫。

那么网站识别出爬虫后就会像上图一样,开始给爬虫设置各种关卡啦!

1.设置限制访问:在一段时间内该IP是无法访问的

2.返回验证码:要求用户输入验证码,防止用户是机器

3.采用ajax异步加载:如果只是爬取静态网页的爬虫是什么都得不到的

4.爬虫陷阱:让你爬取的内容变成其他和本网站无关的信息

5.加速乐的服务:在访问之前先判断客户端的cookie正不正确。如果不正确,返回521状态码,set-cookie并且返回一段js代码通过浏览器执行后又可以生成一个cookie,只有这两个cookie一起发送给服务器,才会返回正确的网页内容。

6.javascript渲染:网页开发者将重要信息放在网页中但不写入html标签中,而浏览器会自动渲染<script>标签的js代码将信息展现在浏览器当中,而爬虫是不具备执行js代码的能力,所以无法将js事件产生的信息读取出来

至此,如果还有爬虫能够突破这些重围,那就是人生赢家了!网站一般就放弃阻止这只厉害的无法无天的爬虫了,因为再继续拦阻下去,成本会很高,得不偿失,而且如果因为反爬虫的技术太厉害,往往还会误伤友军,让一部分用户无法正常浏览网站。一般而言,反爬高效往往会与误伤友军率成非线性正比。

针对以上的反爬,可以有以下几种躲过反爬虫的策略。

1.设置等待时间:

直接:导入time,然后限制时间为正常人浏览时间

间接:看具体情况来等待,比如某些元素需要一定时间加载。wait1.until(lambda driver:driver.find_element_by_xpath("//div[@id='link-report']/span"))

2.识别验证码:

人工识别:适合比较复杂的验证码,正确率高,但是成本也高

机器识别:调用在线验证码识别软件接口识别验证码,正确率百分之八九十以上

3.异步加载:

fiddler / wireshark抓包分析ajax请求的界面,再通过规律仿造服务器构造一个请求访问服务器得到返回的真实数据包。

 通过PhantomJS+Selenium模拟浏览器行为,抓取经过js渲染后的页面。phantomjs是一个无头无界面浏览器,使用selenium可以驱动它模拟浏览器的一切操作,但缺点也很明显,爬取效率低;需要注意的是调用PhantomJs需要指定PhantomJs的可执行文件路径,通常是将该路径添加到系统的path路径,让程序执行时自动去path中寻找。使用Selenium后,请求不再由ScrapyDownloader执行,所以之前添加的请求头等信息都会失效,需要在Selenium中重新添加

4.爬虫陷阱:

一般是比较简单的死循环,可以对爬虫将要爬取的链接进行判断,不重复爬取相同的页面。除此之外,对于特定的元素看清之后小心爬取,还可使用scrapy的LinkExtractor设定unique参数为True即可或者直接设定爬虫的最大循环次数。

5.针对用户行为:

① cookie禁用:对于一些不需要登录的网站,可以在setting.py文件中设置COOKIES_ENABLED = False

② 自动限速:在setting.py文件中设置DOWNLOAD_DELAY = 1

③判断header:在请求时构造一个header,每次url请求更换一次user-agent。可以百度,也可看看之前的文章

④ 采用代理IP:可以做一个IP代理池,每次运行时随机挑选一个做访问IP。IP代理有收费有免费,看情况使用

免费的代理不一定能用,需要先做一下测试

# testproxy.py#encoding=utf8import urllibimport requestsimport sysif __name__ == "__main__":for url in sys.stdin:resp = requests.get(url)if resp.status_code ==requests.codes.ok:print url

然后写个脚本,用crontab设置其定期运行

# updateproxy.sh


set -x


scrapy crawl proxy > tmp


cat tmp > python updateproxy.sh > proxy

6.scrapyredis分布式爬虫:

可以利用多台机器的宽带加速爬取,还有利用多台机器的ip加速爬取

一般步骤如下:

    1.基本的http抓取工具,如scrapy
    2.
避免重复抓取网页,如Bloom Filter
    3.
维护一个所有集群机器能够有效分享的分布式队列
    4.
将分布式队列和Scrapy结合

    5.后续处理,网页析取(python-goose),存储(Mongodb)

7.使用scrapy反爬:

参考这篇文章Scrapy学习笔记(6)-反爬虫与反反爬虫策略

8.加速乐:

将浏览器返回的js代码放在一个字符串中,然后利用nodejs对这段代码进行反压缩,然后对局部的信息进行解密,得到关键信息放入下一次访问请求的头部中。

(未完待续)



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_786759.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马云称自己的成就无关科技与钱;任正非:外籍员工可当华为 CEO,但有条件;雅虎宣布逐步关闭雅虎群组网站 | EA周报...

EA周报2019年10月18日每个星期7分钟&#xff0c;元宝带你喝一杯IT人的浓缩咖啡&#xff0c;了解天下事、掌握IT核心技术。热点大事件丰巢回应小学生用照片“刷脸”取件&#xff1a;测试版&#xff0c;已第一时间下线有报道称“小学生发现丰巢快递柜刷脸取件漏洞&#xff0c;用照…

学习nginx所遇到的坑:Mac如何在nginx上创建新的网站?

首先&#xff0c;掌握基本的知识。 改配置文件&#xff1a; vi /usr/local/etc/nginx/nginx.conf 改html文件&#xff1a;vi /usr/local/Cellar/nginx/1.15.8/html/**.html 重启nginx: nginx -s reload -c 首先改动配置文件 &#xff0c;找到以下图片中的代码 从注释中我们…

第一次上传成功jsp网站总结

今天费了一下午功夫才上传成功一个jsp网站&#xff0c;现在总结下&#xff1a; 一般jsp网站分为两部分&#xff1a;1&#xff0c;网站部分 2&#xff0c;数据库部分。 要想在外网看到自己上传的jsp网站&#xff1a; 1&#xff0c;要有一个域名和空间&#xff0c;我今天用的是…

部署 HSTS 提升网站安全性

什么是 HSTS&#xff1f; HSTS 是 HTTP Strict Transport Security 的缩写&#xff0c;字面意思就是“HTTP 严格传输安全”。在 2012 年 11 月发布了RFC 文件。其实质&#xff0c;是通过服务器和浏览器配合起来&#xff0c;强制用户使用安全连接来访问服务器。 HSTS 大致原理…

网站搭建 -- 部署Https 证书 缺少 Root CA Certificate

测试网站 我们在搭建web站点时&#xff0c;为了安全&#xff0c;现在都要使用SSL证书。 一个好用的测试网站可以检测你的SSL配置是否正确。 https://www.geocerts.com/ssl-checker 该网站可以自定义检测的端口&#xff08;大部分检测网站都只能使用默认端口443&#xff09;…

揭秘DDoS黑市:50块钱就能击瘫一家网站

前两天&#xff0c;阿里云在微博上发布一则声明&#xff0c;称12月20-21日间&#xff0c;部署在阿里云上的某知名游戏公司&#xff0c;遭遇了全球互联网史上最大的一次DDoS攻击。 DDoS是一种在互联网地下非常常见的攻击方式&#xff0c;可以称作黑客入门的基础技巧。但要做到像…

WordPress开发之创建WordPress会员网站(一)

问题 Wordpress是世界范围内广泛推荐的网站开发平台&#xff0c;尽管创建一个基于WordPress的基础型博客网站是一个一小时左右就能完成的工作&#xff0c;但是&#xff0c;要想把这个网站进一步完善&#xff0c;特别是把WordPress网站修改成一个真正意义上的中小型电子商务网站…

HTML5初学者福利!11个在线学习网站推荐

2019独角兽企业重金招聘Python工程师标准>>> HTML5的强大及流行趋势&#xff0c;让更多的人想要系统的对它进行学习。而大多数人获取HTML5知识的重要途径都是网络&#xff0c;不过面对五花八门的搜索结果&#xff0c;是不是觉得摸不着头脑&#xff0c;无法抉择&…

Scrapy和Django实现蚌埠医学院手机新闻网站制作

最终效果&#xff08;不看效果就讲过程都是耍流氓&#xff09;&#xff1a; 实现过程如下: 框架&#xff1a; Scrapy&#xff1a;数据采集Django&#xff1a;数据呈现目标网站&#xff1a;蚌埠医学院 学院新闻列表:http://www.bbmc.edu.cn/index.php/view/viewcate/0/ 第一步&a…

收集喜欢的网站元素

1、https://letters-inc.jp/2、https://clarity.io/。。。

高性能网站建设进阶指南:Web开发者性能优化最佳实践

高性能网站建设进阶指南&#xff1a;Web开发者性能优化最佳实践 基本信息 作者&#xff1a; 口碑网前端团队 出版社&#xff1a;电子工业出版社 ISBN&#xff1a;9787121105449 上架时间&#xff1a;2010-4-9 出版日期&#xff1a;2010 年4月 开本&#xff1a;16开 其他详细…

WordPress 捐赠插件漏洞,导致网站遭受零日攻击

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; 使用“Total Donations”插件的 WordPress 网站&#xff0c;Defiant 建议网站管理员从他们的服务器中删除该插件&#xff0c;防止黑客利用其代码漏洞攻击网站。过去一周&#xff0c;来自 Defian…

分享一些好用的网站

前言 这两年收藏了不少网站&#xff0c;特地整理一下&#xff0c;把一些大家都可能用得上的分享出来&#xff0c;希望能对你有用。 考虑到有一些网站大多数人都知道&#xff0c;所以我就不列出来了。 我把这些网站分为了几大类&#xff1a; 工具类素材类社区类工具类 1、start.…

阿里云 - 免费 CA 证书申请 + Nginx 实现网站https部署 + http强制跳转https

1&#xff0c;进入阿里云&#xff0c;找到导航栏下安全下有个CA证书服务&#xff1b; 2&#xff0c;点进去之后点击立即购买&#xff1b; 3&#xff0c;点进来默认是看不到免费的&#xff0c;点击Symantec&#xff1b; 4&#xff0c;然后点击增强型&#xff1b; 5&#xff…

程序员网站推荐

希望你能遇到更好的网站。 1.git学习 猴子都能懂的GIT入门 https://backlog.com/git-tutorial/cn/stepup/stepup1_1.html 2.问答平台 stackoverflow https://stackoverflow.com/ n.遇到了再添加 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可…

6个超给力网站资源共享 一分钟吊起你的兴趣

超给力的网站资源分享给你们&#xff0c;娱乐、生活、学习应有尽有&#xff0c;赶紧来看看吧&#xff01; 千千音乐&#xff1a;http://music.taihe.com/songlist千千音乐是中国音乐门户之一,为你提供海量正版高品质音乐,权威的音乐榜单,快速的新歌速递,契合你的主题电台,人性化…

51CTO网站博客更新声明

51CTO博客自成立以来&#xff0c;受到网友广泛关注&#xff0c;为了能够提供更好的服务&#xff0c;51CTO网站决定对博客栏目进行大幅度改版。 截止到6月25日&#xff0c;网站后台管理界面风格已经调整完成&#xff0c;此目的是为了能让广大使用者更方便地使用我们的博客产品。…

学习前端的好处,网站文章复制不了?别扯.

很多时候我们在网上浏览文章或查看资料的时候&#xff0c;看到写的非常好的句子想要复制粘贴保存一下&#xff0c;这是拖动鼠标&#xff0c;发现“选不中&#xff0c;复制不了”&#xff0c;哎&#xff0c;这时候咱们前端高能出手&#xff0c;这都不是事儿&#xff01;很简单&a…

python爬取证券之星网站

周末无聊&#xff0c;找点乐子。。。#coding:utf-8 import requests from bs4 import BeautifulSoup import random import time#抓取所需内容 user_agent ["Mozilla/5.0 (Windows NT 10.0; WOW64)", Mozilla/5.0 (Windows NT 6.3; WOW64),Mozilla/5.0 (Windows NT …

seo我告诉你

seo我告诉你&#xff0c;这回seo真的告诉你百度云链接 链接&#xff1a;http://pan.baidu.com/s/1qYpM9y8 密码&#xff1a;mad6 seo优化教程&#xff1a;