什么是爬蟲協議?

什么是爬蟲協議?

爬蟲協議(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。…