这一阵子在做微博爬虫的练习,经常遇到封IP的情况,上网查找资料,发现DianaCody的博客总结非常到位,因而这里转载留着记录。
  转载地址:http://blog.csdn.net/dianacody/article/details/39717825

  • 技巧一设置下载等待时间下载频率
  • 技巧二设置cookies
  • 技巧三修改User-Agent
  • 技巧四修改IP
  • 技巧五分布式爬取

  爬虫的目的就是大规模地、长时间地获取数据,跟我们正常浏览器获取数据相比,虽然机理相差不大,但总是一个IP去爬网站,大规模集中对服务器访问,时间一长就有可能被拒绝。关于爬虫长时间爬取数据,可能会要求验证码,即便是多个账号轮流爬取仍然会出现要求输入验证码的情况。

技巧一:设置下载等待时间/下载频率

  大规模集中访问对服务器的影响较大,爬虫可以短时间增大服务器负载。这里需要注意的是:设定下载等待时间的范围控制,等待时间过长,不能满足短时间大规模抓取的要求,等待时间过短则很有可能被拒绝访问。
(1) 在之前“从url获取HTML”的方法里,对于httpGet的配置设置了socket超时和连接connect超时,其实这里的时长不是绝对的,主要取决于目标网站对爬虫的控制。
(2) 另外,在scrapy爬虫框架里,专有参数可以设置下载等待时间download_delay,这个参数可以设置在setting.py里,也可以设置在spider里。

技巧二:设置cookies

   cookie其实是储存在用户终端的一些被加密的数据,有些网站通过cookies来识别用户身份,如果某个访问总是高频率地发请求,很可能会被网站注意到,被嫌疑为爬虫,这时网站就可以通过cookie找到这个访问的用户而拒绝其访问。
  可以自定义设置cookie策略(防止cookie rejected问题:拒绝写入cookie)或者禁止cookies。
(1) 自定义设置cookies策略(防止cookierejected问题,拒绝写入cookie)
   在系列一那篇文章里就有自定义cookie策略设置,但更多的借鉴是官方文档的例子,设置方法其实都大同小异,因为HttpClient-4.3.1组件版本跟以前旧版本的不同,写法也有不同,另见官方文档:http://hc.apache.org/httpcomponents-client-4.3.x/tutorial/html/statemgmt.html#d5e553
(2) 禁止cookies
  通过禁止cookie,这是客户端主动阻止服务器写入。禁止cookie可以防止可能使用cookies识别爬虫的网站来ban掉我们。
  在scrapy爬虫中可以设置COOKIES_ENABLES= FALSE,即不启用cookies middleware,不向web server发送cookies。

技巧三:修改User-Agent

  最常见的就是伪装浏览器,修改User-Agent(用户代理)。
  User-Agent是指包含浏览器信息、操作系统信息等的一个字符串,也称之为一种特殊的网络协议。服务器通过它判断当前访问对象是浏览器、邮件客户端还是网络爬虫。在request.headers里可以查看user-agent,关于怎么分析数据包、查看其User-Agent等信息,这个在前面的文章里提到过。
  具体方法可以把User-Agent的值改为浏览器的方式,甚至可以设置一个User-Agent池(list,数组,字典都可以),存放多个“浏览器”,每次爬取的时候随机取一个来设置request的User-Agent,这样User-Agent会一直在变化,防止被墙。

技巧四:修改IP

  其实微博识别的是IP,不是账号。也就是说,当需要连续抓取很多数据的时候,模拟登录没有意义。只要是同一个IP,不管怎么换账号也没有用,主要的是换IP。
  web server应对爬虫的策略之一就是直接将IP或者整个IP段都封掉禁止访问,当IP被禁封后,转换到其他IP继续访问即可。方法:代理IP、本地IP数据库(使用IP池)。
(1) 从代理IP网站获取大量IP
  如果总是请求代理IP站点也未免有些麻烦,况且某些代理IP站点有时还可能被禁封,当然再换一个代理IP站点也可以,如果你不嫌麻烦的话。
(2) 使用IP地址库
  网上也有很多现成可用的IP地址库,可以存放到本地,如果本地有IP数据库就方便很多,至少不用每次都去请求代理IP站点了(当然可以一次性把站点内所有代理IP先爬下来存储好,形成本地IP数据库),总之获取IP的方法有很多,不一定非要是通过代理IP站点。关于IP地址库解析,可以参见我博客内另外一篇文章:http://blog.csdn.net/dianacody/article/details/38467875
  道理相同,把IP解析出来就可以用了。

技巧五:分布式爬取

  分布式爬取的也有很多Githubrepo。原理主要是维护一个所有集群机器能够有效分享的分布式队列。
  使用分布式爬取还有另外一个目的:大规模抓取,单台机器的负荷很大,况且速度很慢,多台机器可以设置一个master管理多台slave去同时爬取。
  另外关于网页判重问题,可以用Bloom Filter。

微博爬虫防止被墙的技巧总结[Java]相关推荐

  1. 微博爬虫“免登录”技巧详解及Java实现

    本文源地址:http://www.fullstackyang.com/...,转发请注明该地址或segmentfault地址,谢谢! 一.微博一定要登录才能抓取? 目前,对于微博的爬虫,大部分是基于模 ...

  2. 微博爬虫“免登录”技巧详解及 Java 实现(业余草的博客)

    一.微博一定要登录才能抓取? 目前,对于微博的爬虫,大部分是基于模拟微博账号登录的方式实现的,这种方式如果真的运营起来,实际上是一件非常头疼痛苦的事,你可能每天都过得提心吊胆,生怕新浪爸爸把你的那些账 ...

  3. 用户、话题、评论一网打尽,分享一个最强微博爬虫

    实现的功能 微博向来是一个极好的吃瓜圣地,为了获取微博上行行色色的数据,微博相关的爬虫也是层出不穷,因为无论是运营者还是数据分析从业者都或多或少需要微博数据,我的许多朋友也不例外,经过断断续续的努力, ...

  4. 【python微博爬虫+定时发送邮件操作②】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途, ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/details/ ...

  5. Python+Selenium多线程基础微博爬虫

    一.随便扯扯的概述 大家好,虽然我自上大学以来就一直在关注着CSDN,在这上面学到了很多知识,可是却从来没有发过博客(还不是因为自己太菜,什么都不会),这段时间正好在机房进行期末实训,我们组做的是一个 ...

  6. 微博爬虫数据分析可视化程序设计报告

    文章目录 1 需求分析 1.1 引言 1.2 功能需求 1.3运行需求 2 详细设计 2.1界面设计 2.2 程序设计 2.3 容错性 3 总结 具体代码 analysis.py keywords_n ...

  7. python微博爬虫实战_32个Python爬虫实战项目,满足你的项目荒,附赠资料

    写在前面 学习Python爬虫的小伙伴想成为爬虫行业的大牛么? 你想在网页上爬取你想要的数据不费吹灰之力么? 那么亲爱的小伙伴们肯定需要项目实战去磨练自己的技术,毕竟没有谁能随随便便成功! 小编前段时 ...

  8. 招商银行fintech选拔课题---《基于微博爬虫的舆情分析》上

    最近参加了招商银行总行的fintench精英技术训练营的选拔赛,在通过笔试后,进入了课题研究的环节.因为前段时间学习了一段时间Python,所以选择了<基于微博爬虫的舆情分析>这一课题.该 ...

  9. 分分钟百万条数据的微博爬虫分析

    微博爬虫系列2-分析微博接口 大家好,我是W 经过上一篇的分析我们无意中发现了微博的接口,并且不做任何的账号.流量限制可以直接获取最完整的微博数据.接下来我们就通过分析微博粉丝接口查看其中的数据结构顺 ...

最新文章

  1. 使用Java实现的简单的计算器
  2. 也发一个自定义分页控件
  3. Semantic-UI的React实现(二):CSS类构造模块
  4. 都说 Go 可以开启成千上万的 Goroutine,那调度器是怎么处理核上任务分配的?
  5. MySQL 日期时间类型
  6. bzoj 1227 [SDOI2009]虔诚的墓主人
  7. markdown_Latex各种符号
  8. 华为状态栏图标替换_华为手机状态栏图标都是干嘛用的?华为手机图标含义大集合...
  9. 光伏并网pscad_100kW级组串式光伏逆变器的英飞凌模块方案介绍
  10. DDIA - 第5章 数据复制
  11. SpringBoot项目,从创建到简单实战
  12. linux系统如何看懂日志信息,Linux系统查看日志信息总结
  13. Docker进阶篇教程 docker swarm弹性、动态扩缩容
  14. 使用FDDB人脸样本检测库,测试自己的人脸检测算法性能并生成ROC曲线。
  15. 蓝牙单火开关(天猫精灵生态)方案
  16. SIMD——MMX指令集介绍
  17. TQQ2440第一节:启动代码
  18. Win11系统更新后网络速度变的很慢怎么办?
  19. 李开复:人工智能时代的科学家创业
  20. Trello 的 5 个开源替代品

热门文章

  1. Foreman部署裸机
  2. Android 在电脑上共享手机屏幕
  3. 日常总结 --- 视频播放按钮
  4. vmware下ubuntu鼠标滚轮失效解决方法
  5. 建立员工工资表(转)
  6. json数组格式的字符串通过方法直接转换为JSONArray
  7. 进入元宇宙的大门会在何处打开?
  8. Apollo 配置教程以及踩坑总结
  9. Vinoteka for mac(酒厂管理软件)
  10. Hibernate中clear()、evict()、flush()的方法使用说明