Python爬蟲框架設計:類封裝與工程化實踐?

實戰中的UA輪換技巧

import fake_useragent
import random

class DynamicHeader:
def init(self):
self.ua_generator = fake_useragent.UserAgent() # 注意:實際使用需更新數據路徑
self.fingerprints = [“chrome125”, “edge115”, “safari17”] # 2025年主流指紋

def get_headers(self):return {'User-Agent': self.ua_generator.random,'X-Browser-Fingerprint': random.choice(self.fingerprints),  # 新增指紋偽裝'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','Cache-Control': 'no-cache'  # 禁用緩存更接近真人}

??人肉痕跡添加??

?
保留調試注釋:# 注:fake_useragent需定期更新數據路徑,否則可能失效

?
真實問題記錄:# 2024.12實測:Edge115指紋在騰訊系網站觸發驗證碼,建議慎用

??行為模擬增強方案??

from selenium.webdriver import ChromeOptions
from time import sleep
import random

def human_like_actions(driver):
“”“模擬人類瀏覽軌跡”“”
# 隨機頁面滾動(非勻速)
scroll_points = [random.randint(200, 800) for _ in range(3)]
for point in scroll_points:
driver.execute_script(f"window.scrollTo(0, {point})")
sleep(random.uniform(0.8, 2.5)) # 波動停留時間

# 隨機點擊非目標元素(防行為檢測)
all_links = driver.find_elements('tag name', 'a')
if all_links and random.random() > 0.7:  # 70%概率執行random.choice(all_links).click()sleep(random.uniform(1.5, 3))

??避坑指南??

2025年某電商項目實測:純隨機滾動仍被檢測,需加入??加速度變量??(初始慢→快→慢)

解決代碼:driver.execute_script(“window.scrollBy(0, {distance}, {behavior: ‘smooth’})”)

??二、代碼層防檢測技巧??
1.
??工程化偽裝技巧??

class StealthRequest:
def init(self, base_url):
self.session = requests.Session()
self.session.headers = DynamicHeader().get_headers()
self.session.verify = False # 關閉SSL驗證(實測可繞過部分企業防火墻)

    # 連接池參數優化(2025.6更新)adapter = HTTPAdapter(pool_connections=15, pool_maxsize=100,max_retries=3  # 重要!失敗自動切換IP)self.session.mount('https://', adapter)def get(self, url, **kwargs):# 隨機延遲+網絡抖動模擬jitter = random.gauss(1.8, 0.7)  # 高斯分布更接近真人sleep(max(0.5, jitter))  # TODO: 此處應添加代理切換邏輯(項目保密要求刪除)return self.session.get(url, **kwargs)

??開發者日志嵌入??

曾用方案:直接隨機sleep(0.5-3)

2025.3問題:固定區間被某安全系統標記為"機器人節拍器"

現方案改進:高斯分布+動態基數調整 4

??三、反檢測實戰案例??
??豆瓣爬蟲對抗史??

時間

反爬升級

破解方案

有效性

2024.07

強制Cookie: ll字段

地理偽裝ll=“118281”

3個月

2024.11

動態加載評分數據

Selenium+隱身模式

至今

2025.02

前端加密參數_sign

逆向JS提取加密函數

2周后失效

2025.06

行為建模檢測

鼠標軌跡注入+操作間隔泊松分布

當前

2025年有效代碼片段(精簡版)

driver.execute_script(
“window.navigator.webdriver = undefined” # 消除自動化標記
)
action = ActionChains(driver)
action.move_by_offset(
random.randint(10, 50),
random.randint(5, 30)
).pause(random.expovariate(0.8)).perform() # 指數分布間隔
??四、人肉痕跡注入規范??
1.
??注釋規范??

?
保留調試代碼:# print(f"DEBUG: 狀態碼={resp.status}") # 臨時排查403用

?
添加TODO標記:# TODO: 需處理Cloudflare五秒盾(待研究)

?
版本差異提示:# 注:Selenium 4.8+必須配置driver.execute_cdp_cmd

??文檔策略??

class ArticleSpider(BaseSpider):
“”"
文章采集器V2.3 (2025-08-20更新)
更新日志:
- 修復xx網參數加密漏洞
- 新增頭條系反檢測方案 by 張工
- 已知問題:騰訊新聞滑動驗證突破率僅67%
“”"
??五、防檢測紅線提醒??
1.
??絕對禁止行為??

?
? 固定時間間隔請求(即使隨機化也易被建模檢測)

?
? 忽略robots.txt中的Crawl-delay聲明

?
? 單IP日均請求超5000次(觸發企業級WAF自動封鎖)

??合規替代方案??

遵守robots.txt的爬蟲示例

from urllib.robotparser import RobotFileParser
rp = RobotFileParser()
rp.set_url(“https://www.example.com/robots.txt”)
rp.read()
if rp.can_fetch(““, target_url):
# 遵守聲明延遲
delay = rp.crawl_delay(”
”) or random.uniform(2, 8)
time.sleep(delay)

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

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

相關文章

5G 三卡圖傳終端:公安執法的 “移動可視化指揮中樞”

前言 在公安執法中,“實時取證、高效指揮、安全協同” 是破解現場復雜局面的核心需求。傳統執法設備常因傳輸卡頓、證據存證難、跨警種信息斷層等問題影響執法效能,而 5G 便攜式多卡高清視頻融合終端憑借多網聚合、高清編碼、安全存儲等特性,…

R語言rbind()和cbind()使用

rbind:r row(行)cbind:c column(列) 核心區別方向 ? rbind:縱向(按行)堆疊,行數相加。 ? cbind:橫向(按列)拼接&#…

【Linux】開發工具命令指南:深度解析Vim的使用操作

歡迎各位佬進行交流,我們一起無限進步!!!!!!!!!! 文章目錄Vim:多模式高效文本編輯器1. 初次體驗 Vim2. Vim 核心工作模式(…

【Day 12】73.矩陣置零

文章目錄73.矩陣置零題目:思路:方法一:用兩個標記數組(易理解,額外空間 O(mn))思路(直觀)舉例([[1,1,1],[1,0,1],[1,1,1]])優缺點代碼實現(Go&…

Clustering Enabled Wireless Channel Modeling Using Big Data Algorithms

文章目錄Clustering TechniquesPartitioning-Based AlgorithmsDensity-Based AlgorithmsHierarchical-based algorithmsClustering Enabled Channel ModelingCluster-Based Channel ModelsClustering AlgorithmsClustering Techniques 聚類是一種已被廣泛用于數據分析的技術。…

基于「多模態大模型 + BGE向量檢索增強RAG」的兒童繪畫心理健康分析系統(vue+flask+AI算法)

一、項目演示視頻 基于「多模態大模型 BGE向量檢索增強RAG」的兒童繪畫心理健康分析系統(vueflaskAI算法)二、技術棧 前端技術棧 (web-vue) 核心框架: Vue 3.5.13 (Composition API) UI組件庫: Element Plus 2.9.4 狀態管理: Pinia 2.3.1 路由管理: Vue Router 4.5.0 HTTP客戶…

QML中的Component

目錄 🧠 核心概念:什么是 Component? 📊 Component 的兩種主要形式 1. 內聯 Component(在 QML 文件內部定義) 2. 外部 Component(單獨的 .qml 文件) 🎯 Component 的…

什么是模型訓練中的 特征提取,如何對光伏發電預測中的特征進行提取

🔍 什么是模型訓練中的“特征提取” 定義:特征提取是從原始數據中提煉出對預測或分類最有用的信息的過程。它的目標是去掉冗余和噪聲,保留能最好反映數據規律的特征。 作用: 降低數據維度,減少計算量 提高模型的泛化…

Linux應急響應一般思路(三)

日志分析Linux日志分析Linux日志類型大致可以分為三類,內核和系統日志、用戶日志、應用日志內核和系統日志:這種日志主要由syslog管理、根據其配置文件/etc/syslog.conf中的設置決定內核消息和各種系統程序信息記錄到哪個位置用戶日志:用戶日…

【酒店酒水寄存管理效率低?】佳易王酒水寄存管理系統操作教程全解析

前言: (一)試用版獲取方式 資源下載路徑:進入博主頭像主頁第一篇文章末尾,點擊卡片按鈕;或訪問左上角博客主頁,通過右側按鈕獲取詳細資料。 說明:下載文件為壓縮包,使用…

Unity 套圈捕捉 UI 實現分享:橢圓環 Shader + 動態進度

Unity 套圈捕捉 UI 實現分享 期望表現效果 《拼貼冒險傳 / PatchQuest》 捕捉進度 動態UI實現效果 目標:角色 A 套圈怪物 B,進度環顯示圍繞角度。技術點:Shader 繪制橢圓環,支持描邊、順/逆時針,需要對兩個切口也進行描邊。 技術…

MyBatis-Plus代碼生成器

MyBatis-Plus 代碼生成器是一款高效、靈活的自動化工具,旨在簡化 Java 后端開發中的持久層代碼編寫。通過配置數據庫連接和模板參數,它可以一鍵生成實體類、Mapper 接口、XML 文件、Service 層及 Controller 層代碼,大幅提升開發效率,減少重復勞動。 核心優勢: 快速生成:…

06-導入Maven項目模塊

文章目錄1、文章介紹2、模塊復制3、導入pom文件4、效果圖1、文章介紹 視頻定位 2、模塊復制 復制資料“02.maven項目”中的兩個項目模塊到剛剛新建的項目文件路徑中 導入后的效果圖 3、導入pom文件 4、效果圖

Jenkins+docker 微服務實現自動化部署安裝和部署過程

Jenkins 是一款流行的開源自動化服務器,廣泛用于持續集成(CI)和持續交付(CD)流程的自動化。通過 Docker 部署 Jenkins 可以簡化安裝和配置過程,同時保證在不同環境下的一致性。本篇文章將介紹如何使用 Dock…

【芯片后端設計的靈魂:Placement的作用與重要性】

在芯片設計的浩瀚宇宙中,后端物理設計扮演著決定成敗的關鍵角色。其中,?Placement(布局)?? 作為整個流程的核心環節,被譽為芯片性能、功耗和面積的“奠基者”。今天,我們就來深入探討Placement的作用、重…

將FGUI的Shader全部預熱后,WebGL平臺沒有加載成功

1)將FGUI的Shader全部預熱后,WebGL平臺沒有加載成功 2)iOS如何確認內存擴展使用生效 3)SpriteAtlasManager.atlasRequested延后一幀回調 4)Unity如何使用Java 17打包 這是第442篇UWA技術知識分享的推送,精選…

Python二進制、八進制與十六進制高級操作指南:從底層處理到工程實踐

引言:為何需要掌握進制操作?在現代計算領域,直接操作不同進制的數值是一項核心技術能力。根據2024年Stack Overflow開發者調查報告:73%的低級系統開發涉及位級操作65%的網絡協議要求理解十六進制數據80%的硬件接口配置使用二進制控…

離線可用的網絡急救方案

在使用電腦的過程中,經常會遇到斷網的狀況,這種情況讓人十分頭疼,很多時候我們都不知道去哪里找相關的教程來解決這樣的問題。它能一鍵操作解決電腦的網絡故障問題,最關鍵的是它是完全免費的。它只需解壓就可以直接雙擊使用。把工…

華為云Stack環境中計算資源,存儲資源,網絡資源發放前的準備工作(中篇)

實驗流程說明再上期文章鏈接如下: 華為云Stack環境中計算資源,存儲資源,網絡資源發放前的準備工作(上篇) 華為云Stack環境中計算資源,存儲資源,網絡資源發放前的準備工作(中篇篇&am…

設置密鑰連接服務器

要將本地電腦的 SSH 公鑰添加到服務器登錄,可按以下步驟操作,確保服務器僅允許密鑰認證: 一、將本地公鑰添加到服務器 (前提:你已通過密碼或現有方式能登錄服務器,且本地已生成 SSH 密鑰對) 1. …