什么是爬虫协议?

爬虫协议(Crawl Protocol)是指为了有效地收集网页内容而建立的一些规定和标准,用以指导网络爬虫如何在互联网上抓取信息。

爬虫协议主要指的是Robots协议(Robots Exclusion Protocol),是网站和网络爬虫之间的一套"君子协定",用来规范爬虫的访问行为。

根据 百度百科的定义
在这里插入图片描述

基本语法规则

# 注释行,以#开头
User-agent: *          # 指定爬虫类型,*表示所有爬虫
Disallow: /private/    # 禁止访问的路径
Allow: /public/        # 允许访问的路径(可选)
Crawl-delay: 10        # 建议的访问间隔时间(秒)
Sitemap: https://example.com/sitemap.xml  # 网站地图位置
指令含义示例
User-agent指定目标爬虫User-agent: Googlebot
Disallow禁止访问的路径Disallow: /admin/
Allow明确允许的路径Allow: /public/
Crawl-delay访问间隔建议Crawl-delay: 5
Sitemap网站地图位置Sitemap: /sitemap.xml

文章目录

  • 什么是爬虫协议?
    • 1. 爬虫协议robots.txt
    • 2. User-Agent
    • 3. Crawl-delay
    • 4. HTTP 标头协议
    • 5. IP 限制与反爬虫机制
    • 6. 验证码与挑战
    • 7. API 限制
    • 8. 法律和道德
    • 9. 示例说明
    • 一个爬虫案列
    • 总结


1. 爬虫协议robots.txt

功能: robots.txt 是网站放置在根目录下的一个文本文件,用来指定哪些内容允许被搜索引擎的爬虫抓取,哪些内容不允许被抓取。

robots协议,全称是Robots Exclusion Protocol,是网站用来告诉网络爬虫哪些页面可以访问,哪些不能访问的标准。它通过网站根目录下的robots.txt文件来实现。

工作原理: 爬虫在访问网站时会先请求 robots.txt 文件,检查是否有访问限制。

常见规则:

User-agent: 指定爬虫的名称。
Disallow: 指定不允许爬虫抓取的路径。
Allow: 指定允许爬虫抓取的路径。

例子:

User-agent: *
Disallow: /private/
Allow: /public/

2. User-Agent

功能: User-Agent 是一种 HTTP 请求头,标识了发出请求的客户端(通常是浏览器或爬虫)的信息。网站可以通过 User-Agent 来识别和限制不同的爬虫。

工作原理: 网站可以根据爬虫的 User-Agent 来拒绝或限制某些爬虫的访问,避免过多流量或滥用。

常见做法: 网站可能会禁止某些爬虫,或者根据爬虫的身份提供不同的内容。

3. Crawl-delay

功能: 这是 robots.txt 中的一个指令,用来告诉爬虫在访问每个页面后应该等待多少秒才可以继续抓取下一个页面。

工作原理: 通过设置 Crawl-delay,网站管理员可以控制爬虫访问频率,避免过度抓取导致服务器负担过大。

例子:

makefile
复制
编辑
User-agent: Googlebot
Crawl-delay: 10

4. HTTP 标头协议

功能: HTTP 请求头中包含的信息,如 Referer, Host, Accept 等,爬虫需要根据这些协议来构造自己的请求,以确保模拟一个正常用户的浏览行为,避免被检测和屏蔽。

工作原理: 通过伪造真实的 HTTP 请求头,爬虫可以避免被检测为非正常用户访问。

例子:

makefile
复制
编辑
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Referer: https://www.example.com

5. IP 限制与反爬虫机制

功能: 许多网站通过检查 IP 地址来限制爬虫的访问,过度抓取可能会导致 IP 被封禁。

工作原理: 如果爬虫的请求频率过高,服务器可能会将其 IP 地址列入黑名单,阻止其继续访问。为了绕过这种限制,爬虫可能需要使用代理池。

常见做法: 反爬虫技术会通过分析访问模式、请求头等信息来识别和拦截爬虫。

6. 验证码与挑战

功能: 为了防止自动化爬虫的行为,许多网站会在登录、提交表单或访问特定页面时显示验证码(CAPTCHA)。

工作原理: 爬虫需要通过人工或自动破解 CAPTCHA 来继续抓取数据,但这一过程复杂且常常导致爬虫的失败。

常见类型: 图片验证码、滑动验证码、行为验证码等。

7. API 限制

功能: 许多网站提供公开的 API 供开发者使用,但有时会对 API 请求进行限制,例如请求次数、请求频率等,以防止滥用。

工作原理: 使用 API 时,通常会有一定的速率限制(Rate Limiting),当请求超过限制时,API 会返回错误或暂时阻止访问。

8. 法律和道德

功能: 许多国家或地区对爬虫的使用有法律约束,特别是爬取用户数据或个人信息时。
工作原理: 爬虫需要遵循相关的法律法规,并遵守网站的隐私政策以及数据使用协议。

9. 示例说明

我们是可以访问
https://www.python.org/robots.txt

# Directions for robots.  See this URL:
# http://www.robotstxt.org/robotstxt.html
# for a description of the file format.User-agent: HTTrack
User-agent: puf
User-agent: MSIECrawler
Disallow: /# The Krugle web crawler (though based on Nutch) is OK.
User-agent: Krugle
Allow: /
Disallow: /~guido/orlijn/
Disallow: /webstats/# No one should be crawling us with Nutch.
User-agent: Nutch
Disallow: /# Hide old versions of the documentation and various large sets of files.
User-agent: *
Disallow: /~guido/orlijn/
Disallow: /webstats/

那我们在分析一下这个段什么意思

主要分 5部分
1.开头的注释部分

# Directions for robots.  See this URL:
# http://www.robotstxt.org/robotstxt.html
# for a description of the file format.

这个注释有什么作用?
这是标准的文档说明,指向了robots协议的官方规范。作为技术管理者,您应该知道这种文档化的重要性——它帮助开发者理解协议的标准用法。

2.对特定User-agent的限制(HTTrack, puf, MSIECrawler)

User-agent: HTTrack
User-agent: puf  
User-agent: MSIECrawler
Disallow: /

为什么要专门禁止这些爬虫?
这是基于历史经验的决策:

HTTrack:网站复制工具,可能会下载整个网站
puf:可能是某个有问题的爬虫
MSIECrawler:微软的早期爬虫,可能有兼容性问题
Disallow: / 表示禁止访问整个网站。

3.对Krugle爬虫的特殊允许

# The Krugle web crawler (though based on Nutch) is OK.
User-agent: Krugle
Allow: /
Disallow: /~guido/orlijn/
Disallow: /webstats/

白名单机制
这里为什么给Krugle特殊待遇?
Krugle是一个代码搜索引擎,对Python社区有益。注意这里的策略:
Allow: / - 基本允许访问
但仍然禁止访问私人目录和统计数据

4.对Nutch爬虫的禁止
技术决策:Nutch的禁止

# No one should be crawling us with Nutch.
User-agent: Nutch
Disallow: /

为什么单独禁止Nutch?注释说得很直接。
Nutch是Apache的开源爬虫框架,但Python.org显然有过不好的经验。
可能是因为:
默认配置过于激进
缺乏适当的限速机制
或者曾导致服务器负载问题

5.对所有爬虫的通用规则

User-agent: *
Disallow: /~guido/orlijn/
Disallow: /webstats/

两个目录有什么特殊性?

/~guido/orlijn/ - 这是Guido van Rossum(Python创始人)的个人目录,显然包含私人内容
/webstats/ - 网站统计数据,属于内部信息

一个爬虫案列

使用 Trea cn 设计 爬虫程序 so esay

总结

爬虫协议是为了确保网络爬虫能够合法、有效地从互联网上抓取信息的规则。遵守这些协议不仅可以避免法律风险,还能确保爬虫行为不对目标网站造成过多负担。在进行爬虫抓取时,始终应当尊重网站的 robots.txt 文件、爬取频率及使用API接口时遵循相关的限制。

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

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

相关文章

空间平面旋转与xoy平行

空间平面旋转与xoy平行 法向量 空间平面axbyczd0的其中一个法向量(a,b,c),法向量垂直于空间平面。目标平面平行于xoy的平面为0x0yczd0;其中一个法向量为(0,0,c),c可以为不为0的任意值,取(0,0,1),目标平面的的法向量垂直于xoy平面 向量叉乘点乘 两个向量的…

odoo reportbro 拖拽式报表设计

报表设计以及下载 在实际业务中应用非常的广泛且频繁。odoo 本身也具有报表设计功能,但都是代码模式。且需要开发人员定制化开发,耗费成本高 所以引入reportbro报表设计就非常的简单快捷。低代码模式 以下以销售报表为例进行演示 报表字段配置报表界面设…

数字信号处理_编程实例1

stem([1,2,3]) 一、初始设置 %% 初始设置 % 清空工作空间,关闭无关页面 clc,clear,close all; % 绘图变量 font_size 12; %全局基础字体大小 axis_size 10; %坐标轴刻度标签字体大小 line_width 2; %绘图线条宽度 legend_size 10.5; %图例字体大小 marker_siz…

Docker 安装部署 OceanBase

1.拉取镜像 docker pull oceanbase/oceanbase-ce:latest2.启动oceanbase容器 docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE0 -d quay.io/oceanbase/oceanbase-ce3.查看oceanbase初始化的日志信息 docker logs oceanbase-ce4.进入oceanbase容器 docker exec -it o…

【华为机试】685. 冗余连接 II

文章目录685. 冗余连接 II题目描述示例 1:示例 2:提示:解题思路算法分析核心思想算法策略算法对比问题分类流程图并查集环检测流程入度统计与候选边选择情况分析决策树完整算法流程复杂度分析时间复杂度空间复杂度关键实现技巧1. 并查集优化2…

Redis之Hash和List类型常用命令

Redis之Hash和List类型常用命令一、Hash类型详解1. Hash类型的特点2. 常用命令及示例(1)设置字段值(2)获取字段值(3)删除字段(4)其他常用命令3. 应用场景二、List类型详解1. List类型…

【测试】⾃动化测试概念篇

本节⽬标:⾃动化测试Web⾃动化测试selenium1. ⾃动化1.1 ⾃动化概念⾃动化在⽣活中处处可⻅,⾃动的代替⼈的⾏为完成操作。⾃动洒⽔机,主要通上⽔就可以⾃动化洒⽔并且可以⾃动的旋转。⾃动洗⼿液,免去了⼿动挤压可以⾃动感应出洗…

Java中给List<T> 对象集合去重

Java中给List 对象集合去重List<Student> getStudentList studentMapper.getStudentList();List<Student> distinctInsurance distinctByField(getStudentList, Student::getCertNo);public static <T> List<T> distinctByField(List<T> list…

最小二乘法MSE

最小二乘法MSEx1x2x3x4x5x6x7x8x0y014805-29-31339-41064-14-2-1481-114-1-65-123-32-21305-23105114-81126-15-15-8-157-4-1221-39511-10-243-9-671-87-1404-35101371422-3-7-2-80-6-5-91-3091前景知识: 矩阵相关公式y(339−11430126−395−87422−309)y\begin{pmatrix} 339&a…

Pixel 4D 3.4.4.0 | 支持丰富的壁纸资源,高清画质,高度的个性化设置能力,智能推荐功能

Pixel 4D是一款功能强大且用户体验良好的动态壁纸应用。它提供了丰富的壁纸资源和高清画质&#xff0c;让用户可以轻松找到自己喜欢的壁纸。此外&#xff0c;该应用还具备高度的个性化设置能力&#xff0c;允许用户根据自己的喜好调整壁纸效果。智能推荐功能则能帮助用户发现更…

<PhotoShop><JavaScript><脚本>基于JavaScript,利用脚本实现PS软件批量替换图片,并转换为智能对象?

前言 PhotoShop软件支持JavaScript脚本,来扩展软件的功能,官方本身也提供了一些常用脚本,如图像处理等,同时也支持自定义的JavaScript脚本。 环境配置 系统:windows 平台:visual studio code 语言:JavaScript 软件:PhotoShop 2022 版本:23.2.1 概述 本文利用Java…

【Linux】System V - 基于建造者模式的信号量

目录 信号量和P、V原语 信号量集结构体 信号量操作接口 semget semctl semop 封装Sem 关于建造者模式 信号量和P、V原语 信号量和 P、V 原语由 Dijkstra &#xff08;迪杰斯特拉&#xff09;提出 信号量值含义 S>0: S 表⽰可⽤资源的个数 S0: 表⽰⽆可⽤资源&a…

机器学习(11):岭回归Ridge

岭回归是失损函数通过添加所有权重的平方和的乘积(L2)来惩罚模型的复杂度。均方差除以2是因为方便求导&#xff0c;w_j指所有的权重系数, λ指惩罚型系数&#xff0c;又叫正则项力度特点:岭回归不会将权重压缩到零&#xff0c;这意味着所有特征都会保留在模型中&#xff0c;但它…

调整Idea缓存目录,释放C盘空间

本文使用 Idea2024 Idea 会将一些配置默认缓存在C盘&#xff0c;使用久了会占用大量空间&#xff08;本人的Idea占用了将近5个G&#xff0c;以至于不得不进行迁移&#xff09; 缓存目录主要涉及以下四个目录&#xff0c;四个目录可以分为两组&#xff0c;每组目录必须一起调整 …

手搓栅格工具-山体阴影

一、概述 山体阴影工具通过为栅格中的每个像元确定照明度&#xff0c;来获取表面的假定照明度。 通过设置假定光源的位置并计算每个像元相对于相邻像元的照明度值来实现此目的。 它可以显著增强用于分析或图形显示的表面的可视化效果&#xff0c;尤其是在使用透明度时。 默认情…

Censtos docker安装方法

#设置防火墙 systemctl stop firewalld.service setenforce 0 #安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 #yum-utils&#xff1a;提供了 yum-config-manager 工具。 #device mapper&#xff1a; 是Linux内核中支持逻辑卷管理的通用设备映射机制…

单片机51 day46

单片机 一&#xff1a;基础概念 一&#xff1a;单片机最小系统 单片机&#xff1a;电源时钟&#xff08;晶振&#xff09;复位 //实现的最小组件 电源&#xff1a;5V直流 时钟(晶振)&#xff1a;决定系统运行的速率 一般12M&#xff08;不超过50M&#xff09;&#xff0c…

【无标题】解锁未来无线网络的无限可能——Mesh自组网设备

在科技迅猛发展的今天&#xff0c;无线网络已经成为了现代生活不可或缺的一部分。无论是在家庭中娱乐观看视频、在线游戏&#xff0c;还是在企业中进行办公、远程协作&#xff0c;网络的稳定性和覆盖范围都直接影响着我们的使用体验。传统的Wi-Fi网络在面临多设备同时连接或大面…

Libevent(5)之使用教程(4)工具

Libevent(5)之使用教程(4)工具函数 Author: Once Day Date: 2025年8月3日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 本文档翻译于&#xff1a;Fast portable non-blo…

Linux指令(3):

1. cal指令&#xff1a;我们的cal指令有日历的意思看上面&#xff0c;我们输入一个cal指令&#xff0c;可以查看当前月的日历&#xff0c;我们给cal指令后面加上 - 3&#xff0c;他就会显示这个月为中间的三个月的日历&#xff0c;但是-4 不行&#xff0c;-5 也不行。只能 - 3。…