`
JerryWang_SAP
  • 浏览: 1002247 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Tomcat和搜索引擎网络爬虫的攻防

阅读更多

不知道广大程序员朋友们注意到一个现象么?用百度是无法搜索到淘宝网的网页。为什么会造成这种现象?这就要从网络爬虫说起了。

咱们程序员如果自己搭设个人网站,在上面分享一些自己的技术文章,面临的一个重要问题就是让搜索引擎能够搜索到自己的个人网站,这样才能让更多的读者访问到。

而搜索引擎如百度和微软Bing搜索,Google搜索等通过什么方式才能收录我们的个人网站呢?

答案是搜索引擎的网络爬虫。 网络爬虫是一个很形象的名词,是属于搜索引擎的工具,只有被这些网络爬虫“爬过”的内容才有机会出现在对应搜索引擎的搜索结果中。

个人站长对网络爬虫是又爱又恨。一方面,网络爬虫可以让我们的个人网站出现在搜索结果里,对我们的个人网站进行扩散。另一方面,如果网络爬虫太多太频繁地访问个人网站,会一定程度上影响正常用户的请求处理。

于是就有了文章开头我提到的百度搜不到淘宝产品信息的文章。

在浏览器里输入https://www.taobao.com/robots.txt,

能看到淘宝网的一个文件robots.txt:

Tomcat和搜索引擎网络爬虫的攻防

 

随便选一段解释:这个robots.txt的意思是,淘宝网做出了规定,如果网络请求来自百度爬虫(Baiduspider), 那么只允许(allow)百度爬虫读取article, oshtml和/ershou, 不允许读取的是product。

User-agent: Baiduspider

Allow: /article

Allow: /oshtml

Allow: /ershou

Disallow: /product/

Disallow: /

那么淘宝网怎么知道一个请求是来自百度爬虫,还是来自真正的用户访问呢?答案就是HTTP请求的User-agent字段。

下图是我用Chrome访问淘宝网的HTTP请求的User-agent:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36

Tomcat和搜索引擎网络爬虫的攻防

 

再回到Tomcat。如果有大量来自网络爬虫的读取请求,Web服务器需要为每一个请求创建一个session。当Session数量变得巨大时,消耗的服务器内存和资源也是巨大的。

因此,Tomcat对于来自网络爬虫的请求,使用同一个session来处理。

我们打开Tomcat的源代码来学习。

Tomcat的源代码可以到其官网去下载:

https://tomcat.apache.org/download-70.cgi

点这个链接:

Tomcat和搜索引擎网络爬虫的攻防

 

我下载的是7.0.90版本,只有7MB大。

这里需要注意,即使Spider显式的传了一个 sessionId过来,也会弃用,而是根据client Ip 来进行判断,即对于 相同的 Spider 只提供一个Session。

在下载好的源代码文件夹里,找到这个子文件夹:apache-tomcat-7.0.90-srcjavaorgapachecatalinaalves

打开CrawlerSessionManagerValve.java:

可以看到从第192行代码开始都是Tomcat用来检测进来的网络请求是否是网络爬虫:

Tomcat和搜索引擎网络爬虫的攻防

 

通过这个类里定义的正则表达式检测HTTP请求的user-agent字段来判断到底该请求是否来自网络爬虫:

Tomcat和搜索引擎网络爬虫的攻防

 

".*[bB]ot.*|.*Yahoo! Slurp.*|.*Feedfetcher-Google.*"

一旦正则表达式在第205行匹配成功,将第206行的标志位设成true。

Tomcat和搜索引擎网络爬虫的攻防

 

如果检测到是网络爬虫,则用clientIdSessionId.get这个API获取Tomcat专门为网络爬虫预留的sessionId, 然后在第226行把该sessionId分配到进来的网络爬虫请求,这样就避免了浪费太多的资源申请session来服务海量的网络爬虫请求,节省了Web服务器的资源。

 

Tomcat和搜索引擎网络爬虫的攻防

 

Tomcat和搜索引擎网络爬虫的攻防
0
0
分享到:
评论

相关推荐

    java网络爬虫+数据库+jsp+搜索引擎.rar.rar

    Java网络爬虫、数据库、JSP以及搜索引擎是四个紧密关联的IT技术领域,它们共同构建了一个数据抓取、存储、展示和检索的完整系统。在这个系统中,Java网络爬虫负责从互联网上自动抓取信息,数据库用于存储这些信息,...

    基于java+Lucene+Tomcat的搜索引擎设计与实现(源码+文档)JAVA-Lucene-Tomcat-搜索引擎.zip

    资源名字:基于java+Lucene+Tomcat的搜索引擎设计与实现(源码+文档)JAVA_Lucene_Tomcat_搜索引擎.zip 资源类型:项目全套源码+文档+辅导视频 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 适合场景...

    heritrix爬虫,安装tomcat

    Heritrix是一款开源的...总结来说,Heritrix是一个强大的网络爬虫工具,通过与Eclipse集成和在Tomcat上部署,我们可以方便地进行网页抓取工作。理解其配置、构建和部署流程,对于进行大规模的数据采集和分析至关重要。

    JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk)

    JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk) JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk) JavaWeb网络爬虫(蜘蛛)源码(servlet+jsp+mysql+tomcat+eclipse+jdk) JavaWeb...

    基于java网络爬虫 包含4个jar包资源

    这是我信息检索课的课程作业。 代码注释很详细。绝对可以运行。我爬得是 搜狐 的网页。...这是一个基于java的多线程的网络爬虫。 包含了 必须使用包括 httpclient 的 4个jar包. 另外有问题欢迎交流。站内。你懂得。

    百歌搜索引擎tomcat嵌入版(Baioogle-SearchEngine Embed in Tomcat)

    关于“百歌搜索引擎tomcat嵌入版(Baioogle-SearchEngine Embed in Tomcat)”的说明: 2008年5月份,因学习《信息检索》课程,本人利用java的开源搜索引擎库lucene,以及结合ajax技术google-suggest功能,模仿baidu...

    在tomcat环境下搭建solr和mmseg4j搜索引擎

    通过以上步骤,你将在Tomcat环境中成功搭建了一个集成了mmseg4j的Solr搜索引擎,可以实现高效的中文搜索和分析。记住,实践是检验真理的唯一标准,动手操作是掌握这些知识的关键。在实际应用中,你可能会遇到各种...

    开发自己的搜索引擎

    2. **网页抓取**:搜索引擎首先需要获取网页内容,这通过编写网络爬虫程序来实现。爬虫遍历互联网,遵循HTML链接,收集网页的HTML源代码。 3. **文本预处理**:抓取的网页内容需要经过预处理,包括HTML标签去除、...

    基于网络攻防实战的网络安全技术课程体系教学研究.pdf

    随着网络安全领域的不断发展和社会对网络安全人才的需求增加,如何设计一门既能反映最新网络攻防技术,又能培养学生实践能力的课程体系显得尤为重要。本文围绕基于网络攻防实战的网络安全技术课程体系教学研究,探讨...

    tomcat 7 和 tomcat 8

    Tomcat 8更是向前迈进了一步,引入了HTTP/2和WebSocket 1.1等现代网络协议,使得应用程序能够更好地适应互联网的发展。在选择使用哪个版本时,应根据项目需求和对新特性的依赖来决定。如果你的项目需要Java EE 7规范...

    apachetomcat

    2. ** Coyote**:负责处理HTTP连接,是Tomcat服务器中的网络通信引擎。Coyote将接收到的HTTP请求转发给Catalina进行处理,并将响应返回给客户端。 3. **Jasper**:Jasper是Tomcat的JSP编译器,它将JSP文件转换为...

    tomcat7,tomcat8,tomcat9

    Tomcat7、Tomcat8和Tomcat9是不同版本的Tomcat,每个版本都有其特性和改进。 **Tomcat7**: Tomcat7是2011年发布的,它主要支持Java Servlet 3.0和JSP 2.2规范。这个版本引入了一些重要改进,包括增强的安全性、更...

    搜索引擎solr最新版,tomcat启动

    Solr是中国最流行的开源全文搜索引擎之一,它基于Java并运行在Tomcat等Servlet容器之上。标题提到的是关于使用Tomcat启动最新版本的Solr 7.3.1,这是一个非常实用的技术场景,因为Tomcat是Apache的一个流行且轻量级...

    java网络爬虫源码.zip

    Java网络爬虫是一种用于自动化获取网页数据的程序,它能够模拟浏览器的行为,通过HTTP或HTTPS协议与...通过学习和实践这个项目,你可以深入了解网络爬虫的工作机制,以及如何在Java环境下实现一个完整的爬虫系统。

    基于网络爬虫技术的网络新闻分析.rar

    基于网络爬虫技术的网络新闻分析主要用于网络数据爬取。本系统结构如下: (1)网络爬虫模块。 (2)中文分词模块。 (3)中3文相似度判定模块。 (4)数据结构化存储模块。 (5)数据可视化展示模块。

    2022中职网络搭建国赛公布题tomcat题解题思路

    【网络搭建与Tomcat服务器配置】 在2022年的中职网络搭建国赛中,参赛者们面临了一道关于Tomcat服务器配置的题目。这道题目的解答思路分为几个关键步骤,涉及到Linux系统下的JDK环境配置、Tomcat的安装与启动、端口...

    基于JAVA技术的搜索引擎的研究报告及实现收藏.doc

    一个完整的搜索引擎系统通常包括四个主要部分:网络爬虫、索引器、查询处理器和用户界面。JAVA技术在这四个方面都发挥着关键作用。 **2.1 网络机器人** 网络机器人(Web Crawler)是搜索引擎的第一步,它负责遍历...

    2021-2022收藏资料基于JAVA技术的搜索引擎的研究与实现.doc

    首先,搜索引擎的系统结构通常包括网络机器人(也称为网络爬虫)、索引引擎和Web服务器三个主要部分。网络爬虫负责自动抓取互联网上的网页,通过跟踪网页间的超链接来遍历整个网络。这一过程涉及到了HTTP协议、网页...

Global site tag (gtag.js) - Google Analytics