在做爬蟲的過程中,如果你爬取的頻率過快,不符合人的操作模式。有些網站的反爬蟲機制通過監測到你的IP異常,訪問頻率過高。就會對你進行封IP處理。目前已有比較多的第三方平臺專門進行代理IP的服務,那如何使用平臺提供的http代理呢,一般好的平臺都會提供兩種使用方式:
1傳統的API提取模式: API連結提取格式如下
API就是url連結,例如:ip.16yun.cn:817/**** 使用者的爬蟲程式需要支援API的自動提取代理IP,定期從url中獲取代理IP的相關資訊,格式如下:
(1)預設支援文字
(2)json格式(在API連結後面加上&format=json,返回JSON格式)
(3)在連結後面加上 &part=分隔符 ,分隔符需要使用url轉義
而爬蟲程式通過獲取出來的IP向網站發出請求獲取資料。
2 自動轉發的爬蟲代理:通過固定雲代理服務地址,建立專線網路連結,代理平臺自動實現毫秒級代理IP切換,保證了網路穩定性和速度,避免爬蟲客戶在代理IP策略優化上投入精力。這種方式適用於專做爬蟲的使用者或者第一次使用http代理的使用者,使用方便更加簡單。市面上目前也只有幾家代理平臺有這種使用方式,這種使用方式比較嚴格,使用者必須是研發,嚴格按照自己的爬蟲語言參考平臺呼叫代理資訊的demo修改介面,配置代理資訊使用。每個平臺配置爬蟲代理的代理資訊demo都不一樣,其含義都差不多。
例如python網路爬蟲設定自動轉發代理介面的demo
如下:
#! -- encoding:utf-8 --
import requests
import random
targetUrl = “www.baidu.com"
proxyHost = “t.16yun.cn”
proxyPort = “31111”
proxyUser = “username”
proxyPass = “password”
proxyMeta = “http://%(user)s:%(pass)s@%(host)s:%(port)s” % {
“host” : proxyHost,
“port” : proxyPort,
“user” : proxyUser,
“pass” : proxyPass,
}
proxies = {
“http” : proxyMeta,
“https” : proxyMeta,
}
tunnel = random.randint(1,10000)
headers = {“Proxy-Tunnel”: str(tunnel)}
resp = requests.get(targetUrl, proxies=proxies, headers=headers)
print resp.status_code
print resp.text
這種是比較常見使用自動轉發代理的demo,其他爬蟲語言使用方式也大同小異。
以上是使用http代理的常見的兩種方式,我也是經常使用代理,覺得自動轉發的代理更加好用,方便,簡單,速度快。避免了我在爬蟲使用代理中的很多麻煩。
本作品採用《CC 協議》,轉載必須註明作者和本文連結