標籤:views and ice str res ref word 網路 csdn
使用爬蟲訪問網站,需要儘可能的隱藏自己的身份,以防被伺服器屏蔽,在工作工程中,我們有2種方式來實現這一目的,分別是延時訪問和動態代理,接下來我們會對這兩種方式進行講解
1、延時訪問
見名之意,延時訪問就是在訪問網站時設定一個訪問周期,每隔幾秒鐘訪問一次,這樣的方式更像是人為訪問網站
- import time
- import urllib.request
-
- cnt = 0
- #隱藏自己爬蟲的身份的第一種策略是設定訪問周期,使得程式更像是人為訪問的
- while True: #每隔5秒鐘訪問一次百度網
- url = "https://www.baidu.com" #設定url地址
- param = {} #設定參數,參數是字典
- param = urllib.parse.urlencode(param).encode(‘utf_8‘) #將參數以utf-8編碼方式來編碼
-
- req = urllib.request.Request(url, param)
- #設定header的User-Agent屬性,類比該請求是由狐火瀏覽器發送的,也就是說欺騙伺服器是人為發送的並未程式發送的
- req.add_header("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0) Gecko/20100101 Firefox/53.0")
- response = urllib.request.urlopen(req) #訪問網路
-
- html = response.read() #讀取響應的結果
- result = html.decode("utf-8") #按照utf-8編碼來進行解碼
- if result != "":
- cnt += 1
- print("第%s次攻擊百度網" %cnt)
- time.sleep(5) #程式睡眠5秒鐘
運行結果:
每隔5秒鐘訪問一次百度網
2、動態代理
使用Proxy 伺服器來訪問網站,這種方法非常霸道,可以類比出不同的伺服器訪問網站,也是最為推薦的一種方式,我們可以在百度網上尋找免費的Proxy 伺服器IP
- import urllib.request
- import random
-
- ipList = [‘119.6.144.73:81‘, ‘183.203.208.166:8118‘, ‘111.1.32.28:81‘] #定義多個代理IP,代理IP可以在網上搜免費的
- cnt = 0
- #隱藏自己爬蟲的身份的第二種策略是使用代理,意思是類比多個伺服器訪問
- while True: #使用Proxy 伺服器不停的訪問百度網
- proxy_support = urllib.request.ProxyHandler({‘http‘:random.choice(ipList)}) #定義一個代理對象,使用隨機的ip
-
- opener = urllib.request.build_opener(proxy_support)
- opener.add_handlers = [("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:53.0) Gecko/20100101 Firefox/53.0")]
- urllib.request.install_opener(opener)
-
- response = urllib.request.urlopen("https://www.baidu.com") #訪問網路
-
- html = response.read() #讀取響應的結果
- result = html.decode("utf-8") #按照utf-8編碼來進行解碼
- if result != "":
- cnt += 1
- print("第%s次攻擊百度網" %cnt)
運行結果:
不停的攻擊百度網
Python實戰:如何隱藏自己的爬蟲身份