反爬蟲機制與反爬蟲技術(二)

反爬蟲機制與反爬蟲技術二

    • 1、動態頁面處理與驗證碼識別概述
    • 2、反爬蟲案例:頁面登錄與滑塊驗證碼處理
      • 2.1、用例簡介
      • 2.2、庫(模塊)簡介
      • 2.3、網頁分析
      • 2.4、Selenium準備操作
      • 2.5、頁面登錄
      • 2.6、模糊移動滑塊測試
    • 3、滑塊驗證碼處理:精確移動滑塊
      • 3.1、精確移動滑塊的原理
      • 3.2、滑塊驗證碼圖像缺口位置識別
      • 3.3、精確移動滑塊實現(完整代碼)


1、動態頁面處理與驗證碼識別概述


本文接上篇:反爬蟲機制與反爬蟲技術(一)

上篇中,我們詳細介紹和使用了User-Agent偽裝、代理IP、請求頻率控制等反爬蟲技術,本篇將重點針對動態頁面處理驗證碼識別進行介紹和案件詳解

近年來,網站安全性越來越高,許多網站為了避免機器人惡意攻擊,采用了滑動驗證碼。與傳統的驗證碼相比,滑動驗證碼安全性更高,更難被攻擊者破解。但是,這也給爬蟲程序帶來了困難。Python Selenium是一款非常出色的自動化測試工具,可以用來模擬瀏覽器行為,可以用于爬蟲

例如,一些網站為了防止爬蟲,使用了JavaScript來動態生成頁面內容,這對于爬蟲來說是一個挑戰。Python中的Selenium庫可以模擬瀏覽器的行為,執行JavaScript代碼,從而獲取動態生成的內容

例如在進行數據采集時,很多網站需要進行登錄才能獲取到目標數據,這時可以使用Selenium庫進行模擬登錄進行處理

另外,一些網站為了防止爬蟲,會在登錄或提交表單時添加驗證碼。隨著反爬的不斷發展,逐漸出現了更多復雜的驗證碼,例如:內容驗證碼、滑動驗證碼、圖片拼接驗證碼等

Python提供了一些強大的圖像處理庫,例如Pillow、OpenCV等,可以用來自動識別驗證碼,從而實現自動化爬取

2、反爬蟲案例:頁面登錄與滑塊驗證碼處理

2.1、用例簡介


本案例將以豆瓣的登錄頁面為例

豆瓣登錄:https://accounts.douban.com/passport/login

操作步驟:

1) 打開豆瓣登錄頁面

2) 點擊頁面上的密碼登錄

3) 輸入賬號密碼之后,點擊登錄豆瓣按鈕

4) 點擊登錄后會彈出滑塊驗證碼,拼接驗證

在這里插入圖片描述

2.2、庫(模塊)簡介


Selenium是一種自動化測試工具,可以用于控制瀏覽器執行自動化操作,比如滑動驗證碼識別。滑動驗證碼通常是用于網站的登陸、注冊等操作,通過鼠標模擬人手在滑動拼圖或滑動滑塊,達到人機交互的效果。在自動化測試中,如果能夠識別滑動驗證碼,就可以實現完全自動化,提高效率

Selenium詳解見文章:傳送門

利用OpenCV、PIL等Python的圖像處理識別庫,可以在頁面加載完成后,對驗證碼圖片進行特征提取,然后通過算法自動計算出正確的滑塊滑動位置,并模擬用戶滑動

OpenCV詳解見文章:傳送門

本案例需要使用到的庫(模塊)如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains  # 動作類
from selenium.webdriver.support.wait import WebDriverWait  # 等待類
from selenium.webdriver.support import expected_conditions as EC  # 等待條件類
import time
import re
import numpy as np
import urllib.request as req
import cv2

2.3、網頁分析


通過檢查網頁源代碼,按照上述操作步驟進行操作,在HTML中找到用例需要使用到的一些元素

其中,點擊登錄按鈕后,就會出現滑塊驗證區域,這是一個新增的iframe區域

在這里插入圖片描述

2.4、Selenium準備操作


通過以下操作驗證Selenium環境WebDriver是否正常:

# 打開自定義配置
options = webdriver.ChromeOptions()
# 設置瀏覽器不關閉(解決閃退/自動關閉)
options.add_experimental_option('detach', True)
# 禁用瀏覽器擴展
options.add_argument('--disable-extensions')
# 禁用瀏覽器彈窗
options.add_argument('--disable-popup-blocking')
# 設置瀏覽器UA
options.add_argument('--user-agent=Mozilla/5.0')# 聲明瀏覽器對象
driver = webdriver.Chrome(options=options)# 最大化瀏覽器窗口
driver.maximize_window()# 打開豆瓣登錄頁
driver

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

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

相關文章

【模塊補充】importlib

importlib 【一】介紹 importlib 模塊是 Python 中用于動態加載和導入模塊的內置模塊。它提供了一組函數和類,使得我們可以在運行時根據需要加載模塊,并且可以對已導入的模塊進行操作和管理。 【二】詳解及示例: 【1】動態加載模塊&#…

PyQt6簡介

鋒哥原創的PyQt6視頻教程: 2024版 PyQt6 Python桌面開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili2024版 PyQt6 Python桌面開發 視頻教程(無廢話版) 玩命更新中~共計12條視頻,包括:2024版 PyQt6 Python桌面開發 視頻教程(無廢話版…

企業遠程訪問業務系統:對比MPLS專線,貝銳蒲公英為何更優優勢?

如今,企業大多都會采用OA、ERP、CRM等各種數字化業務系統。 私有云、公有云混合架構也變得越來越常見。 比如:研發系統部署在公司本地私有云、確保數據安全,OA采用公有云方案、滿足隨時隨地訪問需求。 如此一來,也產生了遠程訪問…

js前端跨屏效果

效果: 三個球 源碼: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>三個球</title> </h…

js實現圖片懶加載

方式一&#xff1a;html實現 在img標簽加上 loading"lazy" 方式二&#xff1a;js實現 通過js監聽頁面的滾動&#xff0c;實現的原理主要是判斷當前圖片是否到了可視區域&#xff1a; 拿到所有的圖片 dom 。遍歷每個圖片判斷當前圖片是否到了可視區范圍內。如果到了…

Maven項目下詳細的SSM整合流程

文章目錄 &#x1f389;SSM整合流程一、兩個容器整合? 1、先準備好數據庫config.properties連接、mybatis-config.xml&#x1f38a; 2、容器一&#xff1a;優先配置spring.xml文件&#x1f38a; 3、容器二&#xff1a;配置springMVC.xml文件&#x1f38a; 4、Tomcat整合spring…

解釋PCIe MSI 中斷要求中斷向量連續?PCIe 規范里并沒有明確指出

MSI 向量必須連續&#xff1f; 前言 MSI 物理條件&#xff0c;MSI 中斷產生的邏輯是RC初始化的時候&#xff0c;由軟件將配置寫入到 EP 的 2 個寄存器中&#xff0c;這兩個寄存器一個指示的是地址 Message Address&#xff0c;一個指示的是數據 Message Data。當 EP 試圖觸發…

你再不學Git就來不及了!!!

其他系列文章導航 設計模式合集 多線程合集 分布式合集 ES合集 文章目錄 其他系列文章導航 文章目錄 前言 版本控制 什么是版本控制 為什么要版本控制 一、認識 Git 1.1Git 簡史 1.2Git 與其他版本管理系統的主要區別 1.3Git 的三種狀態 二、Git 使用快速入門 2.1獲…

springboot使用redis緩存亂碼(key或者 value 亂碼)一招解決

如果查看redis中的值是這樣 創建一個配置類就可以解決 package com.deka.config;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; i…

CPU+GPU多樣化算力,ZStack Cloud助力游戲精釀核心業務上云

游戲精釀通過ZStack Cloud云平臺提供高性能、高可用的云主機、云存儲和云網絡&#xff1b;前期通過超融合架構快速構建云基礎設施&#xff0c;來支持Jira、Redis等關鍵業務&#xff1b;并實現對原有私有云平臺業務的替代&#xff0c;按需將原有私有云業務滾動遷移到ZStack Clou…

移動端瀏覽器 jquery 獲取 pdf blob文件流 預覽pdf

最近遇到一個需求&#xff0c;一個古早的移動端 juery 項目要求做一個頁面&#xff0c;從接口獲取 pdf 文件流&#xff0c;然后預覽出來 這里使用第三方工具&#xff1a;pdf.js 代碼如下&#xff1a; // 引入相關文件<script src"../js/pdf.js" type"text…

N_1 驗證密碼

N_1 驗證密碼 題目 設計一個用戶密碼驗證程序&#xff0c;要求密碼輸入只有3次機會&#xff0c;且密碼中不能包含”*”字符。 分析 需要考慮3個問題&#xff1a;驗證次數、特殊字符和正誤密碼判斷&#xff1b;驗證次數需要使用循環&#xff0c;3個問題需要用到分支結構&…

java 系統屬性和環境屬性

Java系統屬性和環境屬性都是與Java應用程序相關的參數&#xff0c;但它們有以下區別&#xff1a; 系統屬性是由Java虛擬機&#xff08;JVM&#xff09;設置的&#xff0c;而環境屬性是由操作系統設置的。 系統屬性是以“-D”開頭的命令行參數傳遞給JVM的&#xff0c;而環境屬性…

深入理解Spring AOP的工作流程

文章目錄 引言什么是AOP&#xff1f;Spring AOP的工作原理1. JDK動態代理2. CGLIB代理 Spring AOP的注解方式Aspect注解EnableAspectJAutoProxy注解 Spring AOP的工作流程拓展應用1. 自定義注解2. 異常處理3. 切面優先級 結論 &#x1f389;深入理解Spring AOP的工作流程 ☆* o…

關于運行軟件程序出現vcruntime140.dll丟失的修復教程-解決方案

vcruntime140.dll是Microsoft Visual C庫文件的一部分&#xff0c;用于支持Windows操作系統上的應用程序。如果找不到或丟失了這個文件&#xff0c;可能會導致某些應用程序無法正常運行。下面是關于vcruntime140.dll丟失的5個修復方法&#xff0c;以及vcruntime140.dll文件屬性…

Python基礎教程之分支結構詳解

文章目錄 一、分支結構二、單分支結構三、雙分支結構四、多分支結構五、嵌套分支結構六、三元表達式七、條件測試關于Python技術儲備一、Python所有方向的學習路線二、Python基礎學習視頻三、精品Python學習書籍四、Python工具包項目源碼合集①Python工具包②Python實戰案例③P…

Elasticsearch基礎優化

分片策略 分片和副本得設計為ES提供支付分布式和故障轉移得特性&#xff0c;但不意味著分片和副本是可以無限分配&#xff0c; 而且索引得分片完成分配后由于索引得路由機制&#xff0c;不能重新修改分片數&#xff08;副本數可以動態修改&#xff09; 一個分片得底層為一個l…

python之pyqt專欄2-項目文件解析

項目結構 在上一篇文章python之pyqt專欄1-環境搭建&#xff0c;創建新的pyqt項目&#xff0c;下面我們來看一下這個項目下的文件。 從下面的文件結構圖可以看到&#xff0c;該項目下有3個文件&#xff0c;untitled.ui,untitled.py 以及main.py。 QtDesigner可以UI界面的方式&am…

Feign接口請求返回異常 no suitable HttpMessageConvert found for response type

問題場景&#xff1a; 后端調用feign接口請求, 接口返回異常, no suitable HttpMessageConvert found for response type 問題描述 報錯異常如下&#xff1a; //根據圖片特征 去查詢人員信息ResultVo<List> personVos ipbdFaceLibPersonApi.queryFacePersonByFeatur…

華為云之SFS彈性文件服務使用體驗

華為云之SFS彈性文件服務使用體驗 一、本次實踐介紹1.1 實踐環境簡介1.2 本次實踐目的 二、SFS彈性文件服務介紹2.1 SFS彈性文件服務簡介2.2 SFS彈性文件服務特點 三、購買ECS彈性云服務器3.1 購買ECS彈性云服務器3.2 查看ECS彈性云服務器狀態3.3 遠程連接ECS3.4 檢查操作系統版…