国产精品主播一区二区-国产一级不卡毛片-日本少妇中出-国产视频第二页-青草精品视频-亚洲熟妇丰满多毛xxxx-日韩福利在线-成年人免费观看在线视频-久久久www-91在线视频观看无毒不卡-999国产精品-91久久爽久久爽爽久久片-和搜子居同的日子2hd高清看-鬼眼 电影-中文在线精品-综合网久久-国产精品美女久久久久久

使用動(dòng)態(tài)ip防止被反爬

爬蟲(chóng)和反爬蟲(chóng)的對(duì)抗并不激烈。今天我們主要討論一個(gè)非常重要的對(duì)付反爬蟲(chóng)的手段,那就是IP代理。
 
通常,我們會(huì)訪(fǎng)問(wèn)如下網(wǎng)址:
 
動(dòng)態(tài)IP模擬器

當(dāng)客戶(hù)端向URL所在的服務(wù)器發(fā)起請(qǐng)求時(shí),會(huì)攜帶自己的IP地址,這樣服務(wù)器就可以獲得我們的IP地址。當(dāng)這個(gè)IP地址在某段時(shí)間內(nèi)過(guò)于頻繁地發(fā)起請(qǐng)求時(shí),它可能會(huì)在某段時(shí)間內(nèi)限制其訪(fǎng)問(wèn)。
 
在編寫(xiě)爬蟲(chóng)程序的過(guò)程中,為了防止這種情況發(fā)生,有必要使用IP代理。IP代理的原理如下:
 
 
第一步:我們將向代理服務(wù)器發(fā)送請(qǐng)求,并告訴代理服務(wù)器我們想要訪(fǎng)問(wèn)https://www.zhihu.com。
 
第二步:代理服務(wù)器將代替我們向https://www.zhihu.com發(fā)送請(qǐng)求。
 
第三步:服務(wù)器收到代理服務(wù)器的請(qǐng)求后,將數(shù)據(jù)返回給代理服務(wù)器。
 
第四步:代理服務(wù)器收到服務(wù)器返回的數(shù)據(jù)后,將數(shù)據(jù)發(fā)送給客戶(hù)端。
 
這樣,通過(guò)代理服務(wù)器向網(wǎng)址所在的服務(wù)器發(fā)送請(qǐng)求,我們就可以完美地隱藏自己的IP,這樣我們的IP就不會(huì)被限制訪(fǎng)問(wèn)。
 
不過(guò),肯定會(huì)有代價(jià)的。我們需要通過(guò)IP代理轉(zhuǎn)發(fā)我們想要的數(shù)據(jù),這自然會(huì)導(dǎo)致爬行速度變慢。只有使用原生IP發(fā)起請(qǐng)求是最快的。
 
接下來(lái),像往常一樣,我們使用代碼來(lái)演示如何通過(guò)IP代理發(fā)起請(qǐng)求:
 
導(dǎo)入請(qǐng)求
 
#自由代理可以從https://www.xicidaili.com/,獲得,但自由ip代理的存活率很低。
 
代理= { 0
 
http:“”183 . 148 . 158 . 64:9999
 
}
 
RES = requests . get(' https://www . Baidu . com ',proxies = proxy)
 
打印(參考文本)
 
#如果可以正確返回結(jié)果,那么當(dāng)前的ip代理是活動(dòng)的、可用的,否則當(dāng)前的ip代理無(wú)效。
 
僅有一個(gè)代理ip是不夠的。我們應(yīng)該維護(hù)自己的ip代理池。當(dāng)ip代理失敗時(shí),它將被消除。那么如何維護(hù)一個(gè)可用的ip代理池呢?
 
#第一步:通過(guò)https://www.xicidaili.com/wt/.獲取ip_list
 
導(dǎo)入請(qǐng)求
 
來(lái)自bs4導(dǎo)入美麗組
 
隨機(jī)導(dǎo)入
 
def get_ip_list(url):
 
標(biāo)題= { 0
 
用戶(hù)代理“:”Mozilla/5.0(Windows NT 10.0;WOW64)applebwebkit/537.36(KHTML,像Gecko)Chrome/66 . 0 . 3359 . 139 Safari/537.36’
 
}
 
res = requests.get(url,headers = headers)
 
res =美化組(res.text,' html.parser ')
 
結(jié)果= RES . select(# IP _ list tr)
 
對(duì)于結(jié)果[1:]中的結(jié)果:
 
ip = result.select('td')[1]。文本
 
port = result.select('td')[2]。文本
 
法官(ip,端口)
 
#獲取ip后,無(wú)法直接保存。首先,你應(yīng)該判斷它是否可用。
 
#第二步:確定獲取的ip是否有效。
 
ip_list = []
 
def判斷(ip、端口):
 
代理= { ' http ':IP+':'+端口}
 
嘗試:
 
RES = requests . get(' https://www . Baidu . com ',proxies = proxy)
 
例外:
 
打印(此IP:“+IP+”無(wú)效)
 
返回False
 
否則:
 
if 200
达尔| 呼和浩特市| 鄂伦春自治旗| 山西省| 和政县| 永顺县| 锡林浩特市| 潮安县| 阿鲁科尔沁旗| 新密市| 湟源县| 双柏县| 蒙山县| 文成县| 太原市| 怀化市| 故城县| 华安县| 鄄城县| 寻乌县| 合作市| 万载县| 恩平市| 五莲县| 治多县| 和龙市| 孟村| 石泉县| 酉阳| 鄂托克旗| 普兰县| 德州市| 裕民县| 罗江县| 嵊州市| 虎林市| 台前县| 武宁县| 渭南市| 南充市| 库尔勒市|