Centos作為代理服務(wù)器為Scrapy爬蟲提供代理服務(wù)
在我之前的文章Scrapy-redis分布式爬蟲+Docker快速部署中,主要是介紹了分布式和Docker
的使用,但爬蟲在正常爬取中還是遭遇了ban IP......所以就得搞代理了.
由于2億的數(shù)據(jù)已經(jīng)跑了7000w了才被ban的IP,所以我覺得是因為對方發(fā)現(xiàn)了這不正常的請求(每秒400次左右,而且是同一個IP發(fā)出),再怎么也會覺得不正常,果然還是沒逃過被ban的命運,當(dāng)時想了以下幾個方案.由于要爬的網(wǎng)站是國外的,是被墻的,所以國內(nèi)那些免費的IP池都沒法用,只能找國外的,但是找了一圈沒找到合適的,所以有以下幾個方案
- 在
vultr
開5刀的機器,用來做代理服務(wù)器 - 用信用卡去擼
aws
- 用
crawlera
第1、2的方案其實都差不多,畢竟vultr
和aws
都是可以刪機器換IP的,但是vultr
要花錢,但按使用時間算,其實也用不了多少錢,aws
呢可以擼個免費的.
第3種crawlera
倒是最省事的,但是價格實在太貴
按這個價格,我再爬一億數(shù)據(jù)5000$都搞不下來
由于用信用卡去擼 aws
過程也煩,所以直接在vultr
上開了臺5$機器用來做代理了.
代理需要使用的工具
1珍逸、Centos
服務(wù)器一臺(Ubuntu
也可)
2渔彰、TinyProxy
步驟
用ssh鏈接上服務(wù)器安裝TinyProxy
命令:yum install tinyproxy
Ubuntu
用apt
即可
安裝好后修改conf
文件
路徑在/etc/tinyproxy.conf
Port 8888 #預(yù)設(shè)是8888 Port,你可以更改
Allow 127.0.0.1 #將127.0.0.1改成你自己的IP
#例如你的IP 是1.2.3.4,你改成Allow 1.2.3.4,那只有你才可以連上這個Proxy
#若你想任何IP都可以臉到Proxy在Allow前面打#注釋
打開端口
iptables -A INPUT -p tcp --dport 8888 -j ACCEPT
注意:這樣做了之后,你可能照樣連不上,因為防火墻沒關(guān),使用命令將防火墻關(guān)閉
systemctl stop firewalld.service
然后去你的服務(wù)器里使用curl命令試試能否連接
curl -x xxx.xxx.xxx.xxx:8888 www.baidu.com
看看能否請求成功,如果可以,代理則啟動成功.
然后就是給爬蟲加個middleware
的事了
class ProxyMiddleware(object):
def process_request(self, request,spider):
request.meta['proxy'] = 'http://149.28.xxx.xxx:8889'
然后在setting
中使用
DOWNLOADER_MIDDLEWARES = {
'vmoredis.middlewares.ProxyMiddleware':540,
}
重新開啟爬蟲,完事.等到被ban了匿值,在換個IP繼續(xù)爬.
如果哪位有免費的國外IP代理求推薦.想拿來做代理池.萬分感謝
文章中有錯誤希望大家指出,有問題歡迎私信