Centos作为代理服务器为Scrapy爬虫提供代理服务

Centos作为代理服务器为Scrapy爬虫提供代理服务

在我之前的文章Scrapy-redis分布式爬虫+Docker快速部署中,主要是介绍了分布式和Docker的使用,但爬虫在正常爬取中还是遭遇了ban IP......所以就得搞代理了.


由于2亿的数据已经跑了7000w了才被ban的IP,所以我觉得是因为对方发现了这不正常的请求(每秒400次左右,而且是同一个IP发出),再怎么也会觉得不正常,果然还是没逃过被ban的命运,当时想了以下几个方案.由于要爬的网站是国外的,是被墙的,所以国内那些免费的IP池都没法用,只能找国外的,但是找了一圈没找到合适的,所以有以下几个方案

  1. vultr开5刀的机器,用来做代理服务器
  2. 用信用卡去撸aws
  3. crawlera

第1、2的方案其实都差不多,毕竟vultraws都是可以删机器换IP的,但是vultr要花钱,但按使用时间算,其实也用不了多少钱,aws呢可以撸个免费的.

第3种crawlera倒是最省事的,但是价格实在太贵

image

按这个价格,我再爬一亿数据5000$都搞不下来

由于用信用卡去撸 aws过程也烦,所以直接在vultr上开了台5$机器用来做代理了.


代理需要使用的工具
1、Centos服务器一台(Ubuntu也可)
2、TinyProxy

步骤

用ssh链接上服务器安装TinyProxy
命令:yum install tinyproxy
Ubuntuapt即可
安装好后修改conf文件
路径在/etc/tinyproxy.conf

Port 8888 #预设是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
注意:这样做了之后,你可能照样连不上,因为防火墙没关,使用命令将防火墙关闭
systemctl stop firewalld.service


然后去你的服务器里使用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继续爬.
如果哪位有免费的国外IP代理求推荐.想拿来做代理池.万分感谢
文章中有错误希望大家指出,有问题欢迎私信

你可能感兴趣的:(Centos作为代理服务器为Scrapy爬虫提供代理服务)