上一篇文章中写了如何让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

就可以了


参考文档

http://igfw.net/archives/947

http://www.ouvps.com/?p=464