<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          手把手教你用Python搭建IP代理池,輕松破解請(qǐng)求頻率限制反爬蟲~

          共 2742字,需瀏覽 6分鐘

           ·

          2021-09-10 13:37


          點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          郎騎竹馬來(lái),繞床弄青梅。 

          大家好,我是志斌~


          我們所寫的爬蟲,它對(duì)服務(wù)器發(fā)出的網(wǎng)絡(luò)請(qǐng)求頻率要比正常用戶的高的多,從而開發(fā)者可以將請(qǐng)求頻率過(guò)高的用戶視為爬蟲程序,從而來(lái)限制爬蟲程序。


          今天志斌就來(lái)給大家分享一下,如何用Python搭建一個(gè)IP代理池,來(lái)破解服務(wù)器通過(guò)對(duì)用戶請(qǐng)求頻率進(jìn)行限制的反爬蟲。


          01

          原理


          因?yàn)榭蛻舳说腎P地址是唯一的,所以開發(fā)者便將IP地址作為客戶端的身份標(biāo)識(shí)。


          服務(wù)器可以根據(jù)客戶端的IP的訪問(wèn)次數(shù)來(lái)標(biāo)識(shí)記錄,從而計(jì)算出它的請(qǐng)求頻率。然后,對(duì)于請(qǐng)求頻率過(guò)高的客戶端進(jìn)行反爬蟲限制。


          02

          破解


          其實(shí)破解請(qǐng)求頻率限制反爬蟲是十分簡(jiǎn)單的,因?yàn)镽equests庫(kù)中就有一個(gè)proxies參數(shù),就是專門為使用IP來(lái)準(zhǔn)備的,具體使用方法如下:

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


          03

          搭建IP代理池


          搭建一個(gè)IP代理池分為三個(gè)模塊,分別是爬取模塊、檢測(cè)模塊、存儲(chǔ)模塊。下面讓我們來(lái)看看這三個(gè)模塊要怎么寫吧。


          01

           爬取模塊


          我們此次是在百度上搜索的一個(gè)免費(fèi)的IP代理網(wǎng)站對(duì)其代理IP進(jìn)行爬取。


          我們打開開發(fā)者模式,然后輸入對(duì)網(wǎng)頁(yè)進(jìn)行觀察,我們發(fā)現(xiàn)數(shù)據(jù)存儲(chǔ)在源網(wǎng)頁(yè)中。

          既然我們已經(jīng)發(fā)現(xiàn)數(shù)據(jù)的存儲(chǔ)位置和存儲(chǔ)形式了,那么就可以發(fā)起請(qǐng)求,提取數(shù)據(jù)了,代碼如下:

          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)


          02

           檢測(cè)模塊


          因?yàn)槲覀兪桥廊〉拿赓M(fèi)的IP,所以我們要對(duì)其進(jìn)行檢測(cè),看看是否失效了,畢竟便宜沒好貨,好貨不便宜么~ 檢測(cè)代碼如下:

          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, '檢測(cè)通過(guò)')


          03

           存儲(chǔ)模塊


          我這里是將檢測(cè)出來(lái)可以使用的IP代理存到了csv文件中去,大家也可以嘗試使用其他類型的存儲(chǔ),代碼如下:

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


          03

          小結(jié)


          1. 本文詳細(xì)介紹了如何破解請(qǐng)求頻率限制的反爬蟲,并教大家搭建一個(gè)自己的IP代理池。

          2. 使用代理IP來(lái)進(jìn)行爬蟲是當(dāng)前一種非常流行的方式,因?yàn)槊總€(gè)用戶端的IP是唯一的,一旦被認(rèn)為是爬蟲給限制或者是封禁了,那么對(duì)于用戶來(lái)說(shuō)會(huì)造成很大的損失。

          3. 免費(fèi)的IP代理質(zhì)量不如付費(fèi)的,如果有大量的需求還是需要購(gòu)買一下專業(yè)的。

          4. 本文僅供學(xué)習(xí)參考,不做它用。

              小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過(guò)程中,有遇到任何問(wèn)題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬(wàn)水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說(shuō)一兩句吧~~

          瀏覽 74
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区二区日韩 | av婷婷在线 | 精品视频一区视频二区视频三区视频四区 | 欧美一级A片免费看 | 亚洲最新免费视频 |