天天看點

手把手教你用Python搭建IP代理池,輕松破解請求頻率限制反爬蟲~一、原理二、破解三、搭建IP代理池四、小結

大家好,我是志斌~

我們所寫的爬蟲,它對伺服器發出的網絡請求頻率要比正常使用者的高的多,進而開發者可以将請求頻率過高的使用者視為爬蟲程式,進而來限制爬蟲程式。

今天志斌就來給大家分享一下,如何用Python搭建一個IP代理池,來破解伺服器通過對使用者請求頻率進行限制的反爬蟲。

一、原理

因為用戶端的IP位址是唯一的,是以開發者便将IP位址作為用戶端的身份辨別。

伺服器可以根據用戶端的IP的通路次數來辨別記錄,進而計算出它的請求頻率。然後,對于請求頻率過高的用戶端進行反爬蟲限制。

二、破解

其實破解請求頻率限制反爬蟲是十分簡單的,因為Requests庫中就有一個proxies參數,就是專門為使用IP來準備的,具體使用方法如下:

import requests
proxies = {
 "http": "http://10.10.1.10:3128",
 "https": "https://10.10.1.10:1080",
}
requests.get("http://example.org", proxies=proxies)
           

三、搭建IP代理池

搭建一個IP代理池分為三個子產品,分别是爬取子產品、檢測子產品、存儲子產品。下面讓我們來看看這三個子產品要怎麼寫吧。

  • 爬取子產品

我們此次是在百度上搜尋的一個免費的IP代理網站對其代理IP進行爬取。

我們打開開發者模式,然後輸入對網頁進行觀察,我們發現資料存儲在源網頁中。

圖檔

既然我們已經發現資料的存儲位置和存儲形式了,那麼就可以發起請求,提取資料了,代碼如下:

import requests
import re
headers = {
   'Connection': 'keep-alive',
   'sec-ch-ua': '"Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"',
   'sec-ch-ua-mobile': '?0',
   'Upgrade-Insecure-Requests': '1',
   'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36',
   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
   'Sec-Fetch-Site': 'same-origin',
   'Sec-Fetch-Mode': 'navigate',
   'Sec-Fetch-User': '?1',
   'Sec-Fetch-Dest': 'document',
   'Referer': 'https://www.kuaidaili.com/free/inha/1/',
   'Accept-Language': 'zh-CN,zh;q=0.9',
}
for page in range(1,50):
   response = requests.get(f'https://www.kuaidaili.com/free/inha/{page}/', headers=headers, cookies=cookies)
   ip_list = re.findall('data-title="IP">(.*?)</td>',response.text)
           
  • 檢測子產品

因為我們是爬取的免費的IP,是以我們要對其進行檢測,看看是否失效了,畢竟便宜沒好貨,好貨不便宜麼~ 檢測代碼如下:

list = []
for ip in ip_list:
   try:
       response = requests.get('https://www.baidu.com', proxies=ip, timeout=2)
       if response.status_code == 200:
           list.append(ip)
   except:
       pass
   else:
       print(ip, '檢測通過')
           
  • 存儲子產品

我這裡是将檢測出來可以使用的IP代理存到了csv檔案中去,大家也可以嘗試使用其他類型的存儲,代碼如下:

import csv
with open('ip.csv','a',newline='') as f:
   writer = csv.writer(f)
   writer.writerow(list)
           

四、小結

  1. 本文詳細介紹了如何破解請求頻率限制的反爬蟲,并教大家搭建一個自己的IP代理池。
  2. 使用代理IP來進行爬蟲是目前一種非常流行的方式,因為每個使用者端的IP是唯一的,一旦被認為是爬蟲給限制或者是封禁了,那麼對于使用者來說會造成很大的損失。
  3. 免費的IP代理品質不如付費的,如果有大量的需求還是需要購買一下專業的。
  4. 本文僅供學習參考,不做它用。
手把手教你用Python搭建IP代理池,輕松破解請求頻率限制反爬蟲~一、原理二、破解三、搭建IP代理池四、小結
上一篇: 0919rhce作業