打造的Socks5代理IP,令您抢购不在烦恼,无论是抢鞋还是抢手机
都无需担忧;令您挂视频不再担心速度,我们的Socks5代理IP为您
提供稳定的速度和体验;令您直播人气涨起来,您还在为直播人气
少而担心么,快来试用我们的Socks5代理IP为您的直播间增长人气
吧!另外我们的国内多Ip服务器 8核16G内存 带宽百兆独享一个C
段253个可用IP机房支持免费搭建S5代理IP, HTTP代理IP,需要
Socks5 刷人气,刷粉丝的赶紧联系了 。
┏━━━━━━━━━━━━━━━━━━━━┓
联系人:郑州泓之信科技有限公司销售部经理王蒲
QQ:177679880
电话:18567558664 0371-69103657
地址:河南省郑州市花园路居易摩根中心2506
┗━━━━━━━━━━━━━━━━━━━━┛
Socks5代理IP因為配寘簡單而且廉價,經常用來作為反反爬蟲的手段,但是穩定性一直是其詬病。篩選出優質的Socks5代理IP並不簡單,即使付費購買的Socks5代理IP源,賣家也不敢保證100%可用;另外Socks5代理IP的生命週期也無法預知,可能上一秒能用,下一秒就撲街了。基於這些原因,會給使用Socks5代理IP的爬蟲程式帶來很多不穩定的因素。要排除Socks5代理IP的影響,通常的做法是建一個Socks5代理IP池,每次請求前來池子取一個ip,用完之後歸還,保證池子裏的ip都是可用的。本文接下來就探討一下,如何使用Redis構建Socks5代理IP池,實現自動更新,自動擇優。
整體流程
由上圖所示,左側是形成了整個流程的閉環,從爬蟲程式以獨佔的管道拿到一個Socks5代理IP到爬取完成歸還ip。這個流程其實是不太嚴謹的,如果爬蟲程式异常中斷,就會導致ip無法歸還,就會導致這個ip無法迴圈利用。但是由於Socks5代理IP本身的特點,量多而且迴圈利用的價值並不大,所以這種情況就。
總Socks5代理IP池
總池子的作用就是共亯所有可用的ip,但是僅作為存儲ip的池子並不能實現自動擇優啊,這裡的擇優通常是希望延遲低速度快的ip更容易被篩選出,所以我們希望池子中的ip是根據它們的延時昇冪排列,借助Redis的Sorted Sets資料結構即可實現,用延時表示score,ip表示member。
頻道ip池
頻道ip池的作用是為了最大化使用總池子中的ip,並且隔離其他頻道的ip池。由於一個ip使用次數過多是有很大的概率被目標網站遮罩掉,所以這裡也需要進行擇優,應該優先篩選出使用次數少的ip,同理也是使用Sorted Sets,使用次數表示score,ip表示member,這裡與總池子明顯的不同之處是key不是固定的,需要把頻道名稱組合進去,這樣保證頻道之間的隔離,如頻道abc的key:proxy_channel_abc_ips。
由於頻道池子中的ip是要以獨佔的管道取出,我們需要一個ZPOP的方法,奈何Redis本身沒有,還好可以通過Lua類比,在一個原子操作下取出ip,然後删除:
這裡與總池子不同的是多了一個INCR選項,這是Redis 3.0.2版本後才支持的新特性,即指定在ZADD時發生member衝突採取的處理管道,INCR顧名思義是衝突後累加score的管道,為什麼要用這個選項,看看下麵這個流程:
在頻道池子中只有1.1.1.1,使用次數為10;總池子也有1.1.1.1,而且排在第一個
更新
與ip有關的兩個内容:延時(爬取頁面所花的時間)和使用次數。上面只講到了根據它們自動擇優,這裡的就來說下它們是如何更新的。延時和使用次數的更新需要爬蟲程式的配合,程式中要記錄時間和遞增使用次數,在歸還ip時要將最新值帶回給總池子和頻道池子。上面頻道ip池的例子也有提及,每次歸還ip都要將最新的使用次數帶上,其次還要將ip的延時更新到總池子裡面。如果歸還ip時出現使用失敗的情况,就要將該ip從總池子裏删除掉,保證該ip不會再被使用,至於當前的頻道池不用歸還就行了。其他頻道池不作任何處理,因為ip在當前頻道不可用,一般都是因為被遮罩,其他頻道依然可以使用,即使確實都不能使用,也會在其他頻道歸還ip時被删除。
這兩個内容其實也可以都在Redis中更新,在獲取ip時,使用Hashs保存ip對應的獲取時間和使用次數;在歸還時從Hashs中取出時間計算出延時,取出使用次數並加1,再分別更新到總池子和頻道池子中。而且這還能避免上面提到的獲取ip不符合預期的問題。
總結
放在Redis中更新的方法也有弊端,延時會包含獲取和歸還的傳輸時間,如果爬蟲程式獲取一個ip多次使用,會造成使用次數統計偏少。當然也可以通過在程式中多次調用Redis更新ip的内容來解决,這樣新增了整個流程的複雜性,需要自己權衡。
個人還是傾向在程式中記錄,最後更新到中。這個方案邏輯確實不够嚴謹,但是出現問題也不會導致嚴重後果。程式的健壯性也不是不允許出現bug,而是出現bug有很好的容錯性。
只有我们更专业,才能令您更满意!