上一篇文章中写了如何让scrapy支持HTTP代理
不过scrapy默认是不支持socks代理的,有时候纯HTTP代理又容易被G F W拦截,采集国外被屏蔽的网站又需要用到代理,好吧,能力是被需求逼出来的。
下面说一个解决方案
在美国或香港部署一台linux vps
以debian为例
安装必要组件
apt-get install build-essential autoconf libtool libssl-dev gcc -y
安装git
apt-get install git -y
下载shadowsocks-libev源码包并编译
git clone https://github.com/madeye/shadowsocks-libev.git
cd shadowsocks-libev
./configure
make && make install
运行shadowsocks
/usr/local/bin/ss-server -s 0.0.0.0 -p 端口 -k 密码 -m 加密方式 &
本地服务器(可以是windows或linux)
去http://dl.chenyufei.info/shadowsocks/
下载对应系统的shadowsocks客户端
另外shadowsocks客户端可以指定多个服务器,相当于做了一个代理池
最关键的步骤来了,就是将socks代理转换成http代理
这里推荐用3Proxy,主页在www.3proxy.ru。
3Proxy支持windows和linux等各种平台。windows下直接下载安装即可,Linux下面需要自己编译
3Proxy的典型配置文件
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
daemon
#service
#external ip
internal 127.0.0.1
auth iponly
allow 127.0.0.1
parent 1000 socks5+ 127.0.0.1 9999
proxy -n -a -p1984
127.0.0.1即上一级socks5代理服务器,9999为代理服务器端口
1984为监听端口
更详细的设置可参考这篇文章
http://blog.sunshine-wang.info/?p=20
或阅读官方文档
最后将scrapy的HTTP代理设置为http://127.0.0.1:1984
就可以了
参考文档