爬取網站總是被封?大神教你搭建Cookies池,以後遠離IP被封
摘要
本文作者:崔慶才
GitHub地址:https://github.com/Python3WebSpider/CookiesPool
小編推薦一本崔大大寫的網路爬蟲的書籍《Python3網路爬蟲開發實戰》
Python學習資料或者需要程式碼、視訊加Python學習群:960410445
很多時候,在爬取沒有登入的情況下,我們也可以訪問一部分頁面或請求一些介面,因為畢竟網站本身需要做SEO,不會對所有頁面都設定登入限制。
但是,不登入直接爬取會有一些弊端,弊端主要有以下兩點。
- 設定了登入限制的頁面無法爬取。比如論壇,部落格等等
- 如果沒有登入請求頻繁就很容易被限制或者IP直接被封
下面我們就第二種情況做一個簡單的實驗。以微博為例,我們先找到一個Ajax介面,例如新浪財經官方微博的資訊介面
如果用瀏覽器直接訪問,返回的資料是JSON格式,如下圖所示:
但是如果頻繁訪問的話:
登入微博賬號之後重新開啟此連結,則頁面正常顯示介面的結果,而未登入的頁面仍然顯示請求過於頻繁,如下圖所示:
我們以新浪微博為例來實現一個Cookies池的搭建過程。
準備工作
搭建之前肯定需要一些微博的賬號。需要安裝好Redis資料庫並使其正常執行。需要安裝Python的RedisPy、requests、Selelnium、Flask庫。另外,還需要安裝Chrome瀏覽器並配置好ChromeDriver。
Cookies池架構
Cookies的架構和代理池類似,同樣是4個核心模組,如下圖所示。
Cookies池架構的基本模組分為4塊:儲存模組、生成模組、檢測模組、介面模組。
Cookies池的實現
儲存模組
需要儲存的內容無非就是賬號資訊和Cookies資訊。
建立兩個Hash,結構分別如下圖所示。
Hash的Key就是賬號,Value對應著密碼或者Cookies。
接下來我們建立一個儲存模組類,用以提供一些Hash的基本操作,程式碼如下:
生成模組
生成模組負責獲取各個賬號資訊並模擬登入,隨後生成Cookies並儲存。
這裡主要邏輯就是找出那些還沒有對應Cookies的賬號,然後再逐個獲取Cookies,程式碼如下:
因為我們對接的是新浪微博,前面我們已經破解了新浪微博的四宮格驗證碼,在這裡我們直接對接過來即可,不過現在需要加一個獲取Cookies的方法,並針對不同的情況返回不同的結果,邏輯如下所示:
這裡返回結果的型別是字典,並且附有狀態碼status,在生成模組裡我們可以根據不同的狀態碼做不同的處理。例如
狀態碼為1的情況:表示成功獲取Cookies,我們只需要將Cookies儲存到資料庫即可。
狀態碼為2的情況:代表使用者名稱或密碼錯誤,那麼我們就應該把當前資料庫中儲存的賬號資訊刪除。
狀態碼為3的情況:代表登入失敗的一些錯誤,此時不能判斷是否使用者名稱或密碼錯誤,也不能成功獲取Cookies,那麼簡單提示再進行下一個處理即可。
程式碼實現如下所示:
檢測模組
檢測模組需要做的就是檢測Cookies失效,然後將其從資料中移除。
我們還需要增加一個定時檢測模組,它負責遍歷池中的所有Cookies,同時設定好對應的檢測連結,我們用一個個Cookies去請求這個連結。
為了實現通用可擴充套件性,我們首先定義一個檢測器的父類,宣告一些通用元件,實現如下所示:
如檢測微博的就可以定義為WeiboValidTester,實現其獨有的test()方法來檢測微博的Cookies是否合法,然後做相應的處理,所以在這裡我們還需要再加一個子類來繼承這個ValidTester,重寫其test()方法,實現如下:
介面模組
排程模組
執行效果
三個程式全部開啟:
相關文章
- 媽媽再也不用擔心爬蟲被封號了!手把手教你搭建Cookies池爬蟲Cookie
- python爬蟲時ip被封如何解決Python爬蟲
- 爬蟲被封怎麼辦?用Node構建一個私人IP代理池爬蟲
- 動態換ip軟體:手把手教你搭建Cookies池Cookie
- 導致IP被封的原因
- Python爬蟲動態ip代理防止被封的方法Python爬蟲
- 爬蟲之遇到403 Forbidden,IP被封,怎麼辦?爬蟲ORB
- HTTP爬蟲被封如何處理?HTTP爬蟲
- 使用芝麻代理,爬蟲ip經常被封,該如何解決?爬蟲
- 爬蟲搭建代理池、爬取某網站影片案例、爬取新聞案例爬蟲網站
- 為什麼我的 WordPress 網站被封了?網站
- 聽說你的爬蟲被封了?爬蟲
- 014-活該你爬蟲被封之Scrapy Ip代理中介軟體爬蟲
- 訪問被封網站的十個方法(作者: 木藝兒)網站
- 微信域名防封技術,微信域名總是被封如何解決
- 在配置DDOS高防服務後為什麼會出現有些源站IP被封的情況?
- 4800餘網站涉“黃”被封 新浪搜狐騰訊關欄目網站
- 445埠被封之後,如何使用smb協議協議
- 【使用場景】巧用ip代理解決爬蟲執行被封鎖被限制的難題爬蟲
- 搬瓦工VPS主機IP被封了怎麼辦?
- Python進行資料採集時,如何避免IP被封?Python
- 手把手教你爬蟲代理ip池的建立爬蟲
- Google Play 開發者賬戶被封Go
- python爬蟲從ip池獲取隨機IPPython爬蟲隨機
- 租了一臺華為雲耀雲伺服器,卻直接被封公網ip,而且是官方的bug導致!伺服器
- 使用海外伺服器,怎樣避免海外伺服器IP被封伺服器
- 維基解密網店被封,呼籲全球抵制Coinbase解密
- 駭客教你如何在微信強制誘導分享營銷廣告還不被封!
- 如何用http代理的ip池繞過網站反爬蟲機制?HTTP網站爬蟲
- 爬取網站新聞網站
- 賬號被封鎖了怎麼辦?使用IP代理軟體防封鎖
- 為爬蟲獲取登入cookies: 使用browsercookie從瀏覽器獲取cookies爬蟲Cookie瀏覽器
- 教你使用GitHub搭建個人網站Github網站
- 為什麼又被反扒了?盤點爬蟲選擇ip代理要注意的三件事爬蟲被封禁常見原因爬蟲
- 網路虛假廣告將被封殺:微商仍是重災區
- 使用python爬蟲時如何防止被封?海外HTTP代理如何挑選購買?Python爬蟲HTTP
- 如何建立爬蟲IP池?爬蟲
- google被封殺,百度受指責Go