Python 爬蟲(一):爬蟲偽裝

目錄
    • 1 簡介
    • 2 偽裝策略
      • 2.1 Request Headers 問題
      • 2.2 IP 限制問題
    • 3 總結

1 簡介

對于一些有一定規模或盈利性質比較強的網站,幾乎都會做一些防爬措施,防爬措施一般來說有兩種:一種是做身份驗證,直接把蟲子擋在了門口,另一種是在網站設置各種反爬機制,讓蟲子知難而返。

2 偽裝策略

我們知道即使是一些規模很小的網站通常也會對來訪者的身份做一下檢查,如驗證請求 Headers,而對于那些上了一定規模的網站就更不用說了。因此,為了讓我們的爬蟲能夠成功爬取所需數據信息,我們需要讓爬蟲進行偽裝,簡單來說就是讓爬蟲的行為變得像普通用戶訪問一樣。

2.1 Request Headers 問題

為了演示我使用百度搜索 163郵箱

使用 F12 工具看一下請求信息

在上圖中,我們可以看到 Request Headers 中包含 Referer 和 User-Agent 兩個屬性信息,Referer 的作用是告訴服務器該網頁是從哪個頁面鏈接過來的,User-Agent 中文是用戶代理,它是一個特殊字符串頭,作用是讓服務器能夠識別用戶使用的操作系統、CPU 類型、瀏覽器等信息。通常的處理策略是:1)對于要檢查 Referer 的網站就加上;2)對于每個 request 都添加 User-Agent。

2.2 IP 限制問題

有時我們可能會對一些網站進行長期或大規模的爬取,而我們在爬取時基本不會變換 IP,有的網站可能會監控一個 IP 的訪問頻率和次數,一但超過這個閾值,就可能認作是爬蟲,從而對其進行了屏蔽,對于這種情況,我們要采取間歇性訪問的策略。

通常我們爬取是不會變換 IP 的,但有時可能會有一些特殊情況,要長時間不間斷對某網站進行爬取,這時我們就可能需要采用 IP 代理的方式,但這種方式一般會增加我們開銷,也就是可能要多花錢。

3 總結

有些時候我們進行爬取時 Request Headers 什么的已經做好了偽裝,卻并未得到如愿以償的結果,可能會出現如下幾種情況:得到的信息不完整、得到不相關的信息、得不到信息,這種情況我們就需要研究網站的防爬機制,對其進行詳細分析了。常見的幾種我列一下:

1)不規則信息:網址上會有一些沒有規則的一長串信息,這種情況通常采用 selenium(模擬瀏覽器,效率會低一些) 解決;
2)動態校驗碼:比如根據時間及一些其他自定義規則生成,這種情況我們就需要找到其規則進行破解了;
3)動態交互:需要與頁面進行交互才能通過驗證,可以采用 selenium 解決;
4)分批次異步加載:這種情況獲取的信息可能不完整,可以采用 selenium 解決。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/web/90172.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90172.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90172.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TODAY()-WEEKDAY(TODAY(),2)+1

這個Excel公式 TODAY()-WEEKDAY(TODAY(),2)1 用于計算 當前周的周一日期。下面詳細解釋它的邏輯和用法:公式解析TODAY()返回當前日期(例如今天是2023年12月20日,則 TODAY() 2023/12/20)。WEEKDAY(TODAY(), 2)計算當前日期是星期幾…

Fast Frequency Estimation Algorithm by Least Squares Phase Unwrapping

I. 引言 單個含噪正弦信號的頻率估計是一個研究已久的問題,并有多種應用[1]。在高斯白噪聲假設下,最大似然(ML)頻率估計器是Rife和Boorstyn [2]中提出的周期圖估計器,其中傅里葉變換用于搜索周期圖的最大值。周期圖估計器被廣泛認為是單頻估計…

C語言常見的預定符號常量

C語言常見的預定符號常量C 語言提供了豐富的預定義符號常量,分布在不同頭文件中,用于獲取編譯信息、數值范圍、浮點特性等關鍵信息。以下是常見預定義符號常量的分類總結:一、預定義宏(編譯時信息)由編譯器自動定義&am…

【2025】使用vue構建一個漂亮的天氣卡片

1. 核心框架:Vue Vue 以其輕量、易用、響應式數據綁定的特點,非常適合快速構建這類小型界面組件。即使是直接通過 CDN 引入,也能高效開發,降低項目復雜度,無需搭建完整工程化環境 。 2. 網絡請求:Axios 用于…

Ruby 命令行選項詳解

Ruby 命令行選項詳解 引言 Ruby 是一種廣泛使用的編程語言,它以其簡潔、優雅和強大的功能而聞名。在 Ruby 的使用過程中,命令行界面(CLI)提供了豐富的選項,可以幫助開發者更高效地與 Ruby 環境交互。本文將詳細解析 Ruby 命令行選項,旨在幫助開發者更好地利用這些工具。…

NLP復習

1.文本預處理 分詞,詞性標注,命名實體識別 1.1分詞:jieba jieba.lcut(content,cut_alltrue) 全模式 jieba.lcut(content,cut_allfalse) 精確模式 jieba.lcut_for_search(content) 搜索引擎模式 lcut和cut的區別:cut返回的是一個生成器Generator,lcut返回的是列表 生成器調…

WEB :實戰演練——從零實現一個交互輪播圖(附源碼)

文章目錄 一、輪播圖整體功能規劃二、HTML結構深度解析三、CSS樣式實現細節1. 定位系統詳解2. 顯示/隱藏機制3. 按鈕交互效果實現4. 純CSS箭頭實現5. 指示器:當前位置可視化 四、JavaScript邏輯深入解析1. 核心變量與DOM獲取2. 圖片切換函數(核心邏輯&am…

MCP 協議詳細分析一 initialize ping tools/list tools/call

MCP 協議詳細分析一 (initialize ping tools/list tools/call) 本節基于 實現一個 java 的mcp client 調用的 一個python 的mcp server 的日志,完整展示一次典型的 MCP Java SDK 通信流程、工具調用、通知機制與日志記錄,僅包含 echo-simple…

SLAM學習資料記錄

ORB_SLAM2 創建自己的數據集(還未使用) 【SLAM實戰篇】Ubuntu 20.04版本(OpenCV版本4.5.3)對于ORB-SLAM2安裝運行,代碼編譯,自己的數據集構造_ubuntu20.04 安裝運行orb_slam2算法-CSDN博客 卡爾曼濾波數據…

用Phi-3 Mini微調實現英文到尤達語翻譯

用Phi-3 Mini微調實現英文到尤達語翻譯 引言 本文將帶你快速上手大模型微調實踐——以微軟的Phi-3 Mini 4K Instruct模型為例,教你如何將其微調為一個能把英文翻譯成"尤達語"(《星球大戰》中尤達大師的獨特說話風格)的模型。這是一…

AI助力,輕松實現人聲分離伴奏提取

親愛的小伙伴們!前段時間,有一位同事家的可愛小孩參加了一場英語演講比賽。同事找到我,希望我能幫個忙,把講視頻中的人聲去掉,只提取出其中相應的伴奏。今天,我就來和大家分享一下究竟如何實現從 MP4 視頻中…

第1章第2章筆記

OSI參考模型---開放式系統互聯模型---OSI/RM ISO--->國際標準化組織;特點:先有模型,在又協議。 OSI七層參考模型:應用層 --- 提供網絡服務;自然語言-->編碼表示層 --- 對數據的處理;格式化&#xff0…

圖的BFS和DFS

一,圖的遍歷邏輯1.之前我們學了圖的存儲,可以鄰接表存和鄰接矩陣存。現在我們要學習圖的遍歷操作和樹類似可以分為深度遍歷和廣度遍歷,而深度遍歷也是用遞歸實現,廣度遍歷是用隊列實現2.深度遍歷(DFS)a.確定起點b.找到一條邊按順時…

WWDC 25 給自定義 SwiftUI 視圖穿上“玻璃外衣”:最新 Liquid Glass 皮膚詳解

引子 各位 iOS 足球體育健兒們,且聽我一言!想當年在《少林足球》里,阿星一句“做人如果沒夢想,那跟咸魚有什么分別啊?”點燃了多少人的江湖夢。 如今在 SwiftUI 江湖里,Apple 于 WWDC 25 推出的 Liquid Gl…

Day01_C++

01.思維導圖02.方法一&#xff1a;#include <iostream> #include <cstring> #include <iostream> using namespace std; class mystring { private:char* buf;int len;public:mystring(const char* str);void copy(const char* ptr);void copy(mystring ptr)…

C語言學習(days09)

二維數組的定義與特性二維數組的聲明格式為&#xff1a;類型說明符 數組名[表達式1][表達式2];[下標1]表示行索引&#xff0c;[下標2]表示列索引。二維數組可視為由多個一維數組組成&#xff0c;a[0]表示第0行的首地址&#xff08;即一維數組地址&#xff09;a[0][0]表示第0的第…

WIFI路由器長期不重啟,手機連接時提示無IP分配

今天在公司&#xff0c;突然發現手機連不上公司WIFI。每次鏈接&#xff0c;提示無IP分析。我以為是我手機出問題了&#xff0c;想復位一下。后來一想萬一復位還是不靈&#xff0c;怎么辦&#xff1f;同事認為是路由器沒有重啟的原因。于是找到路由器&#xff0c;重啟&#xff0…

【前沿技術動態】【AI總結】RustFS:從 0 到 1 打造下一代分布式對象存儲

目錄1 引言&#xff1a;為什么我們又需要一個新的對象存儲2 RustFS 全景速覽3 技術架構深度拆解3.1 整體拓撲3.2 關鍵數據結構&#xff08;rust 偽代碼&#xff09;3.3 讀寫路徑&#xff08;寫放大 < 1.1&#xff09;4 核心源碼導讀4.1 關鍵函數跟蹤4.2 一段最小可復現示例5…

ImageNet1K數據集的下載解壓與處理

前言 博主因為這個數據集踩了好多坑&#xff0c;浪費了好幾天時間&#xff0c;最近終于找到了高效的辦法&#xff0c;寫此篇文章來記錄具體操作方法&#xff0c;也希望可以幫助到有需要的人。&#xff08;主要是在云服務器是使用&#xff09; 下載數據集 一共下載三個文件&…

OkHttp 與 Room 結合使用:構建高效的 Android 本地緩存策略

前言在現代 Android 應用開發中&#xff0c;網絡請求與本地數據持久化是兩大核心功能。OkHttp 作為強大的網絡請求庫&#xff0c;與 Jetpack Room 持久化庫的結合使用&#xff0c;可以創建高效的數據緩存策略&#xff0c;提升應用性能和用戶體驗。本文將詳細介紹如何將這兩者完…